Two Problems at Either End of Training [BLOCK_TYPE SECTION/STEP]
Early-Step Problem: Fresh Weights Cannot Take Big Steps
[BLOCK_TYPE SECTION/STEP]스텝 0에서 모든 가중치는 0에 가까운 분포에서 샘플링된 작은 무작위 값으로 시작합니다. 활성화 값은 0 근처에 머무릅니다. 그래디언트는 최종 솔루션에 대한 정보를 거의 포함하지 않습니다. 이러한 그래디언트에 최대 학습률을 적용하면 모델은 의미 있는 구조를 담지 않은 방향으로 초기화 지점에서 크게 벗어나게 됩니다. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
ANDREA-120M v1이 이 실수를 저질렀습니다. 워밍업이 없었습니다. 스텝 1에서 새로 초기화된 가중치에 lr = 0.0003을 적용했습니다. 결과: 모델은 수백 스텝 만에 나쁜 파라미터 분지(basin)에 빠졌습니다. 손실 수치는 합리적으로 보였지만, 스텝 80K에서 반복 루프를 생성했고 회복하지 못했습니다.
Late-Step Problem: 큰 스텝은 솔루션을 다듬을 수 없다
스텝 100K에 이르면 모델은 대략적인 구조를 학습한 상태입니다. 이제 그래디언트는 미세한 신호를 전달합니다: 어떤 토큰 가중치에 작은 조정이 필요한지, 어떤 어텐션 헤드에 약간의 재조정이 필요한지. 이 단계에서 최고 학습률을 적용하면 모든 미세 조정을 지나치게 크게 만들어 최적점 주변에서 진동만 일으키고 안정적으로 수렴하지 못합니다.
훈련의 양 끝에서 발생하는 두 가지 문제. 하나의 스케줄로 두 영역을 모두 해결합니다: 부드럽게 상승하고, 매끄럽게 감소합니다.
Linear Warmup: 처음 2000 스텝
공식
ANDREA-120M v2는 2000 스텝 동안 선형 워밍업을 사용합니다:
lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)
여기서 t는 스텝 번호(0부터 시작)이며, warmup_steps = 2000이고, lr_scheduled(t)는 웜업을 무시했을 때 코사인 스케줄이 지정하는 학습률입니다.
공식 해석:
- t = 0일 때: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. 첫 스텝은 매우 작습니다.
- t = 1000일 때: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. 절반 강도.
- t = 2000일 때: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. 전체 강도.
- t > 2000일 때: clamp가 승수를 1로 유지하므로 warmup은 더 이상 영향을 주지 않고, cosine decay만 작동합니다.
0에서 선형적으로 증가하는 ramp는 모델이 2000 스텝 동안 거친 표현을 형성할 시간을 줍니다. 그 후 AdamW와 gradient clipping이 full-strength 업데이트를 적용합니다. 2000 스텝까지 가중치가 충분히 이동했기 때문에 peak lr이 나쁜 basin으로 밀어내지 않습니다.
Warmup 중 LR 계산
워밍업 이후 코사인 감쇠
곡선
워밍업이 2000 스텝에서 끝난 후, 학습률은 남은 스텝 동안 피크에서 0까지 코사인 곡선을 따릅니다:
lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))
progress = (t - warmup_steps) / (total_steps - warmup_steps)로 정의합니다. progress = 0 (warmup 직후)일 때 cos(0) = 1이므로 lr = peak입니다. progress = 1 (마지막 스텝)일 때 cos(pi) = -1이므로 lr = lr_min (보통 0 또는 아주 작은 값)입니다.
왜 코사인인가? 선형이나 지수 감쇠가 아닌 이유는?
코사인 감쇠는 peak 근처에서는 천천히 시작(곡선이 거의 평평), 중간 구간에서 가속, 마지막으로 다시 느려집니다. 세 가지 장점:
1. Peak 근처에서 plateau. Warmup 직후에도 거의 최대 lr를 유지하므로, 모델이 긴 고학습률 구간을 활용해 표현을 충분히 학습할 수 있습니다.
2. 중간 구간에서 부드러운 전환. AdamW가 흡수해야 할 급격한 변화가 없습니다.
3. 0 근처 평탄화. 마지막 단계에서는 미세 조정을 위해 lr이 매우 작아지며, 이는 simulated annealing과 유사합니다.
ANDREA-120M은 총 200K 스텝 동안 학습하며, 그 중 198K 스텝은 2000-step warmup 이후 cosine decay 구간입니다.
ANDREA-12M의 25K 스텝 Warm Restart
평탄화 구간
ANDREA-12M은 lr = 0.0004 피크에서 cosine decay를 적용하여 60K 스텝 동안 학습했습니다. 약 22K 스텝에서 손실이 EMA ~2.4로 평탄화되었습니다. Cosine decay로 인해 lr이 ~0.00015까지 감소했습니다. bandit은 다양한 데이터를 계속 공급했지만, 모델은 더 이상 개선되지 않았습니다.
진단: lr이 너무 많이 감쇠하여 모델이 현재 basin에서 벗어나지 못했습니다. Hermes 데이터가 커리큘럼에 들어올 예정이었고(step 25K), 590K개의 새로운 대화를 가져올 것이었습니다. 모델은 그 데이터 충격을 흡수할 에너지가 필요했습니다.
재시작
step 25K에서 스케줄은 warm restart를 실행했습니다: lr을 감쇠된 0.00015에서 원래 피크인 0.0004로 급상승시킨 후, 남은 단계에 대해 코사인 감쇠를 재개했습니다.
Loshchilov & Hutter (2017)는 이 기법을 "SGDR"(stochastic gradient descent with warm restarts)이라고 명명했습니다. 직관: 높은 lr은 충분한 운동 에너지를 더해 지역 basin에서 벗어나 인접한 basin들을 탐색하게 하고, 이후 코사인 감쇠는 더 나은 basin으로 재어닐링합니다.
Outcome. Loss EMA dropped from 2.40 to 2.10 over the next 10K steps after the restart. Model shipped at step 43.6K with SMMA loss 2.0, demonstrating coherent Q&A turn structure.
ANDREA-120M v2는 warm restart를 사용하지 않기로 결정했습니다. 200K 스텝을 사용할 수 있고 파라미터 수가 훨씬 더 많기 때문에, 부드러운 단조 감소가 더 안정적인 수렴을 가져왔습니다. Restart는 학습이 짧고 plateau가 알려진 데이터 변화와 일치할 때 가장 효과적입니다.
v1의 실패 진단
Schedule Choices in Practice
Adjacent Activities
LR schedule과 연결되는 세 가지 sibling:
- Activity 10: AdamW. Warmup은 AdamW의 bias correction이 안정화될 시간을 제공합니다. Warmup이 없으면 step 1에서 10배 증폭이 gradients의 노이즈를 그대로 증폭시키지만, warmup이 있으면 multiplier가 실제 신호에 적용됩니다.
- Activity 12: Gradient clipping. Clipping은 AdamW 이전에 gradient L2 norm을 1.0으로 제한합니다. Warmup은 lr을 감쇠시키고, clipping은 g를 감쇠시킵니다. 이 둘은 충격이 큰 curriculum에서도 초기 단계를 안전하게 유지합니다.
- Activity 22: Checkpointing. Warm restart는 checkpoint에서 optimizer state (m, v, step counter)를 불러온 다음, 실행 중에 schedule을 변경해야 합니다. ANDREA-12M의 step 25K에서의 restart는 이를 보여주며, state-loading 로직을 올바르게 구현하기 위해 두 번의 시도가 필요했습니다.
Schedule, optimizer, & clipping은 안정성 삼각형을 형성합니다. 한 꼭짓점을 제거하면 ANDREA는 v1 붕괴를 반복하게 됩니다.