---
title: "Hoe ik begon"
author: "Jakub Ćwirlej"
id: how-i-started
language: nl
url: "https://jakubcwirlej.com/nl/articles/how-i-started.md"
page: "https://jakubcwirlej.com/nl/ai-dev/"
translations:
  pl: "https://jakubcwirlej.com/pl/articles/how-i-started.md"
  en: "https://jakubcwirlej.com/articles/how-i-started.md"
  fr: "https://jakubcwirlej.com/fr/articles/how-i-started.md"
updated: 2026-10-14
words: 1584
summary: "De auteur vertelt hoe het bouwen van OrsonAI, een reeks AI-tools voor zijn eigen journalistieke werk, hem van vibecoding naar onderzoek naar hallucinaties van taalmodellen en naar het trainen van eigen modellen bracht. Hij beschrijft de koele ontvangst van de app in de branche, zijn onderzoek naar de activaties van SwiGLU-gates en het mislukken van zijn eerste model op een eigen architectuur. Vandaag traint hij EUGEN 160M, een klein model gespecialiseerd in code dat in een terminal op de site te proberen is."
summary_type: editorial
---

# Hoe ik begon

Jakub Ćwirlej · taal van de tekst: NL · 1584 woorden

## Samenvatting (redactioneel)

De auteur vertelt hoe het bouwen van OrsonAI, een reeks AI-tools voor zijn eigen journalistieke werk, hem van vibecoding naar onderzoek naar hallucinaties van taalmodellen en naar het trainen van eigen modellen bracht. Hij beschrijft de koele ontvangst van de app in de branche, zijn onderzoek naar de activaties van SwiGLU-gates en het mislukken van zijn eerste model op een eigen architectuur. Vandaag traint hij EUGEN 160M, een klein model gespecialiseerd in code dat in een terminal op de site te proberen is.

## Kernpunten (redactioneel)

- OrsonAI bood live transcriptie van interviews, een bewerkingsmodus om een chatbot te raadplegen over gekozen passages en certificaten van menselijk auteurschap op het openbare ledger van Hedera Hashgraph.
- De GSI-signalen die hij vond, beschrijft hij nu eerder als proxysignalen voor kennis dan als ‘epistemisch bewustzijn’ van een model; hij zag dat confabulatie grotendeels een proces in twee fasen is.
- De vooruitgang van EUGEN 160M berust op nauwgezette monitoring, gerichte trainingsdata, synthetische data met STaR en LEMA en voorbeelden van vertalingen van Python naar C++, Java en Rust.
- Met hulp van een AI-codeeragent bouwde hij een eigen Triton-kernel voor het trainen van een sparse model: in een model van ~300 miljoen parameters trainde de sparse variant 1,23× sneller dan de dense, en latere optimalisaties van de kernel verhoogden de doorvoer met nog eens 36%.
- Hij schrijft het mislukken van zijn eerste model toe aan een filosofisch probleem en verwijst naar Tarski's definitie van waarheid en de stellingen van Gödel.

## Volledige tekst (de woorden van de auteur)

…Ik heb geen formele opleiding in programmeren of in het trainen van LLM’s.

Dat ik apps ben gaan bouwen en AI ben gaan trainen, komt door een volkomen vreemde samenloop van toevalligheden, al lijkt die achteraf bekeken toch behoorlijk logisch. En ik denk dat het iets belangrijks zegt over onze tijd. Ik had het niet gepland; ik had nooit gedacht dat ik ooit meer met technologie te maken zou hebben dan een gemiddelde iPhone-gebruiker. Jarenlang was de podcast Hard Fork mijn enige venster op de wereld van Big Tech. De groeten aan Casey en Kevin :)

Het begon allemaal met vibecoding en de app OrsonAI. Al spelend met kunstmatige intelligentie ging ik tools maken die me konden helpen bij mijn dagelijkse journalistieke werk. Interviews al tijdens de opname omzetten in tekst en ze in een editor importeren, of een bewerkingsmodus waarin je geselecteerde tekstfragmenten met de chatbot kon bespreken zonder tussen vensters te moeten wisselen en de hele context opnieuw te moeten plakken: dat waren toen echt toffe tools, die mijn werk flink versnelden.

Gaandeweg begon ik het te zien als een project, als iets waar ook anderen iets aan zouden kunnen hebben. Het idee was simpel: de hulpmiddelen waarmee ik zelf tijd bespaar, ombouwen tot een product voor mensen die tegen dezelfde problemen aanlopen. Ik heb veel tijd gestoken in het ontwikkelen van een interface en mechanismen die veilige AI voor redacties konden garanderen – AI die de journalist helpt, maar hem het werk niet uit handen neemt. Ik ontwierp zelfs een systeem dat aan teksten certificaten van menselijk auteurschap toekent en die publiceert op het openbare ledger van Hedera Hashgraph. Een onveranderlijk bewijs met juridische bewijskracht, dat laat zien hoe een tekst tot stand kwam en hoe groot het aandeel van de mens daarin was.

