왜 모델이 1 GPU에 안 들어갈 때 — 175B × 4바이트 = 700GB이 필요한가? 실무에서 이 개념 없이는 문제를 해결할 수 없습니다. 핵심 동기와 배경을 먼저 이해합시다.
핵심 문제: 거대 모델의 메모리 요구량이 단일 GPU를 초과합니다.
파라미터 메모리 계산:
- GPT-3 175B: 175 × 10⁹ × 4 bytes(FP32) = 700 GB
- FP16으로 줄여도: 175 × 10⁹ × 2 bytes = 350 GB
- A100 GPU 최대 메모리: 80 GB — 1장으로는 절대 불가능
학습 시 추가 메모리:
- 옵티마이저 상태(Adam): 파라미터의 2배 (m, v) → FP32로 1400 GB 추가
- 그래디언트: 파라미터와 같은 크기 → 700 GB
- 활성값(Activation): 배치 크기에 비례 → 수백 GB
총 필요 메모리 (FP32 학습):
\text{Total} \approx 4 \times |\theta| \times 4 \text{ bytes} \approx 2.8 \text{ TB}
A100 80GB 기준 최소
35장 이상 필요!
해결 방향 2가지:
1. 모델 병렬화 — 모델 자체를 여러 GPU에 분할
2. Mixed Precision — FP16/BF16으로 메모리 절반 + 속도 2배
왜 중요한가? FP16은 메모리를 절반으로 줄이지만 표현 가능한 최소값이 약 6×10⁻⁸로, 작은 그래디언트가 0으로 반올림되어 사라집니다(underflow). 학습 초기에는 괜찮아도 후반부의 미세 조정 단계에서 그래디언트 소실이 치명적입니다.
Loss Scaling은 손실값을 크게 곱해서 그래디언트를 FP16 표현 범위 안으로 밀어넣고, 업데이트 전에 다시 나눕니다.
이 트릭이 혼합 정밀도 학습을 실용적으로 만든 핵심입니다.
Megatron-LM은 Shoeybi 등이 제안한 텐서 병렬화 프레임워크로, GPT 스케일 모델 학습을 가능하게 했다 (Shoeybi et al., 2019).