De architectuur van een taalmodel
Eerlijk, ik dacht dat dit een uitvoerige intro zou worden, met verschillende visies op AI erin, waarbij de ene helft bang is dat AI over een half jaar zijn baan heeft ingepikt, en de andere het veredelde autocomplete vindt. Maar het komt er niet lekker uit. Dus ik sla de intro gewoon over en ga meteen naar de vraag die ik echt wilde beantwoorden: hoe werkt zo’n taalmodel nou eigenlijk?
Eén stukje tekst tegelijk
Eigenlijk doet een LLM maar één ding. Het krijgt tekst en berekent voor elk mogelijk vervolg een kans. Niet voor hele zinnen, maar steeds alleen voor het eerstvolgende stukje: een token. Er wordt één token gekozen, dat stukje wordt aangeplakt, en het begint opnieuw. Het model schrijft dus geen antwoord, het kiest steeds één token, en dan nog één, etc. Je zou denken dat het model altijd het token met de hoogste kans pakt, maar je raadt het al: dat is niet per definitie zo. Het trekt er een, gewogen naar de kansen, zodat waarschijnlijke tokens vaker vallen dan onwaarschijnlijke. De favoriet wint dus alsnog meestal, maar niet altijd.
Het model krijgt niet alleen jouw tekst, maar een heel samengesteld pakket: systeeminstructies, eerdere berichten, opgehaalde documenten, beschrijvingen van beschikbare tools, en helemaal achteraan jouw nieuwe vraag. Het model ziet dus niet alleen je laatste invoer, maar de hele stapel, en voorspelt daarmee de volgende token.
Achter die ene keuze gaan weliswaar miljarden berekeningen schuil (daar kom ik zo nog op terug), maar de lus zelf is eigenlijk niet ingewikkelder dan: kans berekenen, kiezen, plakken, opnieuw.
Logische vraag is nu: wanneer stopt die lus dan? Het model kent niet alleen woorden maar ook een aantal speciale tokens, en één daarvan betekent: hier eindigt het antwoord. Dat eindtoken is in de lus steeds een van de kandidaten, met een eigen kans. Wordt het eindtoken gekozen, dan stopt de lus. Er is ook een harde bovengrens voor de lengte van het antwoord. Als die lengte wordt bereikt, dan kapt de software de generatie af, ook als het model nog geen eindtoken heeft gekozen.