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

Two Problems at Either End of Training [BLOCK_TYPE SECTION/STEP]

Early-Step Problem: Fresh Weights Cannot Take Big Steps
[BLOCK_TYPE SECTION/STEP]

At step 0, every weight starts as a small random number sampled from a near-zero distribution. Activations stay near zero. Gradients carry almost no information about a final solution. Apply a peak learning rate to those gradients & a model jumps far away from initialization in directions that do not encode meaningful structure. [BLOCK_TYPE SECTION/STEP]

[BLOCK_TYPE SECTION/STEP]

ANDREA-120M v1 made this mistake. No warmup. Step 1 used lr = 0.0003 on freshly initialized weights. Result: model landed in a bad parameter basin within a few hundred steps. Loss numbers looked reasonable; samples produced repetition loops by step 80K & never recovered.


Problema in fase avanzata: grandi passi non affinano una soluzione

Entro lo step 100K, il modello ha appreso la struttura grossolana. I gradienti ora trasportano un segnale fine: quale peso del token necessita di una piccola correzione, quale testa di attenzione richiede un leggero riequilibrio. Applicare un learning rate massimo in questa fase fa superare ogni regolazione fine, oscillando attorno a un ottimo senza stabilizzarsi.


Due problemi, estremi opposti dell’addestramento. Una sola schedule, due regioni: salita graduale, discesa fluida.

Warmup lineare: primi 2000 step

La formula

ANDREA-120M v2 utilizza un warmup lineare su 2000 step:


lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)


dove t è il numero dello step (0-indexed), warmup_steps = 2000, e lr_scheduled(t) è ciò che la pianificazione coseno prescriverebbe ignorando il warmup.


Lettura della formula:


- A t = 0: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. Piccolo primo step.

- A t = 1000: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. Metà intensità.

- A t = 2000: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. Intensità piena.

- Per t > 2000: il clamp mantiene il moltiplicatore a 1, il warmup non ha più effetto e il decadimento coseno agisce da solo.


La rampa lineare da zero dà al modello 2000 passi per formare rappresentazioni grossolane prima che AdamW e il gradient clipping vedano aggiornamenti a piena intensità. Entro il passo 2000 i pesi si sono spostati abbastanza da evitare che il lr di picco li spinga in un bacino cattivo.

Calcolo del LR durante il Warmup

ANDREA-120M v2 usa `lr_scheduled = 0.0003` (picco) e `warmup_steps = 2000`. Ignora il decadimento coseno durante il warmup (assumi che `lr_scheduled` resti costante). Calcola il tasso di apprendimento effettivo a: (a) passo 0, (b) passo 500, (c) passo 2000, (d) passo 5000. Mostra i calcoli.

Cosine Decay Dopo il Warmup

La Curva

Dopo che il warmup termina al passo 2000, il learning rate segue una curva coseno dal picco fino a zero nei passi rimanenti:


lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))


dove progress = (t - warmup_steps) / (total_steps - warmup_steps). Quando progress = 0 (appena dopo il warmup), cos(0) = 1, lr = valore di picco. Quando progress = 1 (ultimo step), cos(pi) = -1, lr = lr_min (tipicamente 0 o un valore minimo molto piccolo).


Perché Cosine, Non Lineare o Esponenziale?

La cosine decay inizia lentamente (la curva è quasi piatta vicino al picco), accelera nella parte centrale, poi rallenta di nuovo vicino a zero. Tre vantaggi:


1. Plateau vicino al picco. I primi step dopo il warmup ricevono ancora quasi il valore massimo di lr, permettendo al modello di utilizzare un lungo periodo di learning rate elevato per costruire le rappresentazioni.

2. Transizione fluida nella fase centrale. Nessun salto improvviso che AdamW deve assorbire.

3. Plateau vicino allo zero. Negli ultimi passi l'lr diventa minuscolo per la rifinitura finale, simile al simulated annealing.


