Disclaimer: Welkom bij onze TechBlog!
Dit is een artikel in ons TechBlog. Ons Techblog bevat artikelen, geschreven door onze developers, over dingen die ze zijn tegengekomen tijdens hun werkzaamheden. Deze artikelen gaan (meestal) over een technisch onderwerp, en zijn met name bedoeld om te vermaken en (soms) te informeren. Neem ze vooral niet te serieus - dat doen wij ook niet.

vr. 4 apr. Auteur: Jeroen Mimpen

Taalmodellen in actie - Deel 5: Conclusie

In de vorige 4 artikelen hebben we dezelfde taak door allerlei verschillende LLM's laten uitvoeren. In dit artikel presenteren we een overzicht en de conclusie van deze reeks van blog-artikelen.

Alle stats met elkaar vergeleken

Zero shot prompting - altijd een risico op hallucinaties

Opvallend in de bovenstaande statistieken is dat geen enkel model, zelfs GPT-4o niet, in staat was om zonder voorbeeld een 100% succespercentage te behalen. 4 van de modellen hadden er hier 99 van de 100 goed. Dit was ook het antwoord op 1 van mijn vragen: hoe groot is de kans dat het fout gaat? De kans is dus vrij klein, maar zelfs bij de beste/grootste modellen kan dit dus fout gaan.

De conclusie is duidelijk: Als iets belangrijk is, controleer dan altijd de output van de AI.

De conclusie is duidelijk: Als iets belangrijk is, controleer dan altijd de output van de AI.

GPT-4o failure

Ik was natuurlijk benieuwd naar de daadwerkelijk gemaakte fouten. Helaas had ik bij mijn testing-framework nog geen rekening gehouden met eenvoudig onderscheid maken tussen geslaagde en gefaalde responses. Ze werden allemaal op dezelfde manier opgeslagen, dus ik mocht weer wat extra code schrijven om te kunnen detecteren welke response fout was gegaan. Ik ben uiteraard al begonnen aan het ontwerpen van versie 2 van mijn LLM experimentation tool, waar dit soort gebreken niet meer zitten.

Na wat programmeer- en speurwerk had ik hem gevonden. Bij GPT-4o was dit de enige fout:

Table MagicPotions {
  Id integer [primary key]
  Wizard_id integer
}

Wizard_id had hier WizardId moeten worden. De andere woorden had ie wel allemaal goed gedaan (zoals Id en MagicPotions). En de andere 99 keer was ook dit woord goed gegaan. Maar deze ene keer niet. Laten we hopen dat het tovenaarsdrankje hierdoor niet is bedorven.

Hoe eerlijk waren deze vergelijkingen?

LLMs zijn vreemde technologie. Ik noemde bijvoorbeeld dat het veel kleinere Gemma2 beter was dan Mixtral-8x7B. Maar in hoeverre is dit echt zo? Het kan best zijn dat het Mistral model gewoon een iets andere manier van prompting vereist, en dan mogelijk zelfs betere resultaten terug zou geven. Het kan ook zijn, net als met Qwen-Coder, dat Mistral toevallig voor deze zeer specifieke taak minder geschikt was, maar voor veel andere taken veel beter is.

Of denk bijvoorbeeld aan de onverwachte resultaten die we zagen bij de reasoning models. Die, in groot contrast tot de andere modellen, zelfs slechter kunnen presteren bij few-shot prompting.

Het is dus uitzonderlijk moeilijk om modellen echt goed met elkaar te vergelijken, en we hopen ook niet dat deze resultaten te serieus genomen worden (en verwijzen hierbij natuurlijk naar de disclaimer bovenaan deze artikelen). Desalnietemin hopen we toch dat deze vergelijkingen informatief waren.

Claude overgeslagen

Anthropic heeft enkele hele sterke modellen, waaronder Claude 3.5, die ik zelf regelmatig gebruik. Ik had graag deze modellen ook willen testen, en nog veel meer - misschien leuk voor een toekomstig blog-artikel, waarin we nog meer LLM's meenemen in onze tests. Als hier interesse voor is, dan hoor ik dat graag!

Mijn verwachting is dat de modellen van Claude ongeveer hetzelfde zullen presteren als die van OpenAI. Voor veel taken presteren de Anthropic modellen voor mij zelfs beter dan die van OpenAI, maar zoals we gezien hebben zijn deze resultaten soms toch verrassend. Dus ik ben hier wel een stuk minder zeker over dan ik was voordat ik begon met het schrijven van deze artikelen.

Groq

