생성형 AI 모델의 대형화로 단일 GPU 학습이 불가능해지면서 분산 학습이 필수가 됐다. 이 글은 머신러닝 분산 학습의 핵심 기법인 데이터 병렬화(Data Parallelism)와 효율적인 그래디언트 동기화 방법인 Ring-AllReduce 알고리즘을 설명한다.
핵심 포인트- 데이터 병렬화는 학습 데이터를 미니배치로 나눠 여러 GPU에 분산시키고 각 GPU가 완전한 모델 복사본을 유지하는 방식이다.
- 동기(Synchronous) 업데이트는 모델 일관성을 보장하지만 통신 지연으로 처리량이 제한된다.
- 비동기(Asynchronous) 업데이트는 처리량을 높이지만 그래디언트 stale 문제와 GPU 수 증가 시 발산 위험이 있다.
- Ring-AllReduce는 중앙 파라미터 서버 없이 GPU들을 링 형태로 연결해 확장성과 효율을 모두 달성한다.
- Scatter-Reduce와 AllGather 두 단계로 그래디언트를 집계하고 전체 GPU에 배포한다.
상세 정리- 배경: Gen AI 모델이 단일 GPU 메모리를 초과하는 수준으로 커지면서 분산 학습 시스템이 필수 인프라로 자리잡았다.
- 데이터 병렬화 기본: 전체 데이터셋을 미니배치로 나누어 각 GPU에 분배하고 GPU는 동일한 모델 복사본으로 독립적으로 그래디언트를 계산한다.
- 그래디언트 동기화 필요성: 각 GPU가 서로 다른 데이터로 계산한 그래디언트를 정기적으로 동기화해야 모델 상태를 일관되게 유지할 수 있다.
- 동기식 업데이트 한계: 모든 GPU가 동시에 업데이트를 전송해 일관성을 보장하지만 가장 느린 GPU에 의해 전체 처리량이 결정된다.
- 비동기식 업데이트 한계: GPU별 독립 업데이트로 처리량을 높이지만 이전 배치의 stale 그래디언트가 모델 발산이나 수렴 불안정으로 이어질 수 있다.
- 중앙 파라미터 서버의 문제: 모든 GPU가 하나의 서버에 그래디언트를 전송하면 서버가 병목이 되고 GPU 수 증가에 따라 확장성이 떨어진다.
- Ring-AllReduce 구조: GPU들을 링 형태로 연결하고 각 GPU가 이웃 GPU에 그래디언트 요소를 순차 전달하는 분산 방식으로 병목 서버를 제거한다.
- Scatter-Reduce 단계: 각 GPU가 자신의 그래디언트 섹션을 이웃에게 전달하면서 각 섹션이 점진적으로 합산된다.
- AllGather 단계: 집계된 그래디언트를 링 전체에 배포해 모든 GPU가 동일한 최종 그래디언트를 갖게 된다.
- 확장성: GPU 수가 늘어도 통신 비용이 선형으로 증가하지 않아 대규모 학습 클러스터에 적합하다.
왜 읽나LLM·대형 딥러닝 모델 분산 학습 환경을 구축하거나 이해하려는 ML 엔지니어·인프라 엔지니어에게 데이터 병렬화와 Ring-AllReduce 핵심 원리 레퍼런스.