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. Zoek hier niet naar diepgaande wijsheid - wij zijn zelf ook nog op zoek.

vr. 28 mrt. Auteur: Jeroen Mimpen

Taalmodellen in actie - Deel 4: Deepseek

In de vorige artikelen hebben we een reis gemaakt door de verschillende LLM modellen en hebben we gekeken naar de prestaties en verschillen van deze modellen. We hebben het kleinste (werkende) model gevonden, en modellen zoals Llama3, Qwen 2.5 en Mixtral getest.

De Deepseek schokgolf

Op 27 januari 2025 verloor Nvidia opeens 589 miljard dollar aan beurswaarde. Dit was de grootste daling in marktwaarde voor een bedrijf op één dag ooit (tot op dat moment).

Dit kwam door de release van DeepSeek, een nieuw reasoning model. Gemaakt door het gelijknamige bedrijf Deepseek uit China.

Nu was het reasoning aspect hiervan niet de grote doorbraak (want OpenAI had bijvoorbeeld al reasoning modellen beschikbaar), maar de grote schok kwam voort uit de doorbraak die ze hadden gevonden in het trainen van dit model. Ze hadden een zeer effectieve manier gevonden om de post-training te doen, en wisten daarmee voor een fractie van de kosten die het voorheen waren een model te trainen met vergelijkbare capaciteiten als die van de nieuwste ChatGPT modellen.

Er volgden nog heel veel discussies hierover. Of de daling van de marktwaarde van Nvidia niet heel onlogisch was, en of de trainings-kosten van Deepseek wel echt klopten. Dit blog-artikel richt zich daar verder niet op - wij gaan ons richten op de techniek en het gebruiken van dit nieuwe reasoning model.

Maar wat is reasoning?

Deepseek is een reasoning model (we noemen het ook wel thinking models). Deze modellen introduceren een extra stap tijdens het uitvoeren van een prompt. Een 'denkstap', waarbij ze eerst proberen te redeneren over de vraag.

Hoe ziet deze reasoning eruit? In het geval van Deepseek krijg je de reasoning te zien (OpenAI toont dit bijvoorbeeld niet). De reasoningen komt te staan tussen de thinkings tags. Een response van DeepSeek ziet er bijvoorbeeld zo uit:

Okay, let's tackle this problem. The user wants me to convert a database schema from snake_case to PascalCase. First, I need to recall the rules for PascalCase: each word starts with a capital letter, no underscores, and the first letter is also capitalized. The table names and their field names need to be converted, but the data types like integer should stay lowercase.

Looking at the input, each table is defined with snake_case names. For example, "wizards" becomes "Wizards". The fields like "id" would be "Id", "wizard_id" becomes "WizardId". The references (Ref) also need their table and field names converted.

I need to go through each table one by one. Let's start with the "wizards" table. The table name becomes "Wizards", and the field "id" becomes "Id". That's straightforward.

... meer van hetzelfde, Deepseek doorloopt alle tabellen ...

I need to ensure that all table and field names are correctly converted without altering the data types. Also, check that the references correctly point to the PascalCase versions. Let me double-check each line to avoid mistakes. For example, "enchanted_artifacts.potion_id" becomes "EnchantedArtifacts.PotionId", which references "MagicPotions.Id". That looks right.

No markdown, just the corrected schema. Make sure there are no typos and that all references match the converted names. Once everything is converted properly, present the final answer as the user instructed.

Deepseek - slechter dan verwacht

Voor deze tests maken we gebruik van de perplexity API die het r1-1776 model aanbiedt. Dit is een versie van Deepseek waar de censoring eruit is gehaald.

Maar de resultaten zijn slechter dan verwacht:

Waarom is dit onverwacht?

Niet alleen is dit een ENORM model (671B parameters), maar het gebruikt bovendien een techniek die de resultaten zou moeten verbeteren. De dingen die fout gingen waren niet bijzonder interessant: Meestal was de code gewoon niet omgezet.

Waarom slechter dan verwacht?

