ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Spekulatiivinen dekoodaus: ehdota etukäteen, tarkista yhdessä

Spekulatiivinen dekoodaus (speculative decoding) nopeuttaa autoregressiivistä generointia erottamalla tokenien ehdottamisen niiden tarkistamisesta. Kevyt luonnostelumenetelmä ehdottaa useita tokeneita. Kohdemalli arvioi ehdotetun jatkon leveämmässä laskentavaiheessa, jolloin monta hyväksyttyä tokenia voi viedä vastausta eteenpäin kerralla.

Kohdemalli määrää silti hyväksyttävän jatkon. Ahneessa versiossa tokenit voidaan säilyttää niin pitkälle kuin ne vastaavat kohdemallin valintoja. Ensimmäisessä erossa otetaan kohdemallin korjaus ja hylätään ehdotuksen loppuosa. Otantaa käyttävät versiot säilyttävät kohdemallin jakauman hyväksymissäännön ja korjatun otantajakauman avulla.

Ahne luonnostelija ehdottaa A B C D. Kohdemalli hyväksyy A:n ja B:n, korvaa ensimmäisen eroavan valinnan X:llä ja hylkää ehdotuksen loppuosan.

Kokeile apumallia

Transformers tarjoaa tähän argumentin assistant_model. Tämä PyTorch-esimerkki käyttää pienempää GPT-2-perheen luonnostelijaa ja kohdemallin tokenisoijaa. Ensimmäinen ajo lataa molemmat mallit.

from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2").eval()
draft = AutoModelForCausalLM.from_pretrained("distilgpt2").eval()
inputs = tokenizer("Far far away", return_tensors="pt")

output = model.generate(
    **inputs, assistant_model=draft, max_new_tokens=40,
    do_sample=False, pad_token_id=tokenizer.eos_token_id)
continuation = tokenizer.decode(output[0], skip_special_tokens=True)

Kirjasto hoitaa luonnostelun, tarkistuksen ja välimuistin ylläpidon. Olennainen operaatio on monen ehdotetun sijainnin tarkistaminen yhdessä sen sijaan, että jokainen token vaatisi oman raskaan kohdemallikutsunsa.

Milloin ennakointi kannattaa

Nopeus riippuu ehdotusten hyväksymisasteesta sekä niiden tuottamisen ja tarkistamisen hinnasta. Huono luonnostelija laskee tokeneita, jotka heitetään pois. Kuormitetun palvelimen suuret erät voivat muuttaa tasapainoa verrattuna yhteen vuorovaikutteiseen pyyntöön.

Häviötön spekulatiivinen otanta säilyttää jakauman, ei välttämättä samaa satunnaista jonoa samalla siemenluvulla. Nopeutus syntyy ajoituksesta ja rinnakkaisesta tarkistamisesta. Se täydentää KV-välimuistia, joka käyttää aiempaa attention-tilaa uudelleen.

Lähteet