← 문제 목록/Warmup + Cosine LR Schedule
문제 해설

Warmup + Cosine LR Schedule

최적화 · easy

preview

Warmup + Cosine Learning Rate

76번 순수 Cosinet=0t=0 에서 최대 lr 로 시작. 하지만 큰 모델은 초반 gradient 가 불안정해 바로 큰 lr 로 시작하면 발산. 해결: 처음 WW 스텝은 선형 warmup.

2-phase 스케줄

\eta_{\max} \cdot \frac{t}{W} & t < W \quad \text{(warmup)} \\[4pt] \eta_{\min} + \frac{1}{2}(\eta_{\max} - \eta_{\min})\left(1 + \cos\pi \cdot \frac{t - W}{T - W}\right) & W \le t \le T \quad \text{(cosine)} \\[4pt] \eta_{\min} & t > T \end{cases}$$ - $t=0$: $0$. - $t=W$: $\eta_{\max}$ (peak). - $t=T$: $\eta_{\min}$. ## 왜 warmup? - 초기 가중치가 랜덤 → 첫 배치의 loss landscape 가 잘 안 보임. 큰 lr 로 시작하면 엉뚱한 방향으로 튕겨 발산. - Adaptive optimizer (Adam) 의 $\hat v$ 추정치도 초기엔 신뢰도 낮음. - Warmup: 안전하게 lr 를 서서히 올려 optimizer state 안정화. BERT 논문 이래 **거의 모든** LLM fine-tuning / pre-training 이 이 패턴 사용. Warmup 은 보통 전체의 1–10%. ## 과제 함수 `warmup_cosine_lr(t, warmup_steps, total_steps, lr_max, lr_min=0.0)` 를 완성하세요. - 입력: 스칼라 또는 array `t`. - 반환: 같은 shape. `t > total_steps` → `lr_min` clamp. - `warmup_steps <= 0` 일 때도 안전하게 동작 (순수 cosine). ## 테스트 케이스 | # | 이름 | 검증 | |---|---|---| | 1 | t=0 → 0 (lr_min=0) | warmup 시작 | | 2 | t=W → lr_max | warmup 끝 | | 3 | t=T → lr_min | 전체 끝 | | 4 | t=(W+T)/2 → 중점 값 | cosine 중간 | | 5 | warmup=0 → 순수 cosine | | | 6 | t > T clamp | |
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.