Monitoring tijdens de training: de verwachte oogst van GPT-NL

Recentelijk publiceerden we over de start van het trainen van GPT-NL. De trainingsfase duurt een aantal maanden en nu, eind juli, zitten we op ongeveer een derde van de training. Dat betekent niet dat we in de afgelopen tijd hebben stilgezeten: tussentijds monitoren we hoe het taalmodel zich ontwikkelt. In dit artikel geven we je een kijkje in de keuken over hoe we dat doen en hoe het trainen vergaat.

GPT-NL Update training

Wat is een aardappel?

In een eerder artikel legden we uit dat een taalmodel in de initiële fase wordt getraind door een grote hoeveelheid tekst te analyseren om te 'begrijpen' hoe taal werkt. Door het taalmodel voorbeelden van teksten te laten zien, leert het statistisch in te schatten wat het volgende woord zou moeten zijn. De trainingsdataset wordt door het model woord voor woord verwerkt. Of beter gezegd: token voor token. Naarmate de tijd vordert, krijgt het model dus meer en meer teksten te zien, en wordt het model bijgestuurd wanneer het een woord verkeerd voorspelt op basis van de voorgaande woorden (hierdoor “leert” het model). In deze fase van het trainen wordt de basis van het taalbegrip gelegd en generieke kennis opgedaan.

Doordat het model door de tijd heen meer en meer tokens heeft verwerkt, is het aannemelijk dat we de kennis en het tekstbegrip kunnen zien verbeteren. Om deze progressie tijdens het trainen te onderzoeken, kunnen we naar een aantal zaken kijken. De meest voor de hand liggende methode is simpelweg met het model te interacteren. Hieronder tonen we een aantal responses van het model op de prompt “Een aardappel is…” op verschillende momenten.

  • Tokens zijn kleine stukjes tekst die door een taalmodel worden gebruikt. Een token kan een woord, een deel van een woord, of een leesteken zijn.
  • Met 'taalbegrip' bedoelen we dat het model in staat is om zinnen te formuleren die antwoord geven op de prompt.
  • Een prompt is de invoer die je het model geeft , dit kan een vraag of opdracht zijn of een andere invoer waar het model op moet reageren.
  • Met 'kennis' bedoelen we dat het model is getraind op teksten die feitelijk zijn, waardoor het in staat is om accurate antwoorden terug te geven.
  • Op deze pagina zie je uit hoeveel tokens de trainingsdataset bestaat. Sommige databronnen laten we echter vaker zien aan het model, bijvoorbeel de Nederlandse teksten. Door deze herhalingen krijgt het model tijdens de training dus meer tokens te zien dan de dataset groot is. Bij de omvang van de dataset spreken we daarom van unieke tokens.
Antwoorden op de prompt "Een aardappel is..."
Na het zien van ongeveer 3 miljard tokens Na het zien van ongeveer 210 miljard tokens Na het zien van ongeveer 350 miljard tokens
“…een belangrijk onderdeel van de voedselketen. Het gaat om het behoud van biodiversiteit en het vergroten van de weerbaarheid tegen klimaatverandering. De eiwittransitie moet leiden tot minder gebruik van gewasbeschermingsmiddelen, meer plantaardige alternatieven voor dierlijke mest…” “…een waardige vervanger van de biet, en het is een goede keus om de teelt van aardappelen te combineren met andere teelten. De aardappel kan als basisgewas geteeld worden op alle grondsoorten, maar heeft een voorkeur voor…” “…een plant, die in de grond wortelt en waarvan het loof dient als voedsel voor dieren. De aardappel is dus een gewas. Het telen van gewassen is een landbouw-activiteit. In de Noordoostpolder zijn twee…”

We kunnen een duidelijk verschil opmerken tussen de drie responses. De eerste is qua taal correct, maar inhoudelijk onsamenhangend en deels niet relevant. In de tweede respons is het verhaal wellicht wel coherent, maar ook arbitrair: er ontbreekt begrip van de impliciete vraag die in de prompt gesteld wordt. In de derde respons wordt meer uitleg gegeven over wat een aardappel is, wat wijst op een verbetering van het taalbegrip van het model. De antwoorden op de prompt laten ook zien dat het model nog niet in staat is om feitelijke antwoorden terug te geven. Want hoewel we bij de derde respons qua taligheid een verbetering zien, wordt er wel onjuiste bewering gemaakt door te zeggen "…het loof dient als voedsel voor dieren". Aardappelloof kan namelijk zeer giftig zijn voor dieren. Omdat we nu op een derde van de training zitten, verwachten we hier de komende periode nog verbeteringen in te zien.

Kennis en feitelijkheid
Omdat taalmodellen in de basis een statistische inschatting maken van welke woorden elkaar logischerwijs opvolgen, kan nooit helemaal worden gegarandeerd dat output helemaal correct is. Er zijn talloze voorbeelden te vinden van AI-tools die onjuiste informatie teruggeven, of zelfs informatie verzinnen. In het laatste geval wordt gezegd dat het taalmodel 'hallucineert'. Bijvoorbeeld in het geval van Air Canada, waarin de AI-chatbot foutieve informatie gaf aan een passagier. Bij de ontwikkeling van taalmodellen is het daarom van groot belang om acties te ondernemen om de feitelijkheid en accuraatheid van het model te verbeteren.” Deze acties vinden plaats tijdens de volgende fase in de ontwikkeling, tijdens de finetuning. Eén van de acties tijdens deze fase is 'knowledge recall': hiermee train je het model erop dat feitelijk vragen juist worden beantwoord. Een andere actie is het minimaliseren van onjuiste of misleidende informatie. Tot slot is het goed om in het achterhoofd te houden dat GPT-NL wordt ontwikkeld voor specifieke taken: samenvatten, versimpelen, en het extraheren van informatie. Het doel van GPT-NL is niet om een generiek kennismodel te ontwikkelen.

