Zoveel data is er nodig om een model te trainen

Non-profitorganisaties TNO, NFI en SURF hebben inmiddels bijna een jaar geleden de krachten gebundeld om GPT-NL te ontwikkelen. In deze periode is er veel gebeurd. Dit najaar duiken we aan de hand van een reeks artikelen in de achtergrond en context van GPT-NL. We schetsen de stappen die we nemen om uiteindelijk een transparant, eerlijk en controleerbaar taalmodel te ontwikkelen waarmee Nederland wordt voorbereid op de toekomst.

10km data voor een LLM

Een stapel pagina’s van tien kilometer hoog of drie miljoen keer een Harry Potter-boek. Dat is hoeveel data er nodig is om een Large Language Model (LLM) vanaf de grond op te bouwen en te trainen. “Alle betere taalmodellen zijn getraind op minimaal 300 miljard tokens” vertelt Jesse van Oort, lead data acquisitie voor GPT-NL. TNO, het NFI en SURF willen liever geen bestaand taalmodel gebruiken om GPT-NL te ontwikkelen. Die bestaande modellen voldoen vaak niet aan de strenge eisen die het project stelt aan openheid, transparantie en bescherming van waarden.

Vanaf nul

Er moet dus een heel nieuw taalmodel vanaf nul getraind worden. Jesse: “Eigenlijk genereert een taalmodel een tekst doordat AI voorspelt wat het volgende woord in een zin zou moeten zijn. Door het taalmodel voorbeelden van teksten te laten zien, leert het statistisch in te schatten wat het volgende woord zou moeten [zijn]. (Precies, ‘zijn’ ja). Een model kan niet meteen realistische teksten genereren. Er zijn verschillende aspecten die maken dat een tekst kloppend is en ook natuurlijk aanvoelt. Denk aan woordenschat, stijl, woordvolgorde, taal, en hoe mensen emoties uitdrukken. Daarom moet het model getraind worden. We laten het model dan teksten genereren en corrigeren het wanneer het model een verkeerd woord invult, bijvoorbeeld omdat het in de context niet klopt zoals in de zin Ik kwam aan op kantoor en opende mijn [ogen]. Je leert dan het model dat in de context van een kantoor hier [laptop] moet staan, of [mailbox]. Zo wordt het model steeds beter. Je moet het model dus heel veel voorbeelden laten zien om over allerlei onderwerpen teksten te kunnen genereren, en dit kost enorm veel rekenkracht."

15.000 miljard tokens

Om een inschatting te maken van hoeveel data nodig is om een model vanaf nul te trainen, kijken Jesse en zijn collega’s naar eerder ontwikkelde taalmodellen. Jesse: “Open AI vertelt niet hoeveel data ze hebben gebruikt om ChatGPT te trainen, dat is bedrijfsgeheim. Meta heeft ook een concurrerend open taalmodel met de naam Llama. Meta heeft voor het trainen van versie 3 van dat model ongeveer 15.000 miljard tokens gebruikt. Alle betere taalmodellen van de afgelopen jaren zitten tussen de 300 en 15.000 miljard tokens aan trainingsdata.”

Wat is een token?

Tokens zijn woorden en delen van woorden. De meest voorkomende combinaties van letters in een bepaald woord krijgen een eigen token. Het opsplitsen van woorden in tokens gebeurt aan de hand van een ‘tokenizer'. Uit hoeveel tokens een woord bestaat, hangt af van het woord én de oorspronkelijke taal waar de tokenizer op is getraind. Zo is het woord ‘koffiezetapparaat’ in het Nederlands een samenvoeging van ‘koffie', ‘zet', en ‘apparaat’. Met deze tokens kunnen we ook de woorden ‘koffiefilter’, ‘zetpil’ of ‘scheerapparaat’ maken. Om deze reden is het voor een model efficiënter om te leren welke tokens voorkomen in welke volgorde, dan wat hele woorden betekenen, het zou anders niet kunnen herkennen dat ‘koffiefilter’ en ‘koffiezetapparaat’ met elkaar te maken hebben. Ook helpen tokens het taalmodel om met foutieve spellingen om te gaan. Zou een taalmodel het woord ‘koffiezetapparaat’ als één token zien, zou het niet worden herkend wanneer het als ‘koffiezetaparaat’ geschreven is. Doordat het taalmodel is getraind op kleinere woorddelen, worden de tokens ‘koffie’ en ‘zet’ wel herkend, waardoor het model kan berekenen dat het met ‘apparaat’ gevolgd moet worden.

Hoewel deze tokens in het Nederlands op zichzelf ook een betekenis hebben, zijn de combinaties van de letters belangrijker dan de daadwerkelijke betekenis. Gebruik je bijvoorbeeld de tokenizer van Llama3, die is getraind op de Engelse taal, om een Nederlands woord op te splitsen, dan wordt verdeeld over zeven kleinere combinaties: 'k', ‘off', ‘ie’, ‘zet', ‘app’, ‘ara’, ‘at'. De tokens op zichzelf zijn in het Engels nét zo nietszeggend als het hele woord 'koffiezetapparaat’, net zoals de combinatie ‘kieappatoffzetara’ ook geen betekenis heeft. Daarom is het belangrijk om een tokenizer op Nederlandse data te trainen, om te voorkomen dat het taalmodel woorden verzint die in onze taal geen betekenis hebben. Én om het taalmodel heel veel voorbeelden te laten zien, zodat het leert welke tokens elkaar logisch opvolgen.

“Om een concurrerend taalmodel vanaf nul te trainen,” vervolgt Jesse, “heb je tussen de 300 en 15.000 miljard tokens aan trainingsdata nodig. Dat is een gigantische hoeveelheid tekst, ongeveer zo veel tekst als nu op het hele internet is te vinden. Als je uitgaat van het 300 miljard tokens, dan heb je al een stapel papier met teksten, die nog hoger is dan de Mount Everest.”

Zeventig dataleveranciers voor GPT-NL

300 miljard tokens is dus zo ongeveer het minimum. Die data moet ergens vandaan komen. Er zijn zo’n zeventig Nederlandse partijen die data kunnen en willen leveren, maar hun belangen lopen uiteen. Het is aan Jesse en zijn collega’s een heldere aanpak te ontwikkelen die alle belangen zoveel mogelijk dient.

Benieuwd naar de voortgang van GPT-NL? Houd onze website in de gaten voor updates over het proces.