- [Hier vind je een beschrijving van de HDK-technologie](https://jakubcwirlej.com/nl/articles/hdk-tech.md)
- [Hier kun je de gratis HDK-bibliotheek downloaden](https://jakubcwirlej.com/files/hdk/hdk-audit-0.1.3.zip)
- [HDK op Hugging Face](https://huggingface.co/JakCwi/hdk-audit)

Toch wachtte me een flinke teleurstelling. Mensen uit de sector aan wie ik de app liet zien, reageerden meer dan koel. De vraag die aan het eind van elke presentatie terugkwam, maakte me pijnlijk duidelijk hoezeer ik me had vergist: ‘Waarom zou iemand voor jouw app betalen als we gratis ChatGPT hebben?’ Een certificaat van menselijk auteurschap, gegevensbescherming of zelfs een aanzienlijk efficiëntere werkwijze dan wat een gewone chatbot bood: het deed er allemaal niet toe. Ik hoorde dat van mensen die dagelijks het belang van betrouwbare journalistiek benadrukken.

Het werk aan de app en aan een agentisch AI-systeem dat betrouwbaar genoeg zou zijn om op nieuwsredacties te worden ingezet, duwde me echter in een volledig nieuwe richting. In een poging beter te begrijpen waar de hallucinaties van taalmodellen vandaan komen, begon ik wetenschappelijke papers op arXiv te lezen, en uiteindelijk ontwierp en voerde ik een reeks experimenten uit rond de activatie van SwiGLU-gates in enkele open taalmodellen. De conclusies van dat onderzoek beschreef ik in een paar papers die ik op ResearchGate heb gezet. Ook al lijken sommige stellingen uit die papers me nu megalomaan, en zou de tekst zelf waarschijnlijk een revisie en een wetenschappelijker vocabulaire kunnen gebruiken, ik verwijder ze niet – al was het maar uit wetenschappelijke integriteit.

Vandaag ben ik bescheidener; die bescheidenheid heb ik opgedaan op het oefenterrein van het trainen van taalmodellen, na veel mislukte experimenten en teleurstellingen. Als ik nu over de gevonden GSI-signalen schreef, zou ik eerder spreken van proxysignalen voor kennis dan van ‘epistemisch bewustzijn’ van het model. Anderzijds kon ik op basis van harde data vaststellen dat confabulatie grotendeels een tweestapsproces is, waarbij het model – zonder houvast in feiten – vrijwel altijd een samenhangende vorm verkiest boven de waarheid. Voor mij persoonlijk was dat het boeiendste moment van die experimenten: het ogenblik waarop mijn vroegere interesse voor filosofie en epistemologie een onverwachte, volledig meetbare weerspiegeling vond in de architectuur van transformers. Een andere kwestie is wel de dagelijkse bruikbaarheid van die signalen in productieomstandigheden. Om hun doeltreffendheid bij het opsporen van hallucinaties te vergelijken met andere gangbare methoden, zou zeker aanvullend onderzoek nodig zijn.

Die taak nam me volledig in beslag. Misschien past dat wel een beetje bij mijn karakter – ik stort me graag op bezigheden die een uitdaging vormen, maar me ook iets leren over de wereld om me heen en me helpen die beter te begrijpen. Trouwens, voor ik in de journalistiek belandde, studeerde ik filosofie, met een bijzondere interesse voor wetenschapsfilosofie en epistemologie.

- [Hier vind je een essay waarin ik een aantal van mijn gedachten samenvat](https://www.researchgate.net/publication/397730862)

Het trainen van mijn eigen model draaide uit op een totale ramp. Ik heb waarschijnlijk alle denkbare fouten gemaakt, en dat terwijl ik gewend ben grondig research te doen en een enorme hoeveelheid vakliteratuur had verslonden. De eerste resultaten leken veelbelovend, maar pas later begreep ik dat ze grotendeels te danken waren aan ruisregularisatie. Het voordeel van het model in de ablatietests woog niet op tegen de extra rekenlast (compute) die het berekenen van de Gini van de gate-activaties met zich meebracht. Daarbovenop kwamen nog puur technische uitdagingen bij de training. Hield ik mijn modificaties buiten de normalisatie, dan remden ze het effectieve leren af; paste ik wel normalisatie toe, dan werden ze afgevlakt en werd het model een standaardtransformer, maar dan duurder om te trainen. De details van de architectuur stel ik hier ter download beschikbaar – misschien vindt iemand er bruikbaar materiaal in om te leren van andermans fouten.

Een oplossing die volgens mij ondanks alles aandacht verdient, is de M2-gate. Dankzij een affien anker kan ze op basis van een sigmoïdefunctie blijven werken zonder het risico dat een luie optimizer, op zoek naar een makkelijke manier om de trainingsloss te verlagen, haar naar beneden trekt. In mijn model moest die gate, getraind op Gini-signalen van de activaties, ruis wegsnijden wanneer het model genereerde. Maar het signaal buiten de normalisatie houden leidde – zoals ik al zei – tot een model met een overdreven zekerheidsverdeling: logisch vaardiger, maar de facto slechter in het leren van feiten. Misschien kan deze oplossing in andere modellen van pas komen voor de gating van andere elementen, en het trainingsproces helpen.

Al mijn mislukkingen met het trainen van een model op basis van mijn eigen architectuur ben ik uiteindelijk gaan zien als kapitaal dat je niet mag verspillen. Vandaag train ik mijn eigen kleine model, EUGEN 160M, dat gespecialiseerd is in code. Als ik de benchmarkresultaten tot nu toe vergelijk, ben ik voorzichtig optimistisch en ga ik ervan uit dat het geen verloren tijd zal zijn. Ik koos ervoor een model te trainen dat zich specialiseert in backendtalen, omdat je bij dit soort architecturen de vooruitgang makkelijker kunt monitoren en het model zelf een handige tool voor automatisch aanvullen (autocomplete) kan zijn bij inferentie op een gewone CPU. Je kunt het model testen in een speciaal daarvoor ingerichte terminal op mijn site en het vergelijken met andere open oplossingen van vergelijkbare omvang.

- [Hier kun je het model Eugen 160M testen](https://jakubcwirlej.com/nl/ai-dev/#terminal)

De resultaten tot nu toe zijn vooral te danken aan het nauwgezet bijhouden van de vooruitgang en van de fouten die het model maakt tijdens het genereren. Daardoor kon ik telkens meteen ingrijpen: ik voegde trainingsdata toe die het model versterkten waar het zwaktes vertoonde. Ik paste ook geregeld de technieken STaR en LEMA toe, waarbij ik synthetische data maakte op basis van wat het model zelf had gegenereerd, en vertaaldata die het model de logica van code leren door het voorbeelden te tonen van vertalingen tussen Python en C++, Java en Rust. Al dat materiaal maakt momenteel ongeveer 0,35% van de volledige dataset uit, en dat aandeel zal geleidelijk stijgen naarmate de training vordert.

Het trainen van het model bezorgt me veel plezier en geeft me – net als vroeger de journalistiek – het gevoel dat ik iets belangrijks doe; iets waardoor ik de veranderingen in de wereld om me heen beter kan vatten. Ik kan zelf geen complexe C++-code van nul schrijven, dat klopt, maar ik probeer de logica van de processen te begrijpen. Zo boek ik kleine successen waarmee ik in mijn werk vooruitkom. Ja – met hulp van een AI-codeeragent heb ik een eigen Triton-kernel gebouwd waarmee je een sparse model kunt trainen, met een TPS-winst (Tokens Per Second) van 23% ten opzichte van een dense model; latere optimalisaties van de kernel leverden nog eens 36% op. Ik ben van plan die oplossing te gebruiken bij het trainen van een volgend, iets groter model.

- [De kernel kun je hier downloaden](https://jakubcwirlej.com/files/eugen-sparse.zip)
- [Kernel op Hugging Face](https://huggingface.co/JakCwi/eugen-sparse)

En om terug te komen op het model waarmee het allemaal begon... Vandaag zie ik dat mijn grootste fout niet mijn technische naïviteit was. Dat model kón gewoon niet werken zoals ik had verondersteld. Het probleem was niet technologisch, maar puur filosofisch. En als iemand die filosofie heeft gestudeerd, had ik dat meteen aan het begin moeten zien, met Tarski's waarheidsdefinitie en de stellingen van Gödel in het achterhoofd. Volgens beide kan geen enkel voldoende complex systeem zijn eigen consistentie volledig bewijzen, noch waarheid definiëren uitsluitend vanuit zichzelf. De poging om het model zijn eigen interne toestanden in realtime te laten analyseren, beoordelen en corrigeren, sloot het op in een structurele lus waaruit – zonder metaniveau en extern referentiepunt – simpelweg geen uitweg was.

Toen ik aan dit avontuur begon, wilde ik gewoon een tool maken om journalistieke interviews makkelijker uit te schrijven. Al snel bleek echter dat wie de wereld van kunstmatige intelligentie binnenstapt, een echte sprong maakt in het konijnenhol uit ‘Alice in Wonderland’ – hoe dieper je afdaalt, hoe complexer, gelaagder en fascinerender alles wordt. Mijn eerste app heeft op de mediamarkt dan misschien geen revolutie ontketend, maar die val door het konijnenhol heeft me op een punt gebracht waar ik met succes mijn eigen architectuur train. Ik heb een lange weg afgelegd: van passieve luisteraar van techpodcasts tot iemand die de parameters van modellen fysiek vormgeeft en begrijpt wat er vanbinnen gebeurt.

---

Jakub Ćwirlej — Journalist die met AI bouwt · op de site: https://jakubcwirlej.com/nl/ai-dev/
Volledige context: https://jakubcwirlej.com/context/nl.md · https://jakubcwirlej.com/llms.txt
