Två problem i vardera änden av träningen
Problem i tidiga steg: Färska vikter klarar inte stora steg
Vid steg 0 börjar varje vikt som ett litet slumpmässigt tal från en nära-noll-fördelning. Aktiveringar ligger nära noll. Gradienter bär nästan ingen information om en slutgiltig lösning. Applicera en toppinlärningshastighet på dessa gradienter och modellen hoppar långt bort från initialiseringen i riktningar som inte kodar meningsfull struktur.
ANDREA-120M v1 gjorde detta misstag. Ingen uppvärmning. Steg 1 använde lr = 0.0003 på nyinitialiserade vikter. Resultat: modellen hamnade i en dålig parameterdal inom några hundra steg. Förlustvärdena såg rimliga ut; proverna producerade upprepningsloopar vid steg 80K och återhämtade sig aldrig.
Sent problem i sena steg: Stora steg kan inte polera en lösning
Vid steg 100K har modellen lärt sig grov struktur. Gradienterna bär nu finjusterad information: vilka token-vikter som behöver en liten justering, vilken attention-huvud som behöver en lätt ombalansering. Att använda en hög inlärningshastighet i detta skede överskrider varje finjustering, vilket leder till oscillation runt ett optimum utan att nå en stabil punkt.
Två problem, motsatta ändar av träningen. En schemaläggning, två regioner: öka långsamt, minska jämnt.
Linjär uppvärmning: Första 2000 stegen
Formeln
ANDREA-120M v2 använder linjär uppvärmning över 2000 steg:
lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)
där t är stegnumret (0-indexerat), warmup_steps = 2000, och lr_scheduled(t) är vad cosinusschemat skulle föreskriva om uppvärmning ignoreras.
Läsa formeln:
- Vid t = 0: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. Mycket litet första steg.
- Vid t = 1000: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. Halv styrka.
- Vid t = 2000: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. Full styrka.
- Vid t > 2000: clamp håller multiplikatorn på 1, warmup påverkar inte längre, cosine decay tar över helt.
Linjär ramp från noll ger modellen 2000 steg att forma grova representationer innan AdamW & gradient clipping ser uppdateringar med full styrka. Vid steg 2000 har vikterna rört sig tillräckligt för att peak lr inte längre driver dem in i en dålig basin.
Beräkning av LR under Warmup
Cosinusavklingning efter warmup
Kurvan
När warmup avslutas vid steg 2000 följer inlärningshastigheten en cosinuskurva från toppvärdet ner till noll över de återstående stegen:
lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))
där progress = (t - warmup_steps) / (total_steps - warmup_steps). Vid progress = 0 (precis efter uppvärmning), cos(0) = 1, lr = peak. Vid progress = 1 (sista steget), cos(pi) = -1, lr = lr_min (vanligtvis 0 eller en liten golv).
Varför cosinus, inte linjär eller exponentiell?
Cosinusavklingning startar långsamt (kurvan är nästan platt nära toppen), accelererar genom mitten och saktar sedan ner igen nära noll. Tre fördelar:
1. Platå nära toppen. De tidiga stegen efter uppvärmningen får fortfarande nästan full lr, vilket låter modellen använda en lång sträcka av hög inlärningshastighet för att bygga representationer.
2. Jämn övergång genom mitten. Inga abrupta hopp som AdamW måste absorbera.
3. Platå nära noll. De sista stegen får en mycket liten lr för finjustering, liknande simulerad annealing.
ANDREA-120M tränar totalt 200K steg; 198K av dessa ligger i cosine decay-regionen efter de 2000-stegs uppvärmningen.
ANDREA-12M:s Warm Restart vid steg 25K
Platån
ANDREA-12M tränade 60K steg med cosine decay från toppvärdet lr = 0.0004. Runt steg 22K plattade förlusten ut vid EMA ~2.4. Cosine decay hade sänkt lr till ~0.00015. Banditen fortsatte mata in varierad data; modellen slutade förbättras.
Diagnos: lr hade avtagit för mycket för att modellen skulle kunna ta sig ur sin nuvarande basin. Hermes-data skulle snart börja ingå i läroplanen (steg 25K), vilket innebar 590K nya konversationer. Modellen behövde energi för att absorbera den datachocken.
Omstarten
Vid steg 25K utförde schemat en varm omstart: höjde lr från 0.00015 (avtaget) tillbaka till 0.0004 (ursprunglig topp), och återupptog sedan cosinusavtagning över de återstående stegen.
Loshchilov & Hutter (2017) kallade denna teknik "SGDR" (stochastic gradient descent with warm restarts). Intuitionen: en hög lr tillför tillräckligt med kinetisk energi för att lämna en lokal basin och utforska närliggande sådana; den efterföljande cosinusavtagningen återanpassar modellen till en bättre basin.
Outcome. Loss EMA sjönk från 2.40 till 2.10 under de följande 10K stegen efter omstarten. Modellen levererades vid steg 43.6K med SMMA-förlust 2.0, vilket visade en sammanhängande Q&A-svarsstruktur.
ANDREA-120M v2 valde att INTE använda varma omstarter: med 200K steg tillgängliga och ett mycket större antal parametrar gav en jämn monoton decay stabilare konvergens. Omstart fungerar bäst när träningen är kort och en platå sammanfaller med ett känt dataskifte.
Diagnostisera v1:s misslyckande
Val av scheman i praktiken
Angränsande aktiviteter
Tre syskon länkar till LR-schemat:
- Aktivitet 10: AdamW. Warmup ger AdamW:s bias-korrigering tid att stabiliseras. Utan warmup multiplicerar 10x-förstärkningen vid steg 1 vilket brus gradienterna bär; med warmup träffar multiplikatorn verklig signal.
- Aktivitet 12: Gradientklippning. Klippning begränsar gradientens L2-norm till 1,0 INNAN AdamW. Warmup dämpar lr; klippning dämpar g. Tillsammans håller de tidiga steg säkra även på chockbenägna läroplaner.
- Aktivitet 22: Checkpointing. En varm omstart kräver att optimizer-tillstånd (m, v, steg-räknare) laddas från en checkpoint, sedan muteras schemat mitt i körningen. ANDREA-12M:s omstart vid steg 25K demonstrerar detta; det krävde två försök att få tillståndsladdningslogiken rätt.
Schema, optimizer och klippning bildar en stabilitetstriangel. Släpp en hörn, se ANDREA upprepa sin v1-kollaps.