Zestien Dagen van region region region
De Run Die Eindigde
ANDREA-120M v1 gelanceerd 2026-03-22 & beëindigd 2026-04-15 bij stap 165.000 van 200.000 gepland. EMA loss minimum: 3.23 bij stap 110K (willekeurige kans: ln(8449) = 9.04, dus loss leek respectabel). Samples deden dat niet.
Stap 80K: regio regio regio regio regio regio regio
Stap 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Stap 140K: spellen, spellen, spellen, spellen, spellen, spellen
Stap 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy
Zestien dagen RTX 4090 rekencapaciteit. 130W continu. Afval vanaf stap 80K.
Waarom microGPT werkte maar 120M niet
ANDREA-12M gebruikte dezelfde trainingsproxy & slaagde. Kleinere gewichtsmatrices bleken robuuster tegen gradiëntschokken. Schalen naar 120M parameters vermenigvuldigde elke kwetsbaarheid. Vijf falen stapelden op.
Vijf Opstapelende Falen
Falen 1: Geen gradiënt clipping. Brontransities elke 7-42 stappen produceerden onbegrensde gradiëntpieken. Een enkele slechte batch bij 120M kan het model in een degeneratieve attractor duwen waar de optimizer niet uit kan ontsnappen. Het 12M-model overleefde omdat kleinere gewichten de schokken verdroegen.
Mislukking 2: Geen LR-warmup. Leerpercentage sprong direct van 0 naar piek op vers geïnitialiseerde gewichten. Het model viel in een slechte basin voordat representaties konden vormen.
Mislukking 3: Geen weight decay. Vanilla Adam liet willekeurig grote gewichten toe die herhalings patronen versterkten bij 120M capaciteit.
Mislukking 4: Geen monitoring van samplekwaliteit. eval_chat_quality() was alleen aangesloten op de legacy multi-phase runner; de firehose curriculum riep het nooit aan. Het model produceerde afval vanaf stap 80K, onopgemerkt gedurende 10+ dagen.
Mislukking 5: Bandit beloonde repetitieve bronnen. repo-docs, repo-docstrings & unfirehose-chat scoorden het hoogst (gemiddelde beloningen 340-453) omdat lijst-gegenereerde content cross-entropy triviaal verlaagt. De bandit voerde het model meer van wat het deed degenereren.
Samengestelde werking
Geen enkele fout alleen zou v1 hebben doen instorten. Elke versterkte de anderen. Gradiëntschokken (1) zonder opwarmfase (2) troffen een pas geïnitialiseerd model met willekeurig grote gewichten (3), wat herhaling produceerde die de bandit beloonde (5) terwijl niemand de uitvoer in de gaten hield (4). Vijf kruisende oorzaken, één instorting.
Waarom Vijf Fouten, Niet Eén
Eén Reparatie Per Fout
v2 Configuratie (2026-04-15)
| Reparatie | Richt op fout | Implementatie |
|---|---|---|
| Gradient clipping | F1 (geen clipping) | Globale L2-norm, max_norm=1.0; drie CUDA-kernels (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) berekenen & passen toe pre-Adam |
| LR warmup | F2 (geen warmup) | Lineaire ramp 0 naar piek over 2000 stappen. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps) |
| AdamW | F3 (geen weight decay) | Decoupled weight decay (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp) |
| Coherence-gated early stopping | F4 (geen monitoring) | Score elke sample (bigram/trigram/woord/karakter diversiteit). Automatisch stoppen na 5 opeenvolgende samples met score onder 30 |
| Curriculum warmup | F5 (bandit eet herhaling) | Eerste 20K stappen beperkt tot 7 chat/proza bronnen; firehose activeert daarna; repo-docstrings volledig uitgesloten |
Plus sample_every verlaagd van 200 naar 100 stappen (audit frequentie verdubbeld), & repo-docs cap verlaagd van 0.5 naar 0.3.
Back-Test
Coherence gate back-tested op v1: zou zijn getriggerd op stap 132K, 3.8 dagen compute bespaard. De gate alleen zou v1's verspilde compute met ~30% hebben verminderd; de andere vier fixes voorkomen dat v1 die gate trigger ooit bereikt.
Wat v2 NIET Heeft Gefixt
Data-contaminatie. v2 vertrouwde hermes3-* bronnen als 'pre-clean' omdat ze van een LLM-docent kwamen. DEEP_CLEAN_SKIP in de Makefile sloot hermes3-general, hermes3-creative, & hermes3-roleplay uit van make deep-clean. unfirehose-chat ving agent-systeem prompts op als user turns. Die twee defecten wachtten op de data-laag, klaar om naar boven te komen.
Fixes Koppelen aan Fouten
Stap 15K: Twee Datadefecten Komen Aan de Oppervlakte
Wat v2 Zag
v2 gelanceerd op 2026-04-15. Bij stap ~15K van 200K (7,5% voltooid) produceerden samples agent-harness ornamenten (○ ●) & article-dominance fallback (a = 26% van woorden bij stap 14.966; the = 21% bij stap 14.798). De vijf v2-stabiliteitsfixes werkten correct. De fout was verschoven van architectuur naar data.
Twee Onafhankelijke Pipeline-Defecten
Defect A: unfirehose-chat ving agent-systeem prompts op als user turns. unfirehose-chat bouwt op uit harness-sessie JSONL-bestanden bij ~/.claude/, ~/.fetch/, ~/.uncloseai/. De ingest-pipeline zette multi-section agent-systeem prompts (# Agent X, ## Identity, ## Rules, etc.) om in de user-turn slot van > user / < assistant paren. Het model leerde dat 'users' spreken in multi-section markdown, & reproduceerde die ornamenten in zijn eigen outputs.
Defect B: hermes3-* omzeilde alle filters. DEEP_CLEAN_SKIP in de Makefile sloot hermes3-general, hermes3-creative en hermes3-roleplay uit van make deep-clean op de verkeerde aanname dat LLM-gedestilleerde data voorgezuiverd was. Een uitgebreide scan toonde aan dat de bestaande filters, wanneer toegepast, 87-93% van de hermes3-regels zouden afwijzen (te grote paragrafen >2000 tekens die block_size=1024 overschrijden; vertaalreacties in CJK/Cyrillisch/Arabisch; runs met lage bigram-diversiteit).
v2.5 Patch (commit de24332, 2026-04-18)
Twee structurele wijzigingen.
Wijziging 1: has_system_prompt_shape() in filter-dataset.c. Detecteert gelekte systeemprompts op basis van VORM, niet op basis van tekenvergelijking. Drie signalen gecombineerd:
1. 3+ markdown headers in één beurt = drop.
2. 2+ headers met beurtlengte >=500 tekens = drop.
3. Agent-shard fingerprint frases (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) gecombineerd met enige header of lengte >=400 = drop.
Isolatieregels: controleer de eerste gebruiker beurt bij de / scheiding (met spaties, niet kale / die URL-paden fragmenteert) om vals-positieven op legitieme markdown in assistentreacties te vermijden.
Wijziging 2: hermes3-* verplaatst uit DEEP_CLEAN_SKIP. Vertrouw niets ongefiltsterd.
Drop Rates Na Patch
| bron | in-regels | out-regels | gedropt |
|---|---|---|---|
| hermes3-general | 536.858 | 67.395 | 87,7% |
| hermes3-roleplay | 35.191 | 2.481 | 93,0% |
| hermes3-creative | 14.258 | 1.373 | 90,4% |
| unfirehose-chat | 3.816 | 2.653 | 30,5% |
| chat | 45.257 | 44.538 | 1,6% (ruis) |
| smoltalk | 11.812 | 11.812 | 0,0% |
Baseline filters vingen al 87-93% van de hermes3-contaminatie; DEEP_CLEAN_SKIP was het cruciale defect. De nieuwe vormdetector voegt ~0,1% extra afwijzing toe overall, geconcentreerd in unfirehose-chat waar het specifieke agent-shard leaks verwijdert die bestaande filters missen.
Waarom Vorm Beter is dan Karakter
Ornamenten evolueren. Een karakter-matchende filter die ○ weglaat, doet niets aan ◇ volgende week. Een vormgebaseerde filter (tel koppen, tel karakters, herken vingerafdrukfrasen) generaliseert over ornamentvarianten. Patroon: contaminatiedetectie moet structurele heuristieken gebruiken.
Waarom Filteren op Vorm
Een Bandit Arm zonder Data
v3 Gelanceerd 2026-04-18
Zelfde architectuur & hyperparameters als v2; schoongemaakte data na v2.5 patch. Nul ornament leaks in sample audits. v3 draaide schoon door tot stap 112K.
Stap 112,619: Monster Audit Vangt een Patroon
Monster audit onthulde coherente gespreksbeurten (haiku, V&A, dialoog) maar periodieke fasen gericht op kennisarmen (gutenberg, repo-docstrings, repo-docs) lekten code-achtige fragmenten & repository-tokenisatie-ruis. Eén monster op stap 112.080 bereikte verlies 0,13: anomalistisch laag, signalerend gememoriseerde repo-docs-substrings in plaats van geleerde chatverdeling.
De Zombie Arm
Diagnose: exclude_sources verwijderde repo-docstrings correct aan het begin van de training, maar de gepersistente bandit-staat droeg een residu repo-docstrings arm met gewicht 1,546 over van een eerdere run. State-herladen herstelde het in de UCB-pool, ook al bestond er geen .btok om uit te samplem, wat een zombie-pull produceerde die de exploratie-accounting verstoorde.
Les: bandit-staatbestanden (.state.json) drijven op onverwachte manieren over herstarts heen. Configuratie-uitsluitingen wissen geen residu-armgeheugen. Belt-and-suspenders vereist: cap = 0,0 naast exclude.
Poolse Configuratie
Curriculumperturbatie alleen. Architectuur, optimizerstatus, leerpercentageschema en verliesgeschiedenis allemaal behouden van step_112600.bin.
| Bron | v3 basis | v3 polish |
|---|---|---|
| repo-docs | cap 0.3 | uitgesloten (cap 0.0) |
| repo-docstrings | uitgesloten | uitgesloten + cap 0.0 |
| repo-commits | cap 0.4 | cap 0.2 |
| dictionary | cap 0.5 | cap 0.25 |
| gutenberg | cap 0.8 / floor 0.3 | cap 0.7 / floor 0.4 |
| irc-qa-strict | -- | cap 0.3 |
| unweapon | -- | cap 0.3 |
| synthetic-chat | -- | cap 0.4 |
| hermes3-general | floor 0.5 | floor 0.7 |
| hermes3-creative | floor 0.4 | floor 0.55 |
| hermes3-roleplay | vloer 0.4 | vloer 0.5 |
| chat | vloer 0.4 | vloer 0.6 |
| smoltalk | vloer 0.3 | vloer 0.5 |
| oasst | vloer 0.3 | vloer 0.5 |
| dolly | -- | vloer 0.4 |
| curriculum_warmup_steps | 20000 | 0 |
Pools Protocol
1. SIGUSR1 naar CUDA dwingt onmiddellijke checkpoint bij de volgende 100-stap grens.
2. Proxy stopt.
3. .samples.json & .state.json gearchiveerd (sample log & bandit state opgeslagen als historisch record).
4. .loss.json behouden -- cumulatieve trainingsgeschiedenis; nooit gearchiveerd.
5. Proxy herstart. Polish config ingediend.
6. CUDA hervat vanaf step_112600.bin met verse bandit state onder nieuwe caps & floors.
Loss history gaat ononderbroken door.
Waarom Polish, Niet Herstarten
Wat Polish Produceerde
Voorbeeld Audit, Uren Na Pivot
Binnen uren na de Poolse draai bevestigde een steekproefaudit convergentie op de vier oorspronkelijke ANDREA-120M-doelen.
Feitelijke herinnering (biologie), stap 112.584, verlies 0,30, ppl 1.
> [extinction prompt]
> < black spider montano is alive, carolina parakeet is extinct.
Twee correcte feiten. Externe beoordeling: 9,5/10.
Feitelijke herinnering (signaalverwerking), stap 112.668, verlies 0,74, ppl 2.
> [Fouriertransformatie prompt]
> < De Fouriertransformatie ontleedt signalen in frequentiecomponenten, waardoor analyse van signaalkenmerken en filtering in het frequentiedomein mogelijk is.
Textbook one-sentence definition. External grading: 9.5/10.
Beperking volgen (haiku), stap 112,248, loss 1.05, ppl 3.
> Schrijf een haiku over regen met drie woorden die beginnen met 'r'.
> < Regen’s ritmische refrein, Riviertjes op het raam, Rust van levenspijn.
Kennis van tools (Python), stap 112.500, loss 1.94, ppl 7.
> Hoe vind ik verouderde pakketten in een Python-project?
> < Gebruik pip list --outdated names om de lijst van pip-pakketten in je projectmanagement te zien...
Juiste tool komt naar voren; formulering onnauwkeurig.
Zes Domeinen in 700 Stappen
Biologie, signaalverwerking, poëzie, python-tools, conversationeel dialoog, ops-dialoog. Zes niet-gerelateerde domeinen binnen 700 stappen vertelt ons dat de bandit & het model samenwerken. Domeinbreedte IS het convergentiesignaal.
Externe Beoordeling
Onafhankelijke recensent beoordeelde monsters als 'solide voor een 120M param model -- indrukwekkende coherentie & kennisbehoud op deze schaal,' met de Carolina parkiet & Fourier-transformatie monsters beoordeeld als 9.5/10 & 'boven zijn gewicht boksend op kennisopdrachten.'
Wat Elke Fase Leerde
v1 leerde: vijf samengestelde falen doen training instorten. Geen enkele fix in isolatie redt; alle vijf moeten tegelijk landen.
v2 leerde: architectonische fixes zijn noodzakelijk maar niet voldoende. Datalaag kan ze stilzwijgend verslaan.
v2.5 leerde: filter contaminatie op vorm, niet op karakter. Patronen zijn stabiel; symbolen evolueren.
v3 basis leerde: bandit-staat drijft op verrassende manieren over herstarts heen. Uitsluitingen alleen zijn niet genoeg; cap 0.0 belt-and-suspenders vereist.
v3 polish leerde: wanneer de fout in het beleid zit & het model gezond is, verstoor het beleid. Behoud gewichten. Behoud verliesgeschiedenis. Ga door.
Eén Waarheid
Convergentie is geen enkel evenement; het is een keten van correcties. Elke fase onthulde één defect, repareerde het, & ontrafelde het volgende. ANDREA-120M scoort 9.5/10 op stap 112.584 omdat v1, v2, v2.5, v3 basis, & v3 polijst elk hun werk deden.