Kwantitatieve monitoring: de cross entropy grafiek

De interacties hierboven geven een aardige eerste indruk van de kennis en kunde van het model, maar het is geen structurele, meetbare methode. Om kwantitatief te meten hoe goed het model het volgende woord kan voorspellen, gebruiken we onder andere een “cross-entropy” metriek. Deze meet in hoeverre de voorspelling afwijkt van het daadwerkelijke volgende woord in de dataset. De cross-entropy is hoog wanneer het model zeker is van een verkeerd antwoord en laag wanneer het model zeker is van het juiste antwoord (en alles ertussenin). In andere woorden, het meet hoe verrast het model is om het volgende woord te zien. We zien dus graag dat deze laag is. Om te zien of het model verbetert tijdens het trainen, plotten we deze metriek tegen de hoeveelheid tokens die het model door de tijd heeft gezien. Wanneer deze omlaag gaat, verbetert het model. Voor nu zien we dat de cross-entropy afneemt over de tijd: een goed teken!

Cross-entropy GPT-NL trainingupdate 1
Caption: De cross-entropy (lager is beter) over de trainingstijd, uitgedrukt in hoeveelheid tokens die het model tijdens het trainen heeft gezien. De kleurveranderingen geven aan waar nieuwe compute jobs werden gestart om het trainingsproces voort te zetten.

Valideren op relevante taken

Het nadeel van de cross-entropy grafiek is dat deze ons niet laat zien hoe bruikbaar het model is voor relevante taken waar GPT-NL voor zou kunnen worden ingezet. We ontwikkelen GPT-NL namelijk voor specifieke taken: het samenvatten van teksten, versimpelen van teksten, en het ophalen van informatie uit teksten. We beginnen met de eerste.

Hieronder tonen we de prestaties van het GPT-NL model gedurende het trainingsproces op een samenvattaak. We evalueren het model op een Engelse dataset (links) en Nederlandse dataset (rechts) uit de EuroEval set met toepasselijke metriek (nu: hoger is beter). We zetten de prestatie van GPT-NL in perspectief door deze naast de prestaties van een vergelijkbaar model te plotten (OLMo 2). We kunnen zien dat op deze taken GPT-NL (oranje lijn) het aardig doet ten opzichte van OLMo 2 (blauwe lijn). In het Nederlands presteren we zelfs een stukje beter!

We evalueren GPT-NL dus met name op samenvatten, versimpelen, en het ophalen van informatie uit tekst. In de volgende ontwikkelfase, de finetuning van het model, zorgen we ervoor dat het model deze taken goed kan uitvoeren. Hier schenken we dus ook extra aandacht aan feitelijkheid en veiligheid van het model. We corrigeren dan het model wanneer het bijvoorbeeld een samenvattaak niet goed of met onfeitelijkheden heeft uitgevoerd. Dat we focussen op specifieke taken, betekent dus ook dat GPT-NL het nog niet zo goed doet op meer complexe taken. Bij complexe taken kun je denken aan prompts waarbij complexe redenering is vereist door het model. In tegenstelling tot het samenvatten van een tekst (de belangrijkste informatie selecteren) of het versimpelen van tekst (de moeilijke woorden vervangen), wordt bij complexe taken van het model verwacht om in logische stappen te kunnen redeneren. Bijvoorbeeld op de prompt "Hoe citrusvruchten te raspen" of "Hoe maak je een jurk zonder patroon". Hoewel de logische stappen die het algoritme moet uitdenken een voorbeeld is van complexe redenering, heet deze taak 'common-sense reasoning'. Zo zie je maar: wat voor een algoritme een complexe taak is, valt voor mensen onder gezond verstand.

  • EuroEvalis een initiatief om benchmarks voor taalmodellen voor Europese talen samen te brengen.
  • We leggen de resultaten van GPT-NL naast een versie van OLMo 2 , een taalmodel dat op een vergelijkbare hoeveelheid data is getraind, maar qua parameters een stukje groter is dan GPT-NL (32 versus 26 miljard parameters).
  • De voorbeelden van common sense reasoning komen uit de HellaSwagNLdataset, die komt uit het EuroEval initiatief.
EuroEval Summarisatoin EN trainingupdate 1
EuroEval Summarisatoin NL trainingupdate 1

Caption: Prestaties van het GPT-NL (oranje) gedurende het trainen (x-as is de tijd uitgedrukt in hoeveelheid tokens het model heeft gezien tijdens het trainen) op een samenvattaak in het Engels (links) en in het Nederlands (rechts) uitgezet tegen een iets groter model van 32 miljard parameters, getraind op een vergelijkbare hoeveelheid tokens (OLMo 2, in blauw). De geplotte metriek is de ROUGE-L score: langste overlap aan woorden gemeenschappelijk met de referentie tekst (hoger is beter).