ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Dekoodaus: sama malli voi tuottaa erilaisia jatkoja

Dekoodaus (decoding) muuntaa mallin pisteet jonoksi. Ahne dekoodaus valitsee suurimman pisteen saaneen tokenin jokaisella askeleella, otanta arpoo jakaumasta ja keilahaku säilyttää useita osittaisia jonoja.

Menettelyt käyttävät samaa opittua mallia eri tavoin. Tulosteen laadun muutos voi siis johtua valintasäännöstä eikä uudesta koulutuksesta.

Vertaa kahta käytäntöä samalla mallilla

PyTorch/Transformers-esimerkki lataa pienen kausaalisen mallin ja tokenisoijan ja tuottaa samalla kehotteella kaksi jatkoa.

from transformers import AutoModelForCausalLM, AutoTokenizer

name = "HuggingFaceTB/SmolLM2-135M"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForCausalLM.from_pretrained(name).eval()
inputs = tokenizer("Far away, the old observatory", return_tensors="pt")
greedy = model.generate(**inputs, max_new_tokens=40, do_sample=False)
sampled = model.generate(**inputs, max_new_tokens=40, do_sample=True,
                         temperature=0.8, top_p=0.9)
continuations = [tokenizer.decode(row, skip_special_tokens=True)
                 for row in (greedy[0], sampled[0])]

Ahne valinta on paikallisesti deterministinen kiinteillä pisteillä. Se ei takaa todennäköisintä kokonaista jonoa. Otanta tuo vaihtelua, ja lämpötila sekä top-p muuttavat arvonnan jakaumaa.

Lopetustokenit ja pituusrajat ratkaisevat generoinnin päättymisen. Vertaa menetelmiä samalla kehotteella ja tulostebudjetilla, jotta pidempi vastaus ei näytä paremmalta vain saamansa lisälaskennan vuoksi.

Lähteet