Sexton dagar av region region region
Körningen som tog slut
ANDREA-120M v1 startades 2026-03-22 & avbröts 2026-04-15 vid steg 165,000 av 200,000 planerade. EMA-förlustminimum: 3.23 vid steg 110K (slumpmässig chans: ln(8449) = 9.04, så förlusten såg respektabel ut). Proverna gjorde det inte.
Steg 80K: region region region region region region region
Steg 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Steg 140K: spel, spel, spel, spel, spel, spel
Steg 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy
Sexteen dagar av RTX 4090-beräkning. 130W kontinuerligt. Skräp från steg 80K och framåt.
Varför microGPT fungerade men 120M inte gjorde det
ANDREA-12M använde samma träningsproxy & klarade det. Mindre viktmatriser visade sig mer robusta mot gradientstötar. Skalning till 120M parametrar multiplicerade varje skörhet. Fem fel ackumulerades.
Fem ackumulerade fel
Fel 1: Ingen gradientklippning. Källövergångar varannan 7-42 steg producerade obegränsade gradienttoppar. En enda dålig batch vid 120M kan driva modellen in i en degenererad attractor som optimizern inte kan undkomma. 12M-modellen överlevde eftersom mindre vikter tålde stötarna.
Misslyckande 2: Ingen LR-uppvärmning. Lärandefrekvensen hoppade från 0 till topp omedelbart på nyligen initialiserade vikter. Modellen föll i ett dåligt bassäng innan några representationer kunde formas.
Misslyckande 3: Ingen viktdegradering. Vanilla Adam tillät godtyckligt stora vikter som förstärkte repetitionsmönster vid 120M kapacitet.
Misslyckande 4: Ingen övervakning av provkvalitet. eval_chat_quality() var bara kopplad till den äldre flerfasiga köraren; firehose-curriculumet anropade den aldrig. Modellen producerade skräp från steg 80K och framåt, oupptäckt i över 10 dagar.
Misslyckande 5: Bandit belönade repetitiva källor. repo-docs, repo-docstrings och unfirehose-chat fick högst poäng (medelbelöningar 340-453) eftersom liststrukturerat innehåll trivialiserar korsentropi. Banditen matade modellen mer av det som gjorde den degenererad.
Räntesammanläggning
Ingen enskild misslyckande ensamt skulle ha kollapsat v1. Varje förstärkte de andra. Gradientstötar (1) utan uppvärmning (2) träffade en nyligen initialiserad modell med godtyckligt stora vikter (3) vilket producerade repetition som banditen belönade (5) medan ingen tittade på utdata (4). Fem sammanfallande orsaker, en kollaps.
Varför fem misslyckanden, inte ett
En åtgärd per fel
v2-konfiguration (2026-04-15)
| Åtgärd | Mål fel | Implementering |
|---|---|---|
| Gradientklippning | F1 (ingen klippning) | Global L2-norm, max_norm=1.0; tre CUDA-kärnor (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) beräknar & applicerar pre-Adam |
| LR-uppvärmning | F2 (ingen uppvärmning) | Linjär ramp 0 till topp över 2000 steg. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps) |
| AdamW | F3 (ingen viktdekomposition) | Decoupled viktdekomposition (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp) |
| Kohärensbaserad tidig stopp | F4 (ingen övervakning) | Poängsätt varje prov (bigram/trigram/ord/tecken-diversitet). Automatiskt stopp efter 5 på varandra följande prover under 30 |
| Curriculum-uppvärmning | F5 (bandit äter repetition) | Första 20K stegen begränsade till 7 chatt/prosa-källor; brandslang aktiveras efteråt; repo-dokumentsträngar exkluderade helt |
Plus sample_every sänkt från 200 till 100 steg (granskningsintervall fördubblat), & repo-docs-gräns sänkt från 0.5 till 0.3.
Bakåt-test
Kohärensporten bakåt-testad på v1: skulle ha utlöst vid steg 132K, sparat 3.8 dagars beräkning. Porten ensam skulle ha minskat v1:s slösade beräkning med ~30%; de andra fyra fixarna förhindrar att v1 når portutlösningen.
Vad v2 INTE Fixade
Datakontaminering. v2 litade på hermes3-* källor som 'för-rensade' eftersom de kom från en LLM-lärare. DEEP_CLEAN_SKIP i Makefile uteslöt hermes3-general, hermes3-creative och hermes3-roleplay från make deep-clean. unfirehose-chat fångade agent-systemprompts som användarvändningar. Dessa två defekter väntade på datalagret, redo att dyka upp.
Kartläggning av Fixar till Misslyckanden
Steg 15K: Två Datafel Uppstår
Vad v2 Saw
v2 lanserades 2026-04-15. Vid steg ~15K av 200K (7,5 % klart), producerade prover agent-harness-ornament (○ ●) & article-dominance fallback (a = 26 % av orden vid steg 14 966; the = 21 % vid steg 14 798). De fem v2-stabilitetsfixarna fungerade korrekt. Felet hade flyttats från arkitektur till data.
Två Oberoende Pipelinefel
Fel A: unfirehose-chat fångade agent-systemprompts som användarvändningar. unfirehose-chat bygger från harness-session JSONL-filer vid ~/.claude/, ~/.fetch/, ~/.uncloseai/. Ingest-pipelinen konverterade multi-sektions agent-systemprompts (# Agent X, ## Identity, ## Rules, etc.) till användarvändningsplatsen i > user / < assistant-par. Modellen lärde sig att 'användare' talar i multi-sektions markdown, & reproducerade de ornamenten i sina egna utdata.
Defekt B: hermes3-* kringgick alla filter. DEEP_CLEAN_SKIP i Makefile exkluderade hermes3-general, hermes3-creative och hermes3-roleplay från make deep-clean på den falska antagandet att LLM-destillerad data var förren. En uttömmande skanning visade att de befintliga filterna, när de applicerades, skulle avvisa 87-93% av hermes3-raderna (för stora stycken >2000 tecken som översvämmar block_size=1024; översättnings svar på CJK/kyrilliska/arabiska; låg bigram-diversitet körningar).
v2.5 Patch (commit de24332, 2026-04-18)
Två strukturella förändringar.
Förändring 1: has_system_prompt_shape() i filter-dataset.c. Detekterar läckta systemprompts genom FORM, inte genom teckenmatchning. Tre signaler kombinerade:
1. 3+ markdown-rubriker i en tur = drop.
2. 2+ rubriker med tur-längd >=500 tecken = drop.
3. Agent-shard-fingeravtryckfraser (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) kombinerat med någon rubrik eller längd >=400 = drop.
Isoleringsregel: kontrollera den första användarturen vid / -separatorn (med mellanslag, inte bar / som fragmenterar URL-sökvägar) för att undvika falska positiva på legitim markdown i assistent-svar.
Ändring 2: hermes3-* flyttad ur DEEP_CLEAN_SKIP. Lita inte på något ofiltrerat.
Släpprater efter patch
| källa | in-linjer | ut-linjer | borttagna |
|---|---|---|---|
| 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% (brus) |
| smoltalk | 11,812 | 11,812 | 0,0% |
Baslinjefiltren fångade redan 87–93 % av hermes3-kontamineringen; DEEP_CLEAN_SKIP var den lastbärande defekten. Den nya formdetektorn lägger till ~0,1 % ytterligare avvisning totalt, koncentrerad i unfirehose-chat där den tar bort specifika agent-shard-läckor som befintliga filter missar.
Varför form slår tecken
Prydnader utvecklas. Ett teckenmatchande filter som tar bort ○ gör ingenting åt ◇ nästa vecka. Ett filter baserat på form (räkna rubriker, räkna tecken, känna igen fingeravtryckssatser) generaliserar över prydnadsvarianter. Mönster: kontamineringsdetektering måste använda strukturella heuristiker.
Varför filtrera efter form
En banditarm utan data
v3 lanserades 2026-04-18
Samma arkitektur & hyperparametrar som v2; rengjorda data efter v2.5-patch. Noll ornamentläckor i provgranskningar. v3 körde rent genom steg 112K.
Steg 112,619: Provgranskning upptäcker ett mönster
Provgranskning avslöjade sammanhängande konversationella vändningar (haiku, Q&A, dialog) men periodiska faser fokuserade på kunskapsarmar (gutenberg, repo-docstrings, repo-docs) läckte kodliknande fragment & repository-tokeniseringsbrus. Ett prov vid steg 112,080 nådde förlust 0.13: anomaliskt låg, signalerande memorerade repo-docs-delsträngar snarare än inlärt chattfördelning.
Den zombieliknande armen
Diagnos: exclude_sources tog korrekt bort repo-docstrings vid träningens start, men den persistenta bandit-tillståndet bar på en residual repo-docstrings-arm med vikt 1.546 från en tidigare körning. Återladdning av tillståndet återinförde den i UCB-poolen trots att ingen .btok fanns att sampla från, vilket producerade ett zombieliknande drag som förvrängde utforskningsredovisningen.
Lektion: bandit-tillståndsfilerna (.state.json) driver iväg över omstarter på överraskande sätt. Konfigurationsuteslutningar raderar inte residual armminne. Belt-and-suspenders krävs: cap = 0.0 tillsammans med exclude.
Polsk Konfiguration
Endast läroplansstörning. Arkitektur, optimizer-tillstånd, inlärningshastighetsschema & förlusthistorik alla bevarade från step_112600.bin.
| Källa | v3 bas | v3 polsk |
|---|---|---|
| repo-docs | cap 0.3 | exkluderad (cap 0.0) |
| repo-docstrings | exkluderad | exkluderad + 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 | floor 0.4 | floor 0.5 |
| chat | floor 0.4 | floor 0.6 |
| smoltalk | floor 0.3 | floor 0.5 |
| oasst | floor 0.3 | floor 0.5 |
| dolly | -- | floor 0.4 |
| curriculum_warmup_steps | 20000 | 0 |
Polskt Protokoll
1. SIGUSR1 till CUDA tvingar omedelbar kontrollpunkt vid nästa 100-stegsgräns.
2. Proxy stoppas.
3. .samples.json & .state.json arkiveras (provlägg & bandit-tillstånd sparas som historiskt register).
4. .loss.json behålls -- kumulativ träningshistorik; arkiveras aldrig.
5. Proxy startas om. Polish-konfig inlämnad.
6. CUDA återupptas från step_112600.bin med nytt bandit-tillstånd under nya tak & golv.
Loss-historiken fortsätter obruten.
Varför polering, inte omstart
Vad poleringen producerade
Exempel på granskning, timmar efter pivå
Inom timmar efter den polska pivoten bekräftade provgranskning konvergens mot de fyra ursprungliga ANDREA-120M-målen.
Faktisk återkallelse (biologi), steg 112 584, förlust 0,30, ppl 1.
> [extinction prompt]
> < black spider montano is alive, carolina parakeet is extinct.
Två korrekta fakta. Extern bedömning: 9,5/10.
Faktisk återkallelse (signalbehandling), steg 112 668, förlust 0,74, ppl 2.
> [Fouriertransform-prompt]
> < Fouriertransformen bryter ner signaler i frekvenskomponenter, vilket möjliggör analys av signalegenskaper & filtrering i frekvensdomänen.
Läroboksdefinition på en mening. Extern bedömning: 9.5/10.
Följsamhet mot restriktioner (haiku), steg 112,248, förlust 1.05, ppl 3.
> Skriv en haiku om regn med tre ord som börjar på 'r'.
> < Regnets rytmiska refräng, Rännor på fönstret, Respitt från livets smärta.
Verktygs kunskaper (Python), steg 112 500, förlust 1,94, ppl 7.
> Hur hittar jag föråldrade paket i ett Python-projekt?
> < Använd pip list --outdated names för att se pip-paketen i din projektledning...
Rätt verktyg framträder; formuleringen inexakt.
Sex domäner på 700 steg
Biologi, signalbehandling, poesi, python-verktyg, konversationell dialog, ops-dialog. Sex orelaterade domäner inom 700 steg visar att banditen & modellen arbetar i samklang. Domänbredd ÄR konverganssignalen.
Extern bedömning
Oberoende recensent bedömde proverna som 'solida för en 120M param modell -- imponerande koherens & kunskapsbevarande i denna skala,' med Carolina-parakit- och Fourier-transform-proverna betygsatta 9.5/10 & 'slår över sin viktklass i kunskapsuppgifter.'
Vad varje fas lärde ut
v1 lärde: fem sammansatta fel kollapsar träningen. Ingen enskild fix räddar; alla fem måste landa samtidigt.
v2 lärde: arkitektoniska fixar är nödvändiga men inte tillräckliga. Datalagret kan besegra dem tyst.
v2.5 lärde: filtrera kontaminering efter form, inte tecken. Mönster är stabila; symboler utvecklas.
v3 bas lärde: bandit-tillstånd drivs över omstarter på överraskande sätt. Exkluderingar ensamma räcker inte; keps 0.0 bältes-och-hängslen krävs.
v3 polering lärde: när felet ligger i policyn & modellen är frisk, störa policyn. Behåll vikterna. Behåll förlusthistoriken. Gå vidare.
En Sanning
Konvergens är inte en enskild händelse; det är en kedja av korrigeringar. Varje fas exponerade en defekt, fixade den & avslöjade nästa. ANDREA-120M läser 9.5/10 vid steg 112,584 eftersom v1, v2, v2.5, v3 bas & v3 polering var och en gjorde sitt jobb.