Dwa problemy na obu końcach treningu
Problem wczesnych kroków: świeże wagi nie tolerują dużych kroków
W kroku 0 każda waga zaczyna jako mała losowa liczba pobrana z rozkładu bliskiego zeru. Aktywacje pozostają bliskie zeru. Gradienty niosą niemal żadnej informacji o ostatecznym rozwiązaniu. Zastosowanie maksymalnego tempa uczenia do tych gradientów sprawia, że model oddala się daleko od inicjalizacji w kierunkach, które nie kodują znaczącej struktury.
ANDREA-120M v1 popełnił ten błąd. Brak rozgrzewki. W kroku 1 użyto lr = 0.0003 na świeżo zainicjalizowanych wagach. Efekt: model wylądował w złym basenie parametrów w ciągu kilkuset kroków. Wartości straty wyglądały rozsądnie; próbki generowały pętle powtarzania do kroku 80K i nigdy się nie odzyskały.
Problem późnego etapu: duże kroki nie wypolerują rozwiązania
Do kroku 100K model opanował już strukturę ogólną. Gradienty niosą teraz sygnał drobnoziarnisty: które wagi tokena potrzebują delikatnego przesunięcia, który head uwagi wymaga lekkiego przestrojenia. Zastosowanie maksymalnego współczynnika uczenia na tym etapie powoduje przeskakiwanie każdej drobnej korekty, oscylację wokół optimum bez jego osiągnięcia.
Dwa problemy, przeciwległe końce treningu. Jeden harmonogram, dwa obszary: łagodne przyspieszenie na początku, płynne wygaszenie na końcu.
Liniowe rozgrzewanie: pierwsze 2000 kroków
Wzór
ANDREA-120M v2 stosuje liniowe rozgrzewanie przez 2000 kroków:
<translated content> [BLOCK_TYPE SECTION/STEP]
lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)
[BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
gdzie t to numer kroku (indeksowany od 0), warmup_steps = 2000, a lr_scheduled(t) to wartość, którą narzuciłby harmonogram cosinusowy, gdyby nie uwzględniać rozgrzewki.
[BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
Interpretacja wzoru: [BLOCK_TYPE SECTION/STEP]
<translated content> [BLOCK_TYPE SECTION/STEP]
- Przy t = 0: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. Bardzo mały pierwszy krok.
- Przy t = 1000: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. Połowa siły.
- Przy t = 2000: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. Pełna siła.
- Przy t > 2000: ograniczenie utrzymuje mnożnik na poziomie 1, rozgrzewka przestaje mieć wpływ, a samoczynnie przejmuje kontrolę zanik kosinusowy.
Liniowe narastanie od zera daje modelowi 2000 kroków na utworzenie zgrubnych reprezentacji, zanim AdamW i przycinanie gradientów zobaczą aktualizacje o pełnej sile. Do kroku 2000 wagi zdążyły się na tyle przemieścić, że szczytowe lr nie wpycha ich już do złego minimum.
Obliczanie LR podczas rozgrzewki
Cosine Decay po Warmup
Krzywa
Po zakończeniu warmup na kroku 2000, learning rate podąża za krzywą cosinusową od wartości szczytowej w dół do zera przez pozostałe kroki:
lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))
gdzie progress = (t - warmup_steps) / (total_steps - warmup_steps). Przy progress = 0 (tuż po warmup), cos(0) = 1, lr = peak. Przy progress = 1 (ostatni krok), cos(pi) = -1, lr = lr_min (zazwyczaj 0 lub minimalna wartość).
Dlaczego cosinus, a nie liniowo czy wykładniczo?
Rozkład cosinusowy zaczyna się powoli (krzywa prawie płaska przy szczycie), przyspiesza w środku, a następnie zwalnia ponownie w pobliżu zera. Trzy korzyści:
1. Plateau przy szczycie. Wczesne kroki po warmup nadal otrzymują prawie pełny lr, pozwalając modelowi na długi okres wysokiej szybkości uczenia się w celu budowania reprezentacji.
2. Płynne przejście przez środek. Brak gwałtownych skoków, które musiałby absorbować AdamW.
3. Plateau przy zerze. W końcowych krokach lr jest bardzo małe, co umożliwia precyzyjne dostrojenie, podobnie jak w symulowanym wyżarzaniu.
ANDREA-120M trenuje łącznie przez 200K kroków; 198K z nich przypada na obszar cosine decay po 2000-krokowym warmupie.
Warm Restart ANDREA-12M w kroku 25K
Plateau
ANDREA-12M trenowano przez 60K kroków z cosine decay od szczytowego lr = 0.0004. Około kroku 22K strata ustabilizowała się na poziomie EMA ~2.4. Cosine decay obniżyło lr do ~0.00015. Bandit nadal dostarczał zróżnicowane dane; model przestał się poprawiać.
Diagnoza: lr spadło zbyt nisko, aby model mógł wyjść z obecnego basenu. Dane Hermes miały właśnie wejść do programu nauczania (krok 25K), przynosząc 590K nowych rozmów. Model potrzebował energii, aby wchłonąć ten wstrząs danych.
Restart
W kroku 25K harmonogram wykonał ciepły restart: podniósł lr z 0.00015 (po spadku) z powrotem do 0.0004 (pierwotny szczyt), a następnie wznowił zanik cosinusowy w pozostałych krokach.
Loshchilov & Hutter (2017) nazwali tę technikę „SGDR” (stochastyczny spadek gradientu z ciepłymi restartami). Intuicja: wysoki lr dodaje wystarczająco dużo energii kinetycznej, aby wyjść z lokalnego basenu i zbadać sąsiednie; późniejszy zanik cosinusowy ponownie wyżarzał do lepszego basenu.
Outcome. Loss EMA spadła z 2.40 do 2.10 w ciągu kolejnych 10K kroków po restarcie. Model został wydany w kroku 43.6K z wartością SMMA loss 2.0, demonstrując spójną strukturę tur Q&A.
ANDREA-120M v2 zdecydował się NIE używać warm restarts: przy dostępnych 200K krokach i znacznie większej liczbie parametrów, płynny monotoniczny decay zapewniał stabilniejszą zbieżność. Restart działa najlepiej, gdy trening jest krótki i plateau zbiega się ze znaną zmianą danych.
Diagnozowanie awarii v1
Wybory harmonogramu w praktyce
Działania pokrewne
Trzej bracia łączą się z harmonogramem LR:
- Aktywność 10: AdamW. Rozgrzewka daje korekcji biasu AdamW czas na ustabilizowanie się. Bez rozgrzewki 10-krotne wzmocnienie w kroku 1 mnoży szum, który niosą gradienty; z rozgrzewką mnożnik trafia na rzeczywisty sygnał.
- Aktywność 12: Przycinanie gradientów. Przycinanie ogranicza normę L2 gradientu do 1.0 PRZED AdamW. Rozgrzewka tłumi lr; przycinanie tłumi g. Razem zapewniają bezpieczeństwo wczesnych kroków nawet przy niestabilnych programach nauczania.
- Aktywność 22: Zapisywanie punktów kontrolnych. Ciepły restart wymaga wczytania stanu optymalizatora (m, v, licznik kroków) z punktu kontrolnego, a następnie modyfikacji harmonogramu w trakcie działania. Restart ANDREA-12M w kroku 25K pokazuje to; zajęło dwie próby, aby poprawnie zaimplementować logikę wczytywania stanu.
Harmonogram, optymalizator i przycinanie tworzą trójkąt stabilności. Usuń jeden wierzchołek, a ANDREA powtórzy swój upadek z wersji v1.