Lezione di v1: La Loss Sembra Buona, l'Output È Spazzatura
Una Storia di Avvertimento
ANDREA-120M v1 ha raggiunto una loss EMA di 3.43 allo step 110K, ben al di sotto del caso casuale (ln(8449) = 9.04). Il numero sembrava rispettabile. I sample no.
passo 80K: regione regione regione regione regione regione regione
passo 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
passo 140K: giochi, giochi, giochi, giochi, giochi, giochi
passo 165K: Buddy Buddy Buddy Buddy Buddy Buddy Buddy Buddy
v1 non aveva monitoraggio dei sample cablato. Il modello ha prodotto spazzatura a ciclo di ripetizione dal passo 80K in poi & l'addestramento è continuato per altri 85K passi prima che qualcuno se ne accorgesse. 10+ giorni di compute sprecati perché nessuno ha letto l'output.
Cosa Nasconde la Loss
La cross-entropy loss misura quanto il modello è sorpreso dal token successivo. Un modello che emette region region region region sembra non sorpreso dalla propria uscita (ha predetto la stessa parola ogni volta). La loss numerica può rimanere bassa mentre la qualità semantica collassa.
La Correzione v2
sample_every = 100 passi. Genera 420 token in forma libera. Arresto anticipato con gating di coerenza che valuta ogni campione su diversità bigram, diversità trigram, presenza di parole inglesi e diversità di caratteri (scala 0-100). Auto-arresto dopo 5 campioni consecutivi con punteggio inferiore a 30. Test retroattivo su v1: si sarebbe attivato al passo 132K, risparmiando 3,8 giorni.
Leggere i campioni non è opzionale. Leggere i campioni è il modo in cui sappiamo che la loss significa qualcosa.
Loss vs Qualità dei Campioni
ppl = exp(loss)
La Conversione
La cross-entropy loss riporta in nats. La perplexity riporta il numero equivalente di token equamente probabili considerati dal modello a ogni passo. Conversione: ppl = exp(loss).
Casuale su un vocabolario di 8449 token: loss = ln(8449) = 9.04, ppl = 8449. Predizione perfetta memorizzata: loss = 0, ppl = 1.
Una Tabella di Riferimento
| loss | ppl | Lettura |
|---|---|---|
| 9.04 | 8449 | casuale su vocabolario completo |
| 5.00 | 148 | addestramento iniziale, struttura di base |
| 3.00 | 20 | apprendimento distribuzione del vocabolario |
| 2.00 | 7 | esperto ma impreciso |
| 1.00 | 2.7 | emergenza del rispetto dei vincoli |
| 0.70 | 2 | frase fatta da manuale |
| 0.30 | 1 | richiamo fattuale, per lo più memorizzato |
| 0.13 | 1 | AVVISO: sottostringa memorizzata |
| 0.00 | 1 | memorizzazione perfetta |
Loss Per-Sample vs Loss EMA
La loss EMA (media mobile esponenziale su molti step) riporta la salute complessiva dell'addestramento. La loss per-sample riporta la qualità di un campione specifico. Le due divergono: la EMA potrebbe rimanere a 2.0 mentre i campioni individuali variano da 0.13 a 4.0 a seconda del prompt selezionato dal bandit.
Leggere la loss del campione individuale è il modo in cui catturiamo gli outlier. La loss EMA non ci dice nulla su se un campione ha memorizzato una sottostringa repo-docs; la loss per-sample sì.
Leggere Tre Valori di Loss
Percorrendo la Finestra di Audit
Una Finestra di 700 Passi
Tra il passo 111.996 e 112.668, ANDREA-120M ha prodotto campioni che spaziano su sei domini di conoscenza non correlati. Ognuno ricade in un tier di loss:
Livello 1: Richiamo Fattuale (loss 0.30, ppl 1)
step 112,584, biology
> [extinction prompt]
> < black spider montano is alive, carolina parakeet is extinct.
Due fatti corretti. Carolina parakeet dichiarata estinta nel 1939; black spider monkey esistente. ppl 1 significa che il modello ha scelto il token corretto a ogni passo. Valutazione esterna: 9.5/10.
Livello 2: One-Liner da Manuale (loss 0.74, ppl 2)
step 112,668, elaborazione del segnale
> [Fourier transform prompt]
> < La trasformata di Fourier decompone i segnali in componenti di frequenza, consentendo l'analisi delle caratteristiche del segnale e il filtraggio nel dominio della frequenza.
Una definizione di una frase da manuale. Decomposizione tempo-frequenza con termini di applicazione corretti. Valutazione esterna: 9.5/10.
Livello 3: Rispetto dei Vincoli (loss 1.05, ppl 3)
passo 112,248, poesia
> Scrivi un haiku sulla pioggia usando tre parole che iniziano con 'r'.
> < Il ritmo rifrangente della pioggia, Rivoli sul finestrino, Riserbo dal dolore della vita.
Tre parole con 'r' (Rain, Rivulets, Respite), tre linee, struttura haiku preservata, coerenza semantica intorno alla pioggia. ppl 3 = il modello ha considerato pochi candidati a ogni passo ma è rimasto entro il vincolo.
Livello 4: Conoscitore ma Impreciso (perdita 1.94, ppl 7)
step 112,500, python tools
> Come trovo i pacchetti obsoleti in un progetto Python?
> < Usa pip list --outdated per vedere l'elenco dei pacchetti pip nel tuo gestore di progetto, o dovrebbe essere tramite pyenv per ottenere pacchetti più automatici.
Il comando kernel corretto (pip list --outdated) emerge dai dati di addestramento. La fluidità della frase è ancora in sviluppo. Piccolo errore: pyenv gestisce le versioni di Python, non i pacchetti. ppl 7 significa che il modello ha considerato ~7 continuazioni plausibili a ogni passo; non tutte erano precisamente corrette.
Livello 5: ALERT, Sottostringa Memorizzata (loss 0.13, ppl 1)
step 112,080, anomalo
Loss 0.13 si trova SOTTO il livello da manuale. Il modello è troppo sicuro su questo campione. Diagnosi: una sottostringa repo-docs memorizzata, non chat appresa. Il bandit ha estratto un braccio zombie repo-docstrings con peso 1.546 da uno stato di esecuzione precedente, & il campione ha riprodotto un chunk verbatim dei dati di addestramento.
Una loss anomalmente bassa è un avviso di memorizzazione, non un segnale di qualità. Sotto 0.20 significa: verifica se il modello sta generando o copiando.
Sei Domini in 700 Passi
Biologia (pappagallino), elaborazione del segnale (Fourier), poesia (haiku), strumenti python (pip), dialogo conversazionale, dialogo operativo. Sei domini non correlati entro 700 passi ci dice che il bandit sta facendo lavoro diversificato, non è bloccato su una sola fonte. La ampiezza del dominio È una metrica di qualità.
Diagnosi di Tre Campioni
Perché Inviare Campioni a Occhi Esterni
Cosa Ha Catturato la Valutazione Esterna
L'audit interno dei campioni ci ha detto che il modello produceva biologia, elaborazione del segnale, poesia e Python su richiesta. La valutazione esterna della qualità della chat ha valutato quei campioni '9.5/10' e 'sopra la media per compiti di conoscenza a questa scala'.
Le risposte della revisione interna: il bandit ha fatto un lavoro diversificato? Le risposte della revisione esterna: un lettore umano valuterebbe questi output come buoni?
Perché Entrambi Sono Importanti
L'audit interno cattura i fallimenti strutturali: collasso della ripetizione, picchi di memorizzazione, braccia zombie a bassa diversità. Livelli di loss, diversità n-gram e ampiezza del dominio sono tutti osservabili dal proxy.
La valutazione esterna rileva i fallimenti di qualità semantica: fatti confidentemente sbagliati, frasi goffe, sfumature mancanti. Nessuno di questi appare nei numeri di loss.
Metodologia
La dashboard di addestramento di ANDREA su training.ai.unturf.com/dashboard è intenzionalmente pubblica e in sola lettura. Chiunque può interrogare .loss.json, .samples.json e lo stato del bandit in tempo reale. I revisori esterni avevano accesso agli stessi dati dell'operatore.
9.5/10 da un lettore indipendente, su campioni estratti al passo 112.584 su 200.000, con piena provenienza: quel risultato è riproducibile, verificabile e non manipolabile. Gli stessi campioni, gli stessi valori di loss, lo stesso stato del bandit sono visibili a chiunque guardi.
Due Segnali Indipendenti
Interno: bassa perdita + alta diversità + copertura multi-dominio = bandit sano.
Esterno: 9.5/10 da revisore indipendente = output valutati come buoni.
Entrambi allineati: l'addestramento sta convergendo su richiamo fattuale, rispetto dei vincoli e coerenza multi-paragrafo. Se divergessero (bassa perdita ma valutazione esterna 3/10), avremmo un problema di gaming delle metriche da indagare.
Due Segnali, Una Diagnosi
Cinque Passi Per Finestra di Audit
Un Audit, Cinque Controlli
1. Leggi il tier di loss. ppl = exp(loss). Confronta con la tabella a cinque tier.
2. Controlla gli outlier sotto 0.20. Segnale di memorizzazione. Indaga prima di trattarlo come un risultato di qualità.
3. Leggi il testo del campione effettivo. I numeri di loss non possono dirti cosa dice l'output. Leggilo.
4. Conta la larghezza del dominio. Sei domini non correlati in 700 passi = bandit sano. Un dominio ripetuto 7 volte = bandit bloccato.
5. Confronta con una valutazione esterna. Se il tuo campione ti sembra buono, chiedi a qualcuno esterno all'esecuzione di leggerlo. Il loro disaccordo è informazione.
A Cosa Si Collega Questo
- Attività 22 (grow_a_language_model_checkpoints). La cadenza di sample_every si allinea con la cadenza del checkpoint; entrambi si attivano ogni 100 passi.
- Attività 21 (coherence-gated early stopping). Metriche di diversità che fermano automaticamente l'addestramento quando i campioni collassano.
- Attività 24 (grow_a_language_model_microgpt_to_andrea). Collasso v1, contaminazione v2.5, lucidatura v3 tutti catturati (o potevano essere catturati) dall'audit dei campioni.
Una Verità
La perdita è un numero. Leggere i campioni è il modo in cui sappiamo cosa significa quel numero.