De recente release van Claude 3.7 Sonnet is ook een reasoning model met een thinking mode. Ondanks dat het de 'opvolger' van Sonnet 3.5 is, ervaren sommige gebruikers toch dat bij bepaalde taken een reasoning model zichzelf juist in twijfel gaat trekken. Hierdoor schakelen deze gebruikers soms weer terug naar Claude Sonnet 3.5. Misschien is hier ook wel zoiets gaande?

Een mooi voorbeeld hiervan is toen mijn collega Deepseek een hele moeilijke optelsom gaf:

hoeveel is 1+1:

Okay, so the user is asking "1+1". That's a basic arithmetic question. Let me make sure I understand what they need. They probably just want the sum of 1 and 1. Let me think... 1 plus 1 equals 2.

But wait, maybe they want more explanation? Sometimes people ask simple questions to test if the assistant is paying attention.

Hmm, but the question is straightforward. I should confirm the answer first. Yes, 1+1 is definitely 2. But maybe provide a bit more detail to be helpful. Like, if you have one apple and get another, you have two.

But maybe that's too much.

The user might just want the answer. Alright, I'll go with the clear answer first and then offer a brief explanation in case they need it.

Reasoning models en few-shot prompting

In deel 2 van deze blog-reeks omschreef ik hoe het toevoegen van een voorbeeld de LLM meer informatie geeft, waardoor hij beter kan 'voorspellen' wat zijn reactie moet zijn. Het resultaat van deze thinking tags is vergelijkbaar: er is meer informatie beschikbaar voor de LLM om zijn response op te baseren.

Over reasoning models wordt vaak het advies gegeven om geen examples (few-shot prompting) te geven, omdat het model vaak zelf dan tot betere resultaten komt. Maar dat is voor onze taak dus niet het geval. Het is misschien een TE simpele taak, waardoor een reasoning model er paradoxaal juist minder goed in is geworden.

Maar bovenstaande verklaringen hoeven natuurlijk niet de reden te zijn - er zit zoveel verschil tussen modellen onderling, dat het goed mogelijk is dat een ander reasoning model wel goed met deze taak om zou kunnen gaan. Het is nog te vroeg om conclusies te trekken.

Deepseek distillaties

Door bestaande modellen te finetunen met voorbeelden gegenereerd met DeepSeek-R1 is het mogelijk om de kwaliteit van bestaande (kleinere) modellen te verhogen. Bij interesse over hoe dit werkt kunnen we hierover een keer de diepte in gaan, maar voor de artikel laten we het hierbij: de 'ontdekte' redeneringskennis lijkt tijdens deze overdracht van DeepSeek naar een kleiner model redelijk goed bewaard te bijven. Het DeepSeek-V3 model is namelijk dusdanig groot dat het lastig te draaien is zonder gespecialiseerde dure hardware. Maar deze kleinere modellen kunnen wel makkelijker gedraaid worden.

En ook hier zien we weer hetzelfde: achteruitgang. En ook dat zelfs het geven van een voorbeeld dus verwaarloosbare impact heeft (bij qwen zelfs een negatieve impact, maar dat is waarschijnlijk statistisch gezien niet significant genoeg).

Dit illustreert een enorm verschil tussen de 2 'type' modellen: waar het geven van een voorbeeld de performance van een piepklein model zoals Llama3 3B van 18 naar 91 verhoogt, heeft het bij 2 van de reasoning modellen nagenoeg geen impact.

Ook hier is de conclusie weer: in het algemeen worden modellen steeds beter en beter, maar modellen hebben toch vaak dingen waar ze meer of minder geschikt voor zijn. Want llama3 70b wist in het vorige artikel een score van 100 te halen, terwijl de Deepseek distillatie dat niet meer lukt. Voor deze specifieke taak is het model dus aanzienlijk slechter geworden.

Volgende keer

Deze reeks van blogartikelen begint zijn einde te naderen. In het volgende artikel gaan we de statistieken van alle geteste modellen bij elkaar zetten, en wil ik enkele gedachtes en conclusies delen over deze serie van experimenten en ontdekkingen.