Twee problemen aan beide uiteinden van de training
Vroegstappen-probleem: verse gewichten kunnen geen grote stappen nemen
Bij stap 0 beginnen alle gewichten als kleine willekeurige getallen uit een verdeling dicht bij nul. Activaties blijven dicht bij nul. Gradiënten bevatten vrijwel geen informatie over een uiteindelijke oplossing. Pas een piek-leersnelheid toe op die gradiënten en het model springt ver weg van de initialisatie in richtingen die geen betekenisvolle structuur bevatten.
ANDREA-120M v1 maakte deze fout. Geen warmup. Stap 1 gebruikte lr = 0.0003 op vers geïnitialiseerde gewichten. Resultaat: het model belandde binnen een paar honderd stappen in een slecht parameterbekken. De verlieswaarden leken redelijk; de samples produceerden herhalingslussen rond stap 80K en herstelden nooit.
Laat-stap probleem: Grote stappen kunnen een oplossing niet verfijnen
Tegen stap 100K heeft een model de grove structuur geleerd. De gradiënten bevatten nu fijnkorrelige signalen: welke token-gewichten een kleine aanpassing nodig hebben, welke attention-head licht moet worden hergebalanceerd. Een piek-leersnelheid toepassen in deze fase overschiet elke fijne aanpassing, waardoor het model rond een optimum oscilleert zonder zich te stabiliseren.
Twee problemen, tegenovergestelde kanten van het trainen. Eén schema, twee regio’s: voorzichtig opbouwen, soepel afbouwen.
Lineaire Warmup: Eerste 2000 Stappen
De Formule
ANDREA-120M v2 gebruikt lineaire warmup over 2000 stappen:
lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)
waarbij t het stapnummer is (0-geïndexeerd), warmup_steps = 2000, en lr_scheduled(t) is wat het cosinus-schema zou voorschrijven zonder rekening te houden met warmup.
De formule lezen:
- Bij t = 0: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. Minuscule eerste stap.
- Bij t = 1000: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. Halfsterkte.
- Bij t = 2000: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. Volle sterkte.
- Bij t > 2000: de clamp houdt de multiplier op 1, warmup heeft geen invloed meer, cosine decay neemt het alleen over.
Lineaire opbouw vanaf nul geeft het model 2000 stappen om grove representaties te vormen voordat AdamW & gradient clipping updates op volle sterkte zien. Tegen stap 2000 zijn de gewichten voldoende verschoven zodat de piek-lr ze niet meer in een slecht bassin duwt.
LR berekenen tijdens Warmup
Cosinusverval na Warmup
De Curve
Na de warmup die eindigt bij stap 2000, volgt de leersnelheid een cosinuscurve van piek naar nul over de resterende stappen:
lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))
waar progress = (t - warmup_steps) / (total_steps - warmup_steps). Bij progress = 0 (net na warmup), cos(0) = 1, lr = piek. Bij progress = 1 (laatste stap), cos(pi) = -1, lr = lr_min (meestal 0 of een kleine ondergrens).
Waarom cosinus, niet lineair of exponentieel?
Cosinusverval begint langzaam (de curve is bijna vlak nabij de piek), versnelt in het midden en vertraagt weer nabij nul. Drie voordelen:
1. Plateau nabij de piek. Vroege stappen na de warmup krijgen nog bijna de volledige lr, zodat het model een lang traject met hoge leersnelheid kan gebruiken om representaties op te bouwen.
2. Vloeiende overgang in het midden. Geen abrupte sprongen die AdamW moet opvangen.
3. Plateau nabij nul. In de laatste stappen wordt de lr heel klein voor fijne afwerking, vergelijkbaar met simulated annealing.
ANDREA-120M traint in totaal 200K stappen; 198K daarvan bevinden zich in de cosine-decay-regio na de 2000-stappen warmup.
ANDREA-12M's Warm Restart op Stap 25K
Het Plateau
ANDREA-12M trainde 60K stappen met cosine decay vanaf een piek-lr = 0.0004. Rond stap 22K stagneerde de loss bij EMA ~2.4. De cosine decay had de lr verlaagd tot ~0.00015. De bandit bleef diverse data aanleveren; het model verbeterde niet meer.
Diagnose: lr was te ver gedaald voor het model om uit zijn huidige basin te ontsnappen. Hermes-data stond op het punt om in het curriculum te komen (stap 25K), wat 590K nieuwe gesprekken zou brengen. Het model had energie nodig om die datashock te absorberen.
De herstart
Op stap 25K voerde het schema een warm restart uit: lr werd verhoogd van 0.00015 (gedaald) terug naar 0.0004 (oorspronkelijke piek), waarna de cosinusverval over de resterende stappen werd hervat.
Loshchilov & Hutter (2017) noemden deze techniek "SGDR" (stochastic gradient descent with warm restarts). De intuïtie: een hoge lr voegt voldoende kinetische energie toe om een lokaal basin te verlaten en naburige basins te verkennen; het daaropvolgende cosinusverval laat het model opnieuw in een beter basin neerkomen.
Resultaat. Loss EMA daalde van 2.40 naar 2.10 in de volgende 10K stappen na de herstart. Het model werd uitgebracht op stap 43.6K met SMMA-loss 2.0, wat een coherente Q&A-draaistructuur aantoont.
ANDREA-120M v2 koos ervoor GEEN warm restarts te gebruiken: met 200K beschikbare stappen en een veel groter aantal parameters zorgde een soepele, monotone decay voor een stabielere convergentie. Restart werkt het best wanneer de training kort is en een plateau samenvalt met een bekende data-shift.
Diagnose van v1's falen
Keuzes in de praktijk
Aanverwante Activiteiten
Drie verwante onderwerpen linken aan LR-schedule:
- Activiteit 10: AdamW. Warmup geeft AdamW's bias-correctie de tijd om te stabiliseren. Zonder warmup vermenigvuldigt de 10x-versterking bij stap 1 de ruis die de gradiënten bevatten; met warmup raakt de vermenigvuldiger echt signaal.
- Activiteit 12: Gradient clipping. Clipping beperkt de L2-norm van de gradiënt tot 1.0 VOOR AdamW. Warmup dempt lr; clipping dempt g. Samen houden ze de vroege stappen veilig, zelfs bij curricula die gevoelig zijn voor schokken.
- Activiteit 22: Checkpointing. Een warme herstart vereist het laden van de optimizer-status (m, v, stap-teller) uit een checkpoint, gevolgd door het aanpassen van het schema tijdens de run. ANDREA-12M's herstart bij stap 25K illustreert dit; het kostte twee pogingen om de logica voor het laden van de status correct te krijgen.
Schedule, optimizer en clipping vormen een stabiliteitsdriehoek. Laat een hoek weg en ANDREA herhaalt zijn v1-instorting.