ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Autoregressiivinen generointi: valinta takaisin syötteeksi

Autoregressiivinen generointi (autoregressive generation) rakentaa jonon ennustamalla seuraavaa alkiota jo olemassa olevista. Kielimallissa alkiot ovat tokeneita. Kun yksi token on valittu, järjestelmä lisää sen jonoon ja pyytää mallilta seuraavaa ennustetta.

Malli tuottaa jakauman mahdollisista seuraavista tokeneista. Dekoodaussääntö ratkaisee valinnan. Suurimman pisteen valinta on ahne dekoodaus (greedy decoding); otanta tuo mukaan hallittua satunnaisuutta. Valittu token tulee kummassakin tapauksessa seuraavan askeleen syötteeksi.

Valittu seuraava token lisätään tunnettuun jonoon ja annetaan samalle muuttumattomalle mallille seuraavaa ennustetta varten.

Tekstin jatkamisen silmukka

Tämä yhden jonon esimerkki käyttää PyTorchia ja Transformers-kirjastoa. Ensimmäinen laskentavaihe lukee koko kehotteen. Seuraavat vaiheet saavat vain uuden tokenin sekä kertyneen välimuistin. Mallin painot pysyvät samoina. Ensimmäinen ajo lataa GPT-2:n.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2").eval()
ids = tokenizer("Far far away", return_tensors="pt").input_ids
sequence, pending, cache = ids, ids, None

with torch.inference_mode():
    for _ in range(40):
        result = model(pending, past_key_values=cache, use_cache=True)
        pending = result.logits[:, -1].argmax(-1, keepdim=True)
        sequence = torch.cat([sequence, pending], dim=1)
        cache = result.past_key_values
        if pending.item() == tokenizer.eos_token_id:
            break

continuation = tokenizer.decode(sequence[0], skip_special_tokens=True)

Jonon päättävä token tai asetettu askelraja lopettaa silmukan. Ahne valinta tekee peräkkäisten valintojen riippuvuuden näkyväksi.

Rinnakkainen koulutus, peräkkäiset valinnat

Koulutuksessa tavoitejono on jo saatavilla. Kausaalinen maski sallii monen sijainnin ennusteiden laskemisen rinnakkain paljastamatta tulevia tokeneita. Tavallisessa generoinnissa tulevia valintoja ei vielä ole.

KV-välimuisti välttää aiempien avainten ja arvojen uudelleenlaskennan. Se ei poista seuraavan valinnan riippuvuutta edellisestä. Siksi pitkän vastauksen tuottaminen voi kestää, vaikka kehotteen käsittely olisi nopeaa.

Lähteet