C.W.K.
Stream
Lesson 07 of 12 · published

Mixed precision — BF16, FP16, FP8

~10 min · mixed-precision, bf16, fp8

Level 0Token
0 XP0/94 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

순수 FP32 학습은 모던 하드웨어에 낭비. Mixed precision은 연산 대부분에 낮은 정밀도 부동소수점 사용하면서 수치 안정성을 위한 몇몇 핵심 연산만 FP32(또는 그 이상)에 유지. 결과: FP32 대비 약 2배 메모리 절감, 2배 throughput, 측정 가능한 품질 손실 없음.

포맷비트범위용도
FP3232±3.4 × 10³⁸master 가중치, loss scaling, optimizer state
FP1616±65,504구형 GPU에서 forward/backward pass
BF1616±3.4 × 10³⁸ (FP32와 동일)모던 학습 (Llama 3.3, DeepSeek-V3 등)
FP8 (E4M3, E5M2)8제한적Flash Attention 3, FP8 학습 실험, 추론

BF16(Brain Floating Point)이 학습의 모던 기본. FP32와 같은 exponent 범위 — overflow 문제 없음 — 지만 mantissa는 8비트뿐, gradient/activation엔 충분한 정밀도. FP16은 mantissa 정밀도가 더 높지만 범위가 훨씬 작아 — loss scaling 없이는 overflow 잘 남. BF16이 loss-scaling 춤을 구식으로 만들었어.

Code

BF16 mixed precision in PyTorch·python
import torch
from torch.cuda.amp import autocast

# On Ampere or later (A100, H100, etc):
with autocast(dtype=torch.bfloat16):
    logits = model(input_ids)
    loss = causal_lm_loss(logits, target_ids)

# Backward pass uses BF16 automatically
loss.backward()
optimizer.step()
optimizer.zero_grad()
# No GradScaler needed for BF16 — that was an FP16 trick.

External links

Exercise

같은 작은 모델을 FP32, FP16(GradScaler 포함), BF16(autocast)로 학습. throughput(tokens/sec)와 최종 loss 측정. 모던 GPU에선 BF16 숫자가 최선이어야. 속도 차이와 품질 차이 문서화.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.