Ik trainde een klein AI-model drie uur op mijn eigen vragen. Daarna was het slechter dan ervoor.
Op 200 moeilijke keuzevragen zat het er 162 keer naast. Zonder training waren dat er 55.
Dat bijtrainen heet fine-tuning. Bij de tweede poging veranderde ik één instelling. Toen maakte hetzelfde model 18 fouten.
Dat is ongeveer evenveel als een model dat ruim twee keer zo groot is en niet werd bijgetraind.
Daarna gaf ik dat grotere model dezelfde training. Het maakte er 9.
Dat ligt tussen de twee beslismodellen in de cloud die ik ook mat. Een verschil met een van beide kon ik niet aantonen.
Waarom ik een klein model wilde bijtrainen
Sinds eind september meet ik hoe AI-modellen beslissingen nemen over zakelijke teksten.
Klachtmails, zoekvragen en fragmenten uit salesgesprekken, allemaal verzonnen voor deze test.
Elke vraag heeft vaste antwoorden. Kies een categorie, geef een score of zeg ja of nee.
In AI lokaal draaien als beslismodel draaide ik twee modellen op mijn Mac mini. Het kleine model is sneller. Het grote maakt minder fouten.
Op de 200 moeilijkste keuzevragen maakte het kleine model, Qwen3.5 4B, 55 fouten. Het grotere 9B-model maakte er 20. Jev, een beslismodel in de cloud, maakte er 12.
De vraag was dus simpel. Kan het kleine model mijn vragen leren als ik het een paar uur train op voorbeelden die ik al had?
Hoe fine-tuning werkt zonder het hele model te trainen
Bij fine-tuning train je een bestaand model verder op je eigen voorbeelden. Het leert je vragen, je antwoorden en je definities.
Ik gebruikte LoRA, een zuinige vorm daarvan. Het model zelf blijft onaangeroerd. Er komt een klein extra laagje bij dat de uitkomst bijstuurt.
Dat laagje is 0,19 procent van het model. Het staat in een los bestand dat je bij het model laadt. Terug naar het oude model is het bestand weglaten.
De voorbeelden had ik al: 300 makkelijke en middelzware teksten met de goede antwoorden. Met 270 daarvan trainde ik. De andere 30 gebruikte ik om het verloop te volgen.
Dat gaf 900 trainingsvoorbeelden, één per vraag per tekst.
De 150 moeilijkste teksten hield ik apart. Die heeft het model in de training nooit gezien. Daarop toetste ik.
Ik legde vooraf vast wat ik zou meten en wanneer ik het een succes zou noemen. Pas daarna begon de training.
De eerste poging: drie uur trainen, daarna slechter
De training op mijn Mac mini duurde drie uur.
Het getal dat de software tijdens het trainen laat zien, zakte van 5,9 naar 0,5. Op één uitschieter na leek dat op vooruitgang.
Toen liet ik het model de moeilijke teksten beoordelen. Het koos bij elke keuzevraag A of E. Wat er in de tekst stond, maakte niet meer uit.
Bij de vraag naar de zoekintentie was het antwoord 50 van de 50 keer A. Bij het verkoopsignaal in de salesgesprekken was het 50 van de 50 keer E.
De pijnlijkste uitkomst zit in één vraag: moet een mens deze mail oppakken?
Van de 20 mails waarbij dat moest, miste het getrainde model ze alle 20. Zonder training waren het er 7.
Zo'n model valt in een rapportje niet op. Het geeft antwoorden en die zien er geldig uit. Alleen staat er bij elke tekst A of E.
Waar het misging: één getal
De waarschijnlijkste oorzaak zat in de leersnelheid. Dat is hoe groot de stappen zijn waarmee het model zich aanpast. Ik nam een getal dat in veel handleidingen staat.
Die handleidingen gaan over andere software. Daar pakt hetzelfde getal anders uit. In mlx-lm, de software die ik gebruikte, was het tien keer de standaard.
Voor wie het mechanisme wil herkennen: mlx-lm vermenigvuldigt de uitkomst van het laagje met scale, standaard 20, zonder te delen door de rank.
In PEFT is die factor alpha gedeeld door de rank, standaard 1.
De AdamW van MLX slaat daarbij standaard de bias-correctie over.
Daardoor waren de eerste ruim honderd stappen drie tot ruim zes keer groter dan met die correctie. Aan het eind was dat nog 1,7 keer.
Het volledige verslag, tot op het bestand en de regel, staat in het Engels: LoRA fine-tuning met mlx-lm.
Bij de tweede poging zette ik de leersnelheid op de standaard van mlx-lm. De rest bleef gelijk, op de volgorde van de voorbeelden na.
Eén instelling later: 18 fouten
Met de lagere leersnelheid maakte hetzelfde 4B-model 18 fouten op de 200 moeilijke keuzevragen. Zonder training waren dat er 55.
Het ongetrainde 9B-model maakte er 20. Tussen die twee kan ik statistisch geen verschil aantonen. Op deze toets houdt het kleine model na fine-tuning het grote dus bij.
Een deel van die winst zit in de klasse die ik te vaag had gedefinieerd. Daar koos het getrainde model 10 van de 13 keer zoals mijn definitie. Het 9B-model deed dat 4 keer.
Het leerde dus mijn conventie. Daarvoor train je bij. Over teksten van een ander zegt het niets.
Jev maakte er 12 en de Decisions API van OpenAI 6. Het verschil met Jev kon ik niet aantonen.
Dat met OpenAI wel: 17 vragen had alleen mijn model fout, 5 alleen OpenAI. Die toets had ik niet vooraf vastgelegd.
Bij de vraag of een mens een mail moet oppakken, miste het getrainde model er nog 1 van de 20. Het stuurde er 4 onnodig door. Zonder training waren er 7 gemist.
De snelheid bleef die van een klein model. De 500 vragen over de moeilijke teksten kostten 615 seconden.
Dezelfde fine-tuning op het 9B-model: 9 fouten
Voordat de uitslag van de tweede poging binnen was, legde ik één regel vast.
Als het 4B-model minder fouten maakt dan zonder training, krijgt het 9B-model dezelfde training.
Het 4B-model maakte er 18. Om 17:16 begon de training van het 9B-model.
Instellingen en voorbeelden waren gelijk. Alleen de volgorde van de voorbeelden verschilde. Die legde ik deze keer vast.
Het trainen duurde bijna vier uur. Het model gebruikte ruim 13 van de 24 GB geheugen in de Mac mini.
Het getrainde 9B-model maakte 9 fouten op de 200 moeilijke keuzevragen. Zonder training waren dat er 20.
Dat verschil kon ik wel aantonen. Bij 13 vragen zat alleen het ongetrainde model fout, bij 2 alleen het getrainde.
Van die 13 zitten er 7 weer in de klasse die ik te vaag had gedefinieerd. Daar koos het getrainde model 11 van de 13 keer zoals mijn definitie.
Zonder die klasse blijft er een verschil van 6 tegen 2 over. Dat kon ik niet aantonen. Deze uitsplitsing had ik niet vooraf vastgelegd.
Jev maakte er 12 en OpenAI 6. Het getrainde 9B-model zit daartussen. Een verschil met een van beide kon ik niet aantonen.
Bij de vraag of een mens een mail moet oppakken, miste het er 1 van de 20. Zonder training waren dat er 6.
Het stuurde er wel 7 onnodig door, tegen 4 zonder training.
Het grote model blijft trager. Dezelfde 500 vragen kostten 1.055 seconden, tegen 615 voor het getrainde 4B-model.
Er kon ander werk draaien op dezelfde Mac. Zie de tijden als een momentopname.
Ook deze training is verkennend. De regel en de vergelijkingen lagen vooraf vast. De instelling koos ik na de mislukte eerste poging.

