반응형

1️⃣ 기본 개념 차이
| 구분 | NaN | Inf |
| 의미 | Not a Number | Infinity (무한대) |
| 뜻 | 계산이 정의되지 않음 | 값이 너무 커서 무한대로 발산 |
| 비교 연산 | 자기 자신과도 같지 않음 | 크기 비교 가능 |
2️⃣ 언제 발생하나?
🔥 Inf 발생 상황
값이 너무 커질 때
1e308 * 1e308
또는
1 / 0
결과:
inf
즉,
💥 값이 “폭발”하면 Inf
🔥 NaN 발생 상황
정의되지 않은 연산
0 / 0
inf - inf
sqrt(-1) # 실수 범위
log(-5)
inf - inf
sqrt(-1) # 실수 범위
log(-5)
결과:
nan
즉,
❌ 수학적으로 정의되지 않으면 NaN
3️⃣ 딥러닝 학습 흐름에서의 차이
실제로는 이렇게 진행됩니다
gradient 증가
→ weight 증가
→ 값 overflow
→ inf 발생
→ 연산 진행
→ inf - inf
→ nan 발생
→ weight 증가
→ 값 overflow
→ inf 발생
→ 연산 진행
→ inf - inf
→ nan 발생
📌 중요 포인트:
대부분의 NaN은 먼저 Inf가 발생한 후에 나온다.
4️⃣ 연산 특성 차이 (중요)
✅ Inf 특징
inf + 1 = inf
inf * 2 = inf
inf * 2 = inf
값이 유지됩니다.
❌ NaN 특징
nan + 1 = nan
nan * 100 = nan
nan * 100 = nan
전염성이 매우 강합니다.
그리고:
nan == nan → False
자기 자신과도 같지 않습니다.
5️⃣ 분산 학습에서의 위험도
🔴 Inf
- 한 rank에서 발생
- AllReduce로 전달
- 다른 rank에도 전파
하지만 디버깅이 비교적 쉬움
(grad norm에서 감지 가능)
🔴 NaN
- 한 번 발생하면
- 모든 계산 오염
- 통신 스턱 유발 가능
- watchdog 발생 가능
👉 운영 관점에서 NaN이 더 치명적
6️⃣ PyTorch에서 체크 방법
(프레임워크 예: PyTorch)
torch.isinf(tensor)
torch.isnan(tensor)
torch.isnan(tensor)
학습 중 안전 체크:
if torch.isnan(loss) or torch.isinf(loss):
print("Numerical issue detected")
print("Numerical issue detected")
7️⃣ 발생 원인 비교
| 원인 | Inf | NaN |
| LR 과대 | 매우 흔함 | 후속 발생 |
| Gradient Explosion | 먼저 Inf | 이후 NaN |
| AMP overflow | 흔함 | overflow 후 발생 |
| 잘못된 수식 | 드묾 | 매우 흔함 |
| 데이터 문제 | 가능 | 매우 흔함 |
8️⃣ 운영 실전 구분법
🔍 로그 패턴
Inf 단계:
loss: 2.1
loss: 5.4
loss: 4000
loss: 2.3e38
loss: inf
loss: 5.4
loss: 4000
loss: 2.3e38
loss: inf
NaN 단계:
loss: inf
loss: nan
loss: nan
loss: nan
loss: nan
9️⃣ 왜 Inf보다 NaN이 더 무섭나?
Inf는 "값이 너무 크다"는 신호
NaN은 "계산 체계가 무너졌다"는 신호
특히:
- Optimizer 내부 상태도 NaN 오염
- Adam의 moving average 파괴
- 복구 불가능
🔟 초보자용 핵심 요약
💥 Inf = 숫자가 너무 커서 무한대
❌ NaN = 수학적으로 정의되지 않음
🔥 실제 학습에서는 “Inf → NaN” 순서로 진행되는 경우가 대부분
반응형
'[GPUaaS] > GPUmgt' 카테고리의 다른 글
| [분산 학습] Tensor 란!! (0) | 2026.02.21 |
|---|---|
| [분산 학습] AllReduce & AllReduce mismatch 란 !! (0) | 2026.02.21 |
| [Syslog] mlx5_core ... Detected insufficient power on the PCIe slot (27W) (0) | 2026.02.21 |
| [GPU서버 HW문제] NaN 발생 가능성 !! (0) | 2026.02.21 |
| [분산 학습] NaN 반드시 알아야 하는 개념 !! (0) | 2026.02.21 |
| [Not a Number] NaN이란 무엇인가? (0) | 2026.02.21 |
| [GPU] 스크립트 사용 프로세스 확인 및 삭제 방법!! (0) | 2026.02.19 |
| [nvidia-healthmon] 파일 위치 및 주의사항 !! (0) | 2026.02.19 |
댓글