왜 와 어떻게 (recap)
Modern accelerator 가 BF16/FP16 multiply 를 FP32 보다 2-8x 빠르게. Mixed precision 이 model weight 를 FP32 (master copy) 로 유지하지만 heavy compute (matmul) 를 lower precision 으로. 결과 — 99% case 에 같은 final accuracy 의 빠른 training.
BF16: FP32 와 같은 dynamic range, 적은 precision, GradScaler 안 필요, 2026 default 선호. FP16: 더 많은 precision, 작은 dynamic range, underflow 없는 작은 gradient 처리에 GradScaler 필요.
안 될 때 뭐 잘못 가는가
NaN loss. 가장 흔한 원인: FP16 forward pass 어딘가의 single underflow 가 loss 통해 propagate. 보통 BF16 로 switch, 또는 FP16 stuck 면 GradScaler 추가로 fix.
미묘한 accuracy degradation. 일부 operation (log-softmax, layer norm 등) 이 lower precision 에 sensitive. PyTorch autocast 가 자동으로 FP32 유지하는데 custom layer 는 안 그럴 수도. Autocast 에서 model accuracy 가 noticeably 떨어지면 어떤 op 가 low precision 에서 도는지 profile.
숫자
BF16 training: Tensor Core 위 FP32 대비 1.5-3x wall-clock 빠름, activation 의 ~50% memory 절약. FP8 (H100 이상) 이 transformer training 에 추가 30-50% 가능, 2026 년 tooling 여전히 maturing.