Mallin ajo: käytä painoja ilman koulutuspäivitystä
Mallin ajo (inference) käyttää koulutettua mallia ennusteiden, esitysten tai generoitujen tulosteiden tuottamiseen. Kielimallilla siihen kuuluu kehotteen käsittely ja uusien tokenien toistuva valinta.
Koulutus tallentaa lisäksi derivointiin tarvittavaa tietoa ja päivittää parametreja. Ajaminen voi välttää gradienttien kirjanpidon, mutta tarvitsee silti painot, aktivaatiot ja säilytettävän kontekstin tilan.
Kaksi eri tehtävää hoitavaa kytkintä
PyTorch-apufunktio saa Transformers-tyylisen kausaalisen mallin ja tokenisoidut syötteet ja valitsee yhden seuraavan tokenitunnisteen erän kutakin alkiota kohti.
import torch
def next_token(model, inputs):
model.eval()
with torch.no_grad():
logits = model(**inputs).logits[:, -1, :]
return logits.argmax(dim=-1)
eval() muuttaa dropoutin kaltaisten kerrosten toimintaa. no_grad() poistaa gradienttien tallennuksen käytöstä. Kumpikaan ei korvaa toista eikä poista mallin tallennettuja painoja.
Monivaiheinen generointisilmukka voi käyttää KV-tilaa uudelleen koko kehotteen laskemisen sijaan. Pyyntöjen eräajo, kontekstipituus ja välimuistin käyttö vaikuttavat viiveeseen sekä muistiin. Samalla tarkistuspisteellä voi siksi olla hyvin erilainen ajokustannus eri kuormilla.