Wat fine-tuning kost
De rekenkracht is het kleinste deel.
Drie uur trainen kost op een Mac mini hooguit 6 cent aan stroom. Het 9B-model trainde bijna vier uur, voor hooguit 8 cent.
Dat is gerekend met het maximale verbruik van 65 watt en 30 cent per kWh.
Er gaat geen tekst naar een leverancier en er komt geen rekening per training.
Het echte werk zit in de voorbeelden. 300 teksten met de goede antwoorden, op definities die kloppen.
In mijn eerste test bleek één klasse te vaag gedefinieerd. Een model leert die vaagheid gewoon mee.
Daarna komt de toetsset: teksten die het model nooit ziet, met antwoorden die je vertrouwt. Zonder die set weet je niet of je model beter werd.
Bij de eerste poging zag ik dat. Het getal uit de training zei dat het goed ging. De toets zei van niet.
En dan de tijd. De mislukte poging kostte drie uur rekenen. Daarna las ik de broncode van de software om te vinden waarom.
Fine-tuning, een betere prompt of RAG?
Fine-tuning is niet de eerste knop. Een scherpere vraag met betere definities probeer je eerst. Fine-tuning kost voorbeelden, een toetsset en een nacht rekenen.
RAG, het model laten zoeken in je eigen documenten, is voor kennis. Fine-tuning is voor gedrag: steeds dezelfde vraag op jouw manier beantwoorden.
Een reactie op LinkedIn zei het scherp. Bouw liever een goede omgeving om het model heen dan dat je gaat fine-tunen.
Want over een half jaar is het model dat je nu traint achterhaald.
Dezelfde reactie noemde ook de andere kant: wie de data eenmaal heeft, haalt met elke nieuwe training meer.
Daar zit het. Het model wisselt. Wat blijft, zijn je voorbeelden en je toetsset. Een nieuw model train je op dezelfde 900 voorbeelden opnieuw. Bij het 9B-model kostte dat één avond.
Volgens mij loont fine-tuning als drie dingen samenkomen: een vaste vraag, veel volume en een reden om lokaal te draaien.
Denk aan klachtmails die je eigen computer niet mogen verlaten.
📖 Lees ook: Beslismodellen als Jev: welke AI-toepassingen werken: vijf toepassingen die ik mat en waar ik een beslismodel nooit laat beslissen
Een bijgetraind model is een nieuw model
Na fine-tuning heb je een ander model dan je leverancier je gaf. Alles wat je over het oude model wist, moet je opnieuw toetsen.
Drie dingen zou ik bij elke klant vastleggen:
- Toets op teksten die het model nooit zag. Niet op het getal uit de training. Dat leek bij mijn mislukte poging op vooruitgang.
- Leg vast welke versie draait. Basismodel, extra laagje, instellingen en toetsuitslag. Een modelbeschrijving heeft alleen waarde als je hem na elke training bijwerkt.
- Houd het oude model achter de hand. Bij een tegenvallende versie laat je het extra laagje weg.
Dan de AI-verordening.
Wie een algemeen AI-model aanpast, wordt volgens de richtsnoeren van de Europese Commissie pas zelf aanbieder van het aangepaste model boven een grens.
Die grens ligt bij een aanpassing die meer dan een derde van de oorspronkelijke rekenkracht kost. Zo staat het in de richtsnoeren voor algemene AI-modellen.
Een LoRA van drie uur op een Mac blijft daar ver onder.
Dat is een indicatief criterium in richtsnoeren die niet bindend zijn. Waar het om draait, is of het model wezenlijk verandert.
De regels voor het systeem waarin je het model inzet, blijven gewoon gelden.
Meer daarover op mijn pagina over de AI Act.
De licentie mag je ook niet vergeten. Qwen3.5 valt onder Apache 2.0. Commercieel bijtrainen en gebruiken mag.
Wat deze meting niet laat zien
- Eén bron. De teksten zijn verzonnen en door één AI-modelfamilie geschreven. Training en toets komen uit dezelfde set, met dezelfde definities. Teksten uit jouw bedrijf kunnen anders uitpakken.
- Eén training per instelling en per model. Een tweede run met een andere volgorde van de voorbeelden kan anders uitvallen.
- Achteraf gekozen. De tweede poging en de training van het 9B-model besloot ik na het zien van de eerste. Dat is verkennend werk, geen vooraf vastgelegde toets.
Veelgestelde vragen
Waar je begint
Of een klein lokaal model een beslissing in jouw proces kan overnemen, meet je op je eigen voorbeelden. Hoe ik dat met je uitzoek, lees je op mijn pagina als AI-consultant.