초대규모 AI 모델 학습: FSDP와 GPU 메모리 한계
요즘 70B 파라미터 이상의 초대규모 모델 학습을 시도하는 기업이 점점 늘고 있습니다.
그런데, GPU 메모리가 부족해서 학습이 불가능하거나 매우 어렵다는 문제가 자주 발생합니다.
이 글에서는 FSDP(Full Sharded Data Parallel)를 활용해 어떻게 메모리를 분산시키고, 어떤 한계가 발생하는지 상세히 설명합니다.
1. 70B 모델의 메모리 요구량
먼저 기본 데이터부터 보겠습니다.
70B 파라미터 모델을 FP16으로 저장하면:
- 파라미터: 70B × 2 bytes = 140GB
- 옵티마이저 상태(Adam): 70B × 8 bytes = 560GB
- 그라디언트: 70B × 2 bytes = 140GB
총 메모리: 840GB
단일 GPU로는 학습 불가능
아무리 H100 80GB GPU라도 이 정도 용량을 담을 수 없습니다.
2. FSDP와 메모리 분산 원리
FSDP는 이 거대한 모델을 여러 GPU에 쪼개어 저장합니다.
핵심 원리
- 파라미터, 옵티마이저 상태, 그라디언트를 GPU 개수만큼 분산(shard)
- 각 GPU에 "조각"만 올림
- 연산 시 AllGather로 가상의 full weight를 일시적으로 구성
예를 들어 8 GPU로 분산하면:
- 파라미터 shard: 140GB / 8 = 17.5GB
- 옵티마이저 shard: 560GB / 8 = 70GB
- 그라디언트 shard: 140GB / 8 = 17.5GB
- Steady-state 총합: 약 105GB
여기까지만 보면 GPU당 105GB만 필요할 것 같지만, 이게 끝이 아닙니다.
3. AllGather로 인한 Peak 메모리
모델 학습 시에는 forward/backward 과정에 파라미터를 전부 모으는 AllGather 단계가 발생합니다.
이때:
- full parameter buffer(140GB)가 GPU에 생성
- 기존 shard와 activation 메모리, 통신 buffer가 더해집니다
결과적으로 Peak 메모리는 Steady-state + AllGather buffer + activation memory
8 GPU라면:
- Steady-state: 105GB
- AllGather buffer: +140GB
- Activation & 통신 buffer: +20–40GB
총 Peak 메모리 ≈ 250GB
H100 80GB로는 물리적으로 불가능합니다.
4. 메모리 절감 트릭
이 문제를 해결하기 위해 3가지 방법을 반드시 조합해야 합니다.
Mixed Precision
모델과 옵티마이저 상태를 FP16/bfloat16으로 저장
- 메모리 절감: 약 50%
Activation Checkpointing
중간 활성화 메모리를 저장하지 않고 backward에서 재계산
- 메모리 절감: 약 50–80%
Optimizer State Offload
옵티마이저 상태를 CPU 메모리에 저장
- GPU 메모리 절감: 약 40–50%
이렇게 다 조합하면 실제 Peak 메모리를 약 60–80GB 수준으로 낮출 수 있습니다.
5. 현실적인 GPU 개수와 추천 구성
아래 표는 H100 80GB 기준, 70B 모델을 학습할 때 필요한 GPU 수량을 요약한 것입니다.
| GPU 수 | Steady-state 메모리 | Peak 메모리 |
|---|---|---|
| 8 | 약 105GB | 약 175–250GB |
| 12 | 약 70GB | 약 130–180GB |
| 16 | 약 52GB | 약 100–140GB |
| 24 | 약 35GB | 약 70–110GB |
실제로는 12장 이상이 되어야 안정적으로 학습이 가능하며, 16장이 가장 권장됩니다.
6. 결론
- FSDP/ZeRO-3 없이 대규모 모델은 학습 자체가 불가능합니다.
- "모델을 GPU 한 장에 올린다"는 개념은 더 이상 유효하지 않습니다.
- 반드시 아래 요소를 함께 사용해야 합니다:
- FSDP/ZeRO-3
- Mixed Precision
- Activation Checkpointing
- Optimizer Offload
- H100 80GB 기준 최소 12~16 GPU 필요
이러한 설계가 필요하며, 단일 서버가아닌 다중서버와 그에 따른 Network 고대역폭도 보장이 되어야 한다는 점을 알 수 있습니다.
'GPU' 카테고리의 다른 글
| GPU를 통한 AI 연구시 OS 결정요소 (Linux vs Windows) (0) | 2025.05.07 |
|---|---|
| GPU PCIe Passthrough 를 통해 VM에 GPU 할당하여 사용하기 (1) (0) | 2025.04.17 |