eval_chat_quality() Var Kopplad till Fel Körare
Ett 10-dagars Fel Som Borde Ha Stoppats Dag 3
ANDREA-120M v1 tränades i 16,1 dagar på en RTX 4090 vid 130W kontinuerligt. Provutdata lagrades var 200:e steg men analyserades aldrig under körningen. Vid steg 80K (dag 4) läste proverna region region region region region. Vid steg 110K, ''''' ''''' '' ''' ''. Träningen fortsatte i ytterligare 11 dagar innan den manuelt avbröts vid steg 165K.
Vad Gick Fel Med Rökdetektorn
eval_chat_quality() fanns i kodbasen. Den bedömde provkvalitet. Den fungerade till och med korrekt. Men den var bara kopplad till den äldre multi-fas-köraren. V1-firehose-curriculumet använde en annan kodväg & anropade aldrig evalen. Rökvarningen stod i ett annat rum med dörren stängd.
Kostnaden
16,1 dagars beräkning. 130W kontinuerligt. ~50 kWh el. Modellen producerade ingen användbar utdata vid någon punkt. Loss EMA bottnade vid 3,23 vid steg 110K, klättrade sedan tillbaka till 4,54 vid steg 165K när träningen stoppades. Numeriskt rimligt; semantiskt tomt.
Slumpmässig chans för ett 8449-token-vokabulär är 9,04. v1 nådde 3,23 EMA-förlust medan den producerade region region region. Förlust ensam kan inte detektera sammanhängningskollaps. En modell som minimerar korsentropi genom att upprepa en högfrevent token belönas numeriskt för felmoden.
Varför Förlustkurvor Ljög
Poängsätt Varje Prov på Fyra Axlar
Den Komposita Poängen
v2 levererar en koherensport som poängsätter varje prov (taget var 100:e steg under firehose-träning) på fyra metriker:
| Mätvärde | Intervall | Vad det fångar |
|---|---|---|
| Bigram-diversitet | 0-35 | Repetition på tvåtoken-nivå (region region) |
| Trigram-diversitet | 0-35 | Repetition på tre-token-nivå (a, b, a, b, a, b) |
| Engelska ords förekomst | 0-20 | Avvikelse till icke-engelska (CJK, kyrilliska, gibberish) |
| Teckendiversitet | 0-10 | Kollaps till enkeltecken (''''', ... ... ...) |
Total possible: 100. Threshold: 30.
Varför fyra mått, inte ett
Varje mått fångar en annan felmodus:
- En modell som kollapsar till ett enda bigram misslyckas med Bigram-diversitet men klarar Character-diversitet.
- En modell som producerar punkuationsbrus (''''' ''''' '') misslyckas med Character-diversitet men kan klara Bigram-diversitet om punkuationparen varierar.
- En modell som glider in i icke-engelska (översättnings träning kontaminering) misslyckas med engelsk ordnärvaro men klarar Bigram & Trigram mångfald om den producerar grammatisk mandarin.
- En modell som producerar a, b, a, b, a, b klarar Bigram (a-b & b-a förekommer) men misslyckas med Trigram (a-b-a, b-a-b dominerar).
Tillsammans spänner de fyra måtten över misslyckanderymden. Ett sammansatt resultat under 30 betyder att minst en axel kollapsat tillräckligt illa för att dra ner hela provet.
Konsekutiv Räknare
Auto-halt utlöses efter 5 konsekutiva prover med resultat under 30. Enstaka dåliga prover kan inträffa under fasövergångar eller sällsynta källhämtningar; fem i rad betyder att modellen slutat återhämta sig. Med prover tagna var 100:e steg, 5 konsekutiva degenererade prover = 500 steg av bekräftad koherens kollaps.
Beräkna ett Resultat
Hur v1 skulle ha sett ut
Bakåstestade utlösning
Givet v1:s lagrade prover, tillämpning av v2:s koherensgrind retroaktivt visar att grinden skulle ha utlösts vid steg 132K. v1 körde till steg 165K innan manuell avbrott. Grinden skulle ha stoppat träningen 33 000 steg tidigare.
Beräknat Sparat
RTX 4090 tränad med ~6 steg/min i FP16 cuBLAS. 33 000 steg / 6 steg/min = 5 500 minuter = 91,6 timmar = 3,8 dagars beräkning sparad. Vid 130 W kontinuerligt är det ~12 kWh el, plus 3,8 dagars GPU-slitage.
Varför Steg 132K & Inte Steg 80K
v1 producerade region region region vid steg 80K. Varför utlöstes inte grinden då?
Eftersom intermittenta bra prover dök upp mellan de dåliga. Banditen cyklade genom källor var 7–42 steg. Till och med en degenererad modell producerade ibland mer varierade utdata när den samplades från en annan källa, vilket tillfälligt återställde räknaren för på varandra följande. Vid steg 132K hade modellen kollapsat tillräckligt djupt för att 5 på varandra följande degenererade prover (500 steg) bli oundvikliga.
Lektion: Koppla rökdetektorn till varje körning
v2 kopplar in eval_chat_quality() direkt i firehose-curriculums provhanteringskodväg, inte bara den äldre körningen. Varje prov, varje körning, varje kodväg: samma grind. Fixen tog ~30 rader kod.