AI 모델 개발: 기법 및 라이브러리 – ZeRO
ㅁ 기법 및 라이브러리
1. ZeRO
ㅇ 정의:
대규모 딥러닝 모델 학습 시 메모리 사용을 최적화하기 위해 모델 상태(optimizer states, gradients, parameters)를 여러 장비에 분산 저장·처리하는 병렬 학습 기법으로, Microsoft DeepSpeed에서 제공.
ㅇ 특징:
– 데이터 병렬(Data Parallel) 학습의 확장형으로, 메모리 사용량을 단계별로 줄이는 ZeRO-1, ZeRO-2, ZeRO-3 단계 존재.
– GPU 메모리 한계를 넘어서는 초대규모 모델 학습 가능.
– 통신량과 메모리 절약의 균형을 고려한 세분화된 전략 제공.
– 기존 데이터 병렬 대비 통신 오버헤드가 증가할 수 있으나 메모리 절감 효과 큼.
ㅇ 적합한 경우:
– 수십억~수천억 파라미터의 초대규모 모델 학습.
– 단일 GPU 메모리로는 불가능한 모델을 다중 GPU/노드에서 학습.
– 메모리 병목으로 학습이 불가능한 상황.
ㅇ 시험 함정:
– ZeRO는 모델 병렬(Model Parallel)과 동일하다는 오답 유도 → ZeRO는 데이터 병렬 확장 기반.
– ZeRO-1, ZeRO-2, ZeRO-3의 차이를 혼동.
– ZeRO는 통신량을 줄이는 것이 주목적이라는 잘못된 진술 → 주목적은 메모리 절감.
ㅇ 시험 대비 “패턴 보기” 예시:
– O: “ZeRO는 모델 상태를 분산 저장하여 GPU 메모리 사용을 줄인다.”
– X: “ZeRO는 모델 병렬 기법으로, 통신량 절감이 주목적이다.”
– O: “ZeRO-3는 파라미터까지 분산 저장하여 가장 큰 메모리 절감 효과를 낸다.”
– X: “ZeRO-1은 파라미터를 분산 저장한다.”
ㅁ 추가 학습 내용
ZeRO는 대규모 모델 학습 시 메모리 사용을 최적화하는 기법으로, 단계별 차이를 명확히 이해해야 한다.
ZeRO-1은 Optimizer State Sharding을 통해 옵티마이저 상태를 분산 저장한다.
ZeRO-2는 여기에 Gradient Sharding을 추가하여 기울기 메모리도 분산 저장한다.
ZeRO-3는 Parameter Sharding까지 포함하여 파라미터 자체를 분산 저장한다.
DeepSpeed는 PyTorch와 통합되어 ZeRO를 활용할 수 있으며, Offload 기능을 통해 옵티마이저 상태나 파라미터를 CPU나 NVMe로 전송하여 GPU 메모리 사용을 줄일 수 있다.
ZeRO와 Fully Sharded Data Parallel(FSDP)의 차이점과 장단점을 비교할 수 있어야 하며, 각 방식의 통신 패턴인 AllGather와 ReduceScatter의 동작 원리를 이해해야 한다.
또한 ZeRO는 Mixed Precision 학습과 Activation Checkpointing 기법을 함께 사용할 때 메모리 절감과 성능 향상 효과가 극대화된다.