Groq is een LLM-provider. Zij bieden een API aan met een lijst van modellen. Groq was erg handig voor het uitvoeren van deze experimenten, omdat ik daardoor niet de modellen lokaal hoefde op te tuigen. Hun platform biedt enorm snelle interference (responses waren gemiddeld 3 keer zo snel als die van OpenAI) en genereuze rate limits (een max 30 queries per minuut). En allemaal gratis. Dit is niet bedoeld als reclame, maar ik was een erg tevreden gebruiker.

Succespercentage verhogen

Tijdens de vorige artikelen zagen we hoe krachtig het is om een voorbeeld te geven aan je (non-reasoning) LLM. We waren hiermee in staat om het succespercentage van Llama3.2 3B van 18 naar 82 te verhogen.

Maar dit was slechts een enkel en bovendien simpel voorbeeld. Wat is bijvoorbeeld het effect als we 3 voorbeelden geven, in plaats van 1? En ik vermoed dat aan de prompt zelf ook nog flink te optimaliseren valt. Want ironisch genoeg: aan dit onderdeel (de prompt zelf) heb ik tijdens dit project de minste tijd besteed. Zodra ik iets had wat 'goed genoeg' werkte ben ik gaan testen en vergelijken.

Er zijn natuurlijk nog veel meer dingen te bedenken - we zouden bijvoorbeeld het gegenereerde resultaat achteraf kunnen laten controleren door nog een LLM aanroep te doen, en te vragen of het klopt (wat dus eigenlijk een soort variatie is op wat thinking models doen). LLMs zijn zo krachtig en veelzijdig dat ik denk dat er nog vele jaren aan ontdekkingen zullen volgen, alleen al op basis van wat we nu hebben.

Reasoning modellen

Voordat ik aan deze blogreeks begon had ik het idee dat de reasoning modellen op termijn uiteindelijk alle modellen zouden vervangen. Maar ik ben aan deze aanname gaan twijfelen - het is goed mogelijk dat reasoning modellen altijd minder geschikt zullen zijn voor deze specifieke taak dan non-reasoningen modellen. En als dat zo is, blijven de verschillende type modellen mogelijk wel altijd naast elkaar bestaan.

De toekomst van modellen

Gaan we naar een toekomst toe waarin een router de keuze heeft uit honderden of duizenden kleine modellen die heel geschikt zijn voor een specifieke taak?

En hallucinaties, zijn deze ooit op te lossen? Zelfs de meest krachtige modellen maakten hier 1% van de tijd een fout. En de fout was niet groot, maar in een andere context kan een fout grote gevolgen hebben. Misschien gaan we naar een toekomst toe waar we dit soort taken 3 keer willen uitvoeren door hetzelfde model, of door meerdere modellen. Dan is de kans op falen bijv nog maar 1 op een miljoen (grofweg natuurlijk, de slagingskans gaat ook wat omlaag omdat er een derde situatie bijkomt waarin de 3 resultaten niet overeenkomen).

Niet alleen worden we beter en handiger in het gebruik van deze modellen, maar de modellen zelf ondervinden ook een ongelooflijke groei in capaciteiten. We zagen in de vorige artikelen dat in de voorgaande jaren iedere paar maanden wel weer een nieuw model uitkwam die een flinke verbetering was op zijn voorgangers. En dat is niet veranderd: Inmiddels is Gemma3 alweer beschikbaar: dit nieuwe model lijkt niet alleen een flinke stap vooruit qua capaciteiten, maar is ook nog eens multi-modal. Het is bijvoorbeeld ook in staat om afbeeldingen te begrijpen.

Een terugkerend thema was dat de nieuwe modellen niet alleen beter presteren dan de oude modellen, maar vaak ook kleiner zijn dan deze oude modellen. Llama3.3 70B had bijvoorbeeld vergelijkbare performance met Llama 3.1 405B, terwijl het slechts 20% van de hoeveelheid parameters had. Als deze trend zich doorzet wordt het steeds eenvoudiger mogelijk om LLM's overal in te kunnen zetten.

Einde van project

Dit hele experiment had inmiddels mijn weekend gevuld. Maar vol enthousiasme en nieuwe ideeen en toepassingen ging ik die maandag weer aan het werk.

Ik sprak mijn collega die ochtend weer, en hij vroeg: "Fijn weekend gehad? Oh, en kan je het DB-diagram nog even updaten naar PascalCase?"

Oops. Het DB-diagram... helemaal vergeten!

In mijn enthousiasme was ik dit database diagram, waar dit hele traject mee begon, helemaal vergeten op te sturen! Wat ga ik tegen mijn collega zeggen? Misschien kan ik een LLM vragen om een smoesje te verzinnen! Maar hoe weet ik of de smoes wel goed is, en geen hallucinatie? En welke LLM zou het beste geschikt zijn voor het verzinnen van een smoes? Hmm... Misschien moet ik daar maar eens een experiment voor op gaan zetten!