ANDREA-120M viene addestrato per un totale di 200K passi; 198K di questi si trovano nella regione di cosine decay dopo i 2000 passi di warmup.


LR Warmup & Cosine Decay

Warm Restart di ANDREA-12M al passo 25K

Il Plateau

ANDREA-12M è stato addestrato per 60K passi con cosine decay da un picco di lr = 0.0004. Intorno al passo 22K, la loss si è stabilizzata su un valore EMA ~2.4. Il cosine decay aveva ridotto lr a circa 0.00015. Il bandit continuava a fornire dati diversi; il modello aveva smesso di migliorare.


Diagnosi: lr era decaduto troppo per permettere al modello di uscire dal bacino attuale. I dati Hermes stavano per entrare nel curriculum (step 25K), portando 590K nuove conversazioni. Il modello aveva bisogno di energia per assorbire questo shock di dati.


Il Riavvio

Allo step 25K, la pianificazione ha eseguito un warm restart: ha fatto salire lr da 0.00015 (decaduto) fino a 0.0004 (picco originale), per poi riprendere la decadenza coseno sui passi rimanenti.


Loshchilov & Hutter (2017) hanno chiamato questa tecnica "SGDR" (stochastic gradient descent with warm restarts). L'intuizione: un lr alto aggiunge abbastanza energia cinetica per uscire da un bacino locale ed esplorare quelli vicini; la successiva decadenza coseno ri-ricottura verso un bacino migliore.


Outcome. La Loss EMA è scesa da 2.40 a 2.10 nei successivi 10K step dopo il restart. Il modello è stato rilasciato allo step 43.6K con una loss SMMA di 2.0, dimostrando una struttura coerente di turni Q&A.


ANDREA-120M v2 ha scelto di NON usare i warm restart: con 200K step disponibili e un numero di parametri molto maggiore, un decadimento monotono e graduale ha prodotto una convergenza più stabile. Il restart funziona meglio quando l’addestramento è breve e un plateau coincide con un noto shift dei dati.

Diagnosi del fallimento di v1

ANDREA-120M v1 ha usato `lr = 0.0003` dallo step 1, senza warmup. Entro lo step 80K i campioni prodotti erano `region region region region`. Motiva meccanicamente: descrivi passo per passo cosa accade a una matrice di pesi appena inizializzata negli step da 1 a 100 con `lr = 0.0003` rispetto a un warmup di 2000 step. Perché il percorso senza warmup finisce in un bacino cattivo?

Scelte di Programmazione nella Pratica

Se stessi addestrando un modello da 120M su un dataset rumoroso per SOLO 50K passi totali, useresti un warmup più lungo o più breve rispetto ai 2000 passi di ANDREA-120M v2? Giustifica con un solo argomento meccanicistico.

Attività Adiacenti

Tre fratelli collegati alla programmazione del LR:


- Attività 10: AdamW. Il warmup dà al bias correction di AdamW il tempo di stabilizzarsi. Senza warmup, l'amplificazione 10x al passo 1 moltiplica qualsiasi rumore presente nei gradienti; con il warmup, il moltiplicatore agisce su un segnale reale.

- Attività 12: Gradient clipping. Il clipping limita la norma L2 del gradiente a 1.0 PRIMA di AdamW. Il warmup smorza lr; il clipping smorza g. Insieme mantengono sicuri i primi passi anche su curricula soggetti a shock.

- Attività 22: Checkpointing. Un warm restart richiede il caricamento dello stato dell'ottimizzatore (m, v, contatore dei passi) da un checkpoint, quindi la modifica della schedule durante l'esecuzione. Il restart di ANDREA-12M al passo 25K lo dimostra; ci sono voluti due tentativi per far funzionare correttamente la logica di caricamento dello stato.


Schedule, ottimizzatore e clipping formano un triangolo di stabilità. Se si elimina un vertice, ANDREA ripete il collasso della v1.