실제 실험에서:
- fp16 (half precision) 으로 학습했을 때는
→ grad_norm: nan 이 자주 발생 - 동일 코드 + 비슷한 설정에서 fp32 (single precision) 로 바꿨더니
→ grad_norm 값이 정상적으로 잘 기록되었다
이 차이는 두 데이터 타입의 “숫자 표현 능력”에서 옵니다.
2-1. 두 타입을 직관적으로 비교
아주 거칠게 요약하면:
타입비트 수대략적인 수 범위 (최대)유효 숫자 자리수특징
| fp16 | 16비트 | ≈ 6.5 × 10⁴ | 약 3자리 | 메모리 적게, 속도 빠름, 대신 잘 터짐 |
| fp32 | 32비트 | ≈ 3.4 × 10³⁸ | 약 7자리 | 범위·정밀도 넓음, 대신 메모리 2배 |
- fp16:
- 표현할 수 있는 최대값이 약 6.5만 수준이라
조금만 값이 커져도 inf로 넘어가고,
이상한 연산(inf - inf, 0 * inf 등)이 섞이면 바로 nan이 됩니다.
- 표현할 수 있는 최대값이 약 6.5만 수준이라
- fp32:
- 같은 상황에서도 아직 충분히 표현 가능한 범위 안에 있는 경우가 많아서
overflow까지 가기 전에 버텨줍니다.
- 같은 상황에서도 아직 충분히 표현 가능한 범위 안에 있는 경우가 많아서
2-2. grad_norm과 NaN의 연결
grad_norm은 각 파라미터 gradient의 L2 norm입니다.
- 내부에서 하는 일:
- 각 파라미터 텐서의 p.grad에 대해 L2 norm 계산
- 그 값들을 제곱해서 다 더한 뒤
- 마지막에 sqrt
여기서 어느 한 파라미터의 gradient라도 inf 또는 nan이 섞이면:
- 합계도 망가지고
- 최종적으로 grad_norm이 nan으로 표시됩니다.
fp16 환경에서는:
- T5 같이 깊고 복잡한 모델에서
- learning rate, 배치 크기 등을 크게 쓰면
→ 일부 gradient가 표현 가능한 범위를 넘어서 inf가 되기 훨씬 쉽습니다.
→ 그 결과 grad_norm도 nan으로 터지는 경우가 자주 나옵니다.
반대로 fp32에서는:
- 같은 설정에서도 아직 overflow까지는 여유가 있어서
- gradient 값이 크긴 해도 유한(finite)한 수로 유지되는 경우가 많습니다.
→ 그래서 grad_norm 로그가 끝까지 잘 찍힌 것이라고 볼 수 있습니다.
2-3. 실무적인 정리
한 줄로 요약하면:
fp16은 메모리와 속도에서 큰 장점이 있지만,
표현할 수 있는 숫자 범위가 좁고 정밀도가 낮아서
gradient가 쉽게 overflow → inf → nan으로 이어집니다.
fp32는 같은 조건에서 훨씬 안정적으로 grad_norm이 계산됩니다.
- 먼저 fp32로 안정적인 학습 세팅을 찾는다
- loss가 잘 내려가는지
- grad_norm이 이상하게 폭발하지 않는지 확인
- 그 다음에 fp16/mixed precision으로 옮겨가면서
- learning rate를 조금 줄이거나
- max_grad_norm 등 gradient clipping을 적극적으로 사용해
- NaN 없이 돌아가는 조합을 찾습니다.
2-4. 마무리 요약
fp32 vs fp16
- fp16은 메모리와 속도에 유리하지만, 표현할 수 있는 수 범위가 좁고 정밀도가 낮아서
gradient가 쉽게 overflow → inf → nan으로 이어집니다. - fp32는 같은 조건에서도 훨씬 안정적으로 grad_norm을 계산할 수 있고,
특히 큰 T5 계열 모델 + 높은 LR 조합에서는 먼저 fp32로 세팅을 안정화한 뒤 fp16으로 옮기는 전략이 안전합니다.
'HRDI_AI > 머신러닝_딥러닝 핵심 기술과 실무 중심 생성형 AI 프로젝트' 카테고리의 다른 글
| AdamW란 무엇인가, 왜 쓰는가, 수식/직관/실전 세팅까지 (0) | 2025.11.27 |
|---|---|
| 1. Trainer 하이퍼파라미터 정리 (0) | 2025.11.27 |
| 3. grad_norm이란 무엇인가? 그리고 LR과 어떤 관계인가? (0) | 2025.11.27 |
| Midterm Report (0) | 2025.11.26 |
| Transformer vs T5(Text-to-Text Transfer Transformer) 어떻게 다른가? (0) | 2025.11.26 |