English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ospite
1 / ?
torna alle lezioni

eval_chat_quality() Era Collegato al Runner Sbagliato

Un Fallimento di 10 Giorni Che Avrebbe Dovuto Fermarsi al Giorno 3

ANDREA-120M v1 è stato addestrato per 16,1 giorni su una RTX 4090 a 130W continui. Gli output di esempio sono stati salvati ogni 200 passi ma mai analizzati durante l'esecuzione. Al passo 80K (giorno 4), i campioni recitavano region region region region region. Al passo 110K, ''''' ''''' '' ''' ''. L'addestramento è continuato per altri 11 giorni prima di essere interrotto manualmente al passo 165K.


Cosa È Andato Storto con l'Allarme Antifumo

eval_chat_quality() esisteva nel codebase. Valutava la qualità dei sample. Funzionava persino correttamente. Ma era collegato solo al legacy multi-phase runner. Il v1 firehose curriculum usava un percorso di codice diverso e non invocava mai l'eval. L'allarme antincendio era in un'altra stanza con la porta chiusa.


Il Costo

16.1 giorni di compute. 130W continui. ~50 kWh di elettricità. Il modello non ha prodotto output utilizzabile in nessun momento. Loss EMA ha raggiunto il minimo a 3.23 al passo 110K, poi è risalito a 4.54 al passo 165K quando l'addestramento si è fermato. Numericamente ragionevole; semanticamente vuoto.


La probabilità casuale per un vocabolario di 8449 token è 9.04. v1 ha raggiunto una loss EMA di 3.23 mentre produceva region region region. La loss da sola non può rilevare il collasso della coerenza. Un modello che minimizza la cross-entropy ripetendo un token ad alta frequenza viene numericamente premiato per questa modalità di fallimento.

Perché le Curve di Loss Hanno Mentito

v1 ha raggiunto una loss EMA di 3.23 (ben al di sotto della probabilità casuale di 9.04) mentre produceva `region region region region`. Spiega in 2-3 frasi come un modello possa ottenere una loss numericamente ragionevole mentre produce output degenere. Fai riferimento al meccanismo della cross-entropy.

Valuta Ogni Campione su Quattro Assi

Il Punteggio Composito

v2 include un gate di coerenza che valuta ogni campione (prelevato ogni 100 step durante l'addestramento firehose) su quattro metriche:


Flusso del gate di coerenza


MetricaIntervalloCosa rileva
Diversità bigram0-35Ripetizione a livello di due token (region region)
Diversità trigram0-35Ripetizione a livello di tre token (a, b, a, b, a, b)
Presenza parole inglesi0-20Deriva in non-inglese (CJK, cirillico, gibberish)
Diversità caratteri0-10Collasso su singolo carattere (''''', ... ... ...)

Totale possibile: 100. Soglia: 30.


Perché Quattro Metriche, Non Una

Ogni metrica cattura una modalità di fallimento diversa:


- Un modello che collassa su un unico bigramma fallisce la Diversità Bigramma ma passa la Diversità Carattere.

- Un modello che produce rumore di punteggiatura (''''' ''''' '') fallisce la Diversità Carattere ma potrebbe passare la Diversità Bigramma se le coppie di punteggiatura variano.

- Un modello che scivola in una lingua non inglese (contaminazione da addestramento alla traduzione) fallisce la presenza di parole inglesi ma passa la diversità Bigram & Trigram se produce mandarino grammaticale.

- Un modello che produce a, b, a, b, a, b passa Bigram (a-b & b-a appaiono) ma fallisce Trigram (a-b-a, b-a-b dominano).


Insieme, le quattro metriche coprono lo spazio dei fallimenti. Un punteggio composito inferiore a 30 significa che almeno un asse è collassato abbastanza gravemente da trascinare giù l'intero campione.


Contatore Consecutivo

Auto-halt si attiva dopo 5 campioni consecutivi con punteggio inferiore a 30. Singoli campioni cattivi possono verificarsi durante transizioni di fase o estrazioni da fonti rare; cinque di fila significano che il modello ha smesso di riprendersi. Con campioni prelevati ogni 100 passi, 5 campioni degenerati consecutivi = 500 passi di collasso della coerenza confermato.

Calcola un Punteggio

Un campione v1 al passo 80K legge `region region region region region region region region`. Stima i punteggi: (a) Diversità bigram, (b) Diversità trigram, (c) Presenza di parole inglesi, (d) Diversità dei caratteri. Calcola il totale. Il gate si attiva su questo campione da solo?

Come Sarebbe Apparse v1

Trigger Back-Tested

Dato i campioni memorizzati di v1, applicando retroattivamente il gate di coerenza v2 mostra che il gate si sarebbe attivato al passo 132K. v1 è arrivata al passo 165K prima della terminazione manuale. Il gate avrebbe fermato l'addestramento 33.000 passi prima.


Compute Risparmiato

RTX 4090 addestrata a ~6 passi/min in FP16 cuBLAS. 33.000 passi / 6 passi/min = 5.500 minuti = 91,6 ore = 3,8 giorni di compute risparmiati. A 130W continui, sono ~12 kWh di elettricità, più 3,8 giorni di usura GPU.


Perché Step 132K e Non Step 80K

v1 ha prodotto region region region allo step 80K. Perché il gate non si è attivato allora?


Perché tra i campioni cattivi apparivano campioni buoni intermittenti. Il bandit ciclava attraverso le fonti ogni 7-42 passi. Anche un modello degenerato occasionalmente produceva output più diversi quando campionava da una fonte diversa, resettando momentaneamente il contatore consecutivo. Allo step 132K, il modello era collassato abbastanza profondamente da rendere inevitabili 5 campioni degenerati consecutivi (500 passi).


Lezione: Collega l'Allarme Antifumo a Ogni Cavo

v2 collega eval_chat_quality() direttamente al codice di gestione dei campioni del curriculum firehose, non solo al runner legacy. Ogni campione, ogni esecuzione, ogni percorso di codice: la stessa barriera. La correzione ha richiesto ~30 righe di codice.

Generalizza il Pattern Ingegneristico

v1 ha sprecato 3.8 giorni perché eval_chat_quality() era collegato solo a un runner. Argomenta (in 2-3 frasi) quale principio ingegneristico il gate di coerenza v2 stabilisce per l'addestramento ML a lungo termine. Fai riferimento sia alla scelta del cablaggio sia al design della metrica composita.