ZeRO(Zero Redundancy Optimizer)와 FSDP(Fully Sharded Data Parallel)는 모두 PyTorch 기반의 분산 학습을 위한 메모리 효율 최적화 기법 이다. 두 기법은 유사한 목표를 가지고 있지만, 설계 철학과 구현 방식에서 다음과 같은 중요한 차이점 이 있다.
1. 구현 주체
항목
ZeRO
FSDP
개발 주체
Microsoft DeepSpeed
Meta (PyTorch 공식)
구현 위치
DeepSpeed 라이브러리 (외부)
PyTorch 내부 (torch.distributed.fsdp)
설치 필요
deepspeed 설치 필요
PyTorch만 설치하면 사용 가능
2. 메모리 분산 방식
항목
ZeRO
FSDP
전략
모델 파라미터, gradient, optimizer state를 분산 저장
모델 파라미터 자체를 샤딩(Sharding) 하여 GPU 간 분할
기본 구조
기존 DDP 위에 최적화 단계를 추가한 구조
완전한 파라미터 샤딩 구조로, DDP와 다름
통신 방식
주로 NCCL AllGather / ReduceScatter
AllGather during fwd, ReduceScatter during bwd
3. 모델 파라미터 로딩 방식
항목
ZeRO
FSDP
forward 시 모델 파라미터
일부 stage에 따라 broadcast 후 전체 로드
필요한 시점에 해당 파라미터만 all-gather
backward 시 gradient
ReduceScatter 등으로 분산
ReduceScatter로 바로 분산 저장
4. 사용의 유연성과 복잡도
항목
ZeRO
FSDP
커스터마이징
다양한 ZeRO stage (1, 2, 3) 존재 → 복잡
비교적 일관된 API (wrap(model) 형태)
초기 진입장벽
DeepSpeed config JSON, CLI 등 진입장벽 있음
PyTorch 내부 기능 → 진입장벽 낮음
5. 지원 기능 차이
항목
ZeRO
FSDP
Checkpointing
Offload, CPU, NVMe 지원 (ZeRO-Offload)
PyTorch 2.0 이후, state_dict_type=...으로 지원
Mixed Precision
FP16, BF16 지원, ZeRO-Infinity로 NVMe offload까지
Mixed precision 자동 지원 (MixedPrecisionPolicy)
비동기화 기능
ZeRO-Infinity, Offload, Stage-3 optimizer sharding
최근 PyTorch에서 FSDP CPU offload 지원 추가
6. 결론
상황
추천 방식
PyTorch 기본으로 통합된 방식을 원할 때
✅ FSDP (설치 간단, PyTorch 공식)
대규모 모델, Offloading, 복잡한 최적화 필요 시
✅ ZeRO (DeepSpeed) (더 많은 기능과 확장성)
태그:
DDP ,
DeepSpeed ,
DeepSpeed-Inference ,
Distributed Data Parallel ,
Microsoft ,
Mixed Precision ,
Model Parallelism ,
Pipeline Parallelism ,
PyTorch ,
ZeRO optimizer ,
딥스피드 ,
마이크로소프트
카테고리:
DeepSpeed ,
DeepSpeed ZeRO ,
Distributed Training ,
PyTorch
업데이트: 2024년 01월 09일
댓글남기기