Step 0-20K: Una Dieta Restringente
Due Fasi, Una Esecuzione
Il curriculum firehose v2 si esegue in due fasi all'interno di una singola esecuzione di addestramento da 200K step:
Fase A (step 0 a 20K). Bandit preleva solo da 7 fonti di chat & prosa:
- hermes3-general
- hermes3-creative
- hermes3-roleplay
- chat
- smoltalk
- oasst
- gutenberg
Fase B (passi da 20K a 200K). Bandit attinge dall'intero mix, tutte e 16 le fonti, inclusa la reference (dictionary), tecnica (repo-docs, repo-commits) e sociale (irc, unweapon).
Cosa condivide la dieta ristretta
Sei delle sette fonti di warmup sono conversazionali. Una (gutenberg) è prosa a paragrafi. Insieme condividono una forma comune: struttura a turni (prompt poi risposta) o flusso narrativo. La distribuzione del vocabolario tra le 7 fonti appare approssimativamente inglese normale; i target di entropia incrociata rimangono in un intervallo stabile; le magnitudini del gradiente rimangono prevedibili.
Campo di Configurazione
"curriculum_warmup_steps": 20000,
"curriculum_warmup_sources": ["hermes3-general", "hermes3-creative",
"hermes3-roleplay", "chat", "smoltalk", "oasst", "gutenberg"]
Identifica la Fase di Warmup
Come Appariva v1 Senza Warmup
v1: Tutte le 16 Fonti dallo Step 0
La prima esecuzione di addestramento ANDREA-120M (marzo-aprile 2026) ha attivato il pieno firehose allo step 0: 16 fonti, inclusa dictionary (88K definizioni di parole in forma > define X / < X is...), repo-docs (documentazione markdown), repo-docstrings (docstring Python) e repo-commits (messaggi di commit git accanto a chat & prose).
Cosa è Andato Storto
Un modello da 120M appena inizializzato con pesi casuali non può modellare 16 distribuzioni distinte contemporaneamente. Ogni batch proveniente da una sorgente strutturalmente diversa produce una direzione di gradiente diversa. Le transizioni di sorgente ogni 7-42 passi facevano oscillare selvaggiamente le magnitudini del gradiente; il modello saltava tra attrattori più velocemente di quanto potesse formare rappresentazioni.
Al passo 80K, v1 produceva: region region region region region region region. La distillazione del teacher Hermes3-general premiava (media 340-453) le sorgenti con struttura a lista ripetitiva, che ottenevano il punteggio più alto sull'entropia incrociata, interpretato dal bandit come 'queste braccia sono facili.' Il bandit forniva al modello più di ciò che lo faceva degenerare.
Perché Limitarsi a 7 Sorgenti Aiuta
1. Somiglianza delle distribuzioni. Tutte e 7 le sorgenti di warmup producono testo di forma simile (struttura a turni o narrativa). Le direzioni di gradiente tra i batch rimangono approssimativamente allineate.
2. Coerenza prima. Il modello apprende la frequenza del vocabolario, i pattern sintattici e la struttura dei turni prima di incontrare elenchi di definizioni, codice o messaggi git.
3. Curriculum stabile. I segnali di ricompensa del bandit su 7 fonti di chat/prosa rimangono in un intervallo comparabile; la selezione UCB1 non viene dirottata da una singola fonte anomalamente gratificante.
Quando la Fase B si Attiva
Al passo 20K, il modello ha prodotto ~40-50 campioni (uno ogni 100 passi), mostra inglese coerente nei campioni e ha costruito distribuzioni stabili di bigrammi e trigrammi. Ora può assorbire il pattern > define X / < X is... del dizionario, i blocchi di codice dei repo-docs e gli header dei commit git senza perdere la struttura della chat sottostante.
Diagnosticare il Fallimento di v1
v3 Polish imposta curriculum_warmup_steps = 0
Un Punto di Partenza Diverso
Il pivot polish di v3 al passo 112.619 ha ripreso l'addestramento da step_112600.bin con curriculum_warmup_steps impostato a 0. A prima vista sembra una contraddizione: se il warmup ha aiutato v2, perché disabilitarlo per la fase polish?
Perché il Modello Ha Già Imparato la Coerenza
La Fase A concede tempo a un modello appena inizializzato per imparare la frequenza del vocabolario, la struttura dei turni e la coerenza dei paragrafi. Al passo 112K, il modello ha già fatto tutto ciò. Audit di campioni al 112K hanno mostrato turni conversazionali coerenti, haiku, Q&A e dialoghi. Lo scopo originale del warmup (proteggere un modello nuovo fragile dal caos dei gradienti) non si applica più.
Polish Ripesa i Pesi, Non Riavvia
Polish è una perturbazione del curriculum, non una nuova esecuzione. Stesso target di 200K, stessa architettura, stesso stato dell'ottimizzatore, stessa storia delle perdite. Cosa cambia: i cappi e i pavimenti della sorgente vengono ripesati per favorire la conversazione rispetto alle braccia di conoscenza. Con il modello già coerente, ogni sorgente attiva è lecita a partire dal passo 112.619.
Tabella di Riepilogo
| Fase | curriculum_warmup_steps | Perché |
|---|---|---|
| v1 | (non presente) | Tutte le 16 fonti dal passo 0 -> collasso |
| v2 (passi 0-200K) | 20.000 | Protegge i pesi appena inizializzati dal caos dei gradienti |
| v3 base (passi 0-112K) | 20.000 | Stessa protezione di v2 |
| v3 polish (passi 112K-200K) | 0 | Il modello è già coerente; non c'è un regime di init fragile da proteggere |