AI 시스템 구축: 분산 학습 – DeepSpeed

ㅁ 분산 학습

ㅇ 정의:
여러 대의 GPU나 노드에서 대규모 딥러닝 모델을 병렬로 학습시키는 기술로, 학습 속도 향상과 메모리 한계 극복을 목표로 함.

ㅇ 특징:
– 데이터 병렬, 모델 병렬, 파이프라인 병렬 등 다양한 병렬화 전략 존재
– 통신 오버헤드와 동기화 지연이 성능에 큰 영향을 미침
– 분산 환경 설정과 네트워크 대역폭 고려 필요

ㅇ 적합한 경우:
– 단일 GPU 메모리로 처리 불가능한 초대규모 모델 학습
– 학습 시간을 단축해야 하는 대규모 데이터셋 처리

ㅇ 시험 함정:
– 분산 학습이 항상 속도를 높이는 것은 아님(통신 병목 가능)
– 병렬화 전략을 혼동하여 잘못 매칭하는 경우 출제

ㅇ 시험 대비 “패턴 보기” 예시:
O: “모델 크기가 커서 단일 GPU에 올릴 수 없는 경우, 파이프라인 병렬화를 고려한다.”
X: “분산 학습에서는 통신 속도와 무관하게 항상 속도가 빨라진다.”

================================

1. DeepSpeed

ㅇ 정의:
마이크로소프트에서 개발한 대규모 딥러닝 모델 학습 최적화 라이브러리로, PyTorch 기반 분산 학습을 효율적으로 지원함.

ㅇ 특징:
– ZeRO(Zero Redundancy Optimizer) 기술로 메모리 사용량 절감
– 혼합 정밀도 학습(FP16/BF16) 지원
– 파이프라인 병렬, 모델 병렬, 데이터 병렬을 혼합 적용 가능
– 체크포인팅, 오토튜닝 기능 제공

ㅇ 적합한 경우:
– 10억 개 이상의 파라미터를 가진 초대규모 모델 학습
– 메모리 제약이 심한 환경에서 효율적인 분산 학습 필요 시

ㅇ 시험 함정:
– ZeRO를 단순한 옵티마이저로 오해하는 경우(실제로는 메모리 분산 전략)
– DeepSpeed가 TensorFlow에서도 기본 지원된다고 착각하는 경우

ㅇ 시험 대비 “패턴 보기” 예시:
O: “DeepSpeed의 ZeRO는 모델 상태를 분산 저장하여 GPU 메모리 사용량을 줄인다.”
X: “DeepSpeed는 PyTorch와 TensorFlow 모두에서 공식 지원된다.”

ㅁ 추가 학습 내용

DeepSpeed의 ZeRO는 3단계로 나뉘며, Stage 1은 옵티마이저 상태를 분산 저장, Stage 2는 옵티마이저 상태와 그래디언트를 분산, Stage 3는 여기에 모델 파라미터까지 분산하여 메모리 사용을 최소화한다. Offload 기능은 모델 상태를 GPU에서 CPU 메모리나 NVMe 스토리지로 이동시켜 GPU 메모리 부담을 줄인다. DeepSpeed-Inference는 추론 속도와 메모리 효율을 높이는 최적화를 제공하며, Megatron-LM과 통합하여 대규모 언어 모델 학습 성능을 향상시킬 수 있다. 혼합 정밀도 학습에서는 수치 불안정성이 발생할 수 있으며, 이를 완화하기 위해 Loss Scaling 기법을 사용한다. NCCL은 GPU 간 통신을 최적화하는 라이브러리로, DeepSpeed의 분산 학습에서 핵심 역할을 하며, Horovod와 비교 시 통신 방식과 최적화 전략의 차이를 이해해야 한다. 분산 학습 환경에서는 Fault Tolerance를 통해 노드 장애 시 복구가 가능하며, Elastic Training을 통해 학습 중에도 노드를 동적으로 확장하거나 축소할 수 있다.

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*