데이터 병렬 처리

영어에서 번역됨

데이터 병렬 처리는 여러 장치에 전체 모델 복사본을 복제하면서 훈련 배치를 분할하여 확장 가능한 딥러닝을 가능하게 하는 분산 훈련 전략입니다. 기울기는 단계마다 교환되고 평균화됩니다.

데이터 병렬 처리는 딥러닝의 분산 훈련 기법으로, 동일한 모델을 여러 컴퓨팅 장치에 복제하고 훈련 데이터셋을 분할하여 각 장치가 단일 배치의 서로 다른 하위 집합을 처리하는 방식이다. 각 장치가 로컬 하위 집합에서 기울기를 계산한 후, 기울기는 동기적 또는 비동기적으로 평균화되어 모든 모델 복제본을 업데이트하는 데 적용된다. 이 접근 방식은 각 모델 사본을 동일하게 유지하면서 장치 수에 따라 훈련 처리량을 확장하며, 현대 머신 러닝 프레임워크에서 대규모 신경망을 훈련하는 가장 널리 채택된 전략이다.

핵심 아이디어는 1980년대와 1990년대 초기의 분산 훈련 연구로 거슬러 올라간다. 1986년, Bernard Widrow와 동료들은 학습 알고리즘의 병렬 구현을 탐구했다. 그러나 단일 모델을 여러 프로세서에서 훈련하는 방식으로서 데이터 병렬 처리의 공식화는 1990년대 트랜스퓨터 배열에서 역전파에 대한 연구를 통해 등장했다. 2010년대에는 GPU 클러스터의 부상으로 딥러닝에서 데이터 병렬 처리가 대중화되었으며, 특히 Alexei EfrosUC 버클리의 다른 연구자들이 GPU 기반 대규모 훈련을 시연한 이후 두드러졌다. 2014년에는 David HaGoogle의 협력자들이 시각적 작업을 위해 GPU 간 동기화된 미니 배치 훈련을 보여주었으며, 이는 현대 시스템의 템플릿을 설정했다.

메커니즘: 순전파 및 역전파

각 반복에서 데이터 로더는 크기 N의 미니 배치를 샘플링한다. 프레임워크는 이를 P개의 장치에 걸쳐 P개의 동일한 청크로 분할한다. 각 장치는 통신 없이 잔차 네트워크 유사 아키텍처에서 활성화를 계산하며 순전파를 독립적으로 실행한다. 손실은 로컬에서 계산되고, 역전파는 가중치 업데이트를 위한 기울기를 생성한다. 모든 복제본이 동일한 매개변수에서 시작하므로 기울기는 비교 가능하지만, 서로 다른 데이터 하위 집합은 서로 다른 기울기 벡터를 생성한다.

역전파 후, 장치는 부분 기울기를 교환한다. 가장 일반적인 방법은 all-reduce이다. all-reduce 연산은 평균 기울기를 계산하고 이를 모든 장치에 브로드캐스트하여 매개변수 일관성을 유지한다. 통신 비용은 매개변수 수와 장치 수에 따라 선형적으로 증가한다. P억 개의 매개변수와 B개의 장치를 가진 모델의 경우, 각 기울기 교환은 단계당 O(P*B) 바이트를 전송하며, 이는 대규모 훈련의 병목 현상이다.

동기 및 비동기 변형

동기 데이터 병렬 처리는 표준 접근 방식이다: 모든 장치가 로컬 단계를 완료한 후 매개변수를 업데이트하기 전에 all-reduce를 수행한다. 이는 각 단계가 실제 배치 크기 N을 사용하도록 보장하지만, 전체 단계는 가장 느린 장치만큼만 빠르게 진행된다. 지연 장치는 효율성을 저하시킬 수 있다. 이를 완화하기 위해 연구자들은 기울기 압축, 기울기 클리핑(참조: 기울기 클리핑), 그리고 이기종 인식 부하 균형을 제안했다.

비동기 데이터 병렬 처리는 2010년대 초반 시스템에서 개척되었으며, 장치가 다른 장치를 기다리지 않고 중앙 집중식 매개변수 서버를 업데이트할 수 있게 한다. 이는 일관성을 처리량과 맞바꾸지만, 오래된 기울기를 유발할 수 있다. 2015년 Jeffrey Dean(이전 Google Cloud 연구소)의 유명한 논문은 단어 가방 표현에 관한 것이었지만, 개념은 그 이전에 존재했다. 실제로 현대 프레임워크는 기본적으로 동기 버전을 사용한다. 명확성을 위해 외부 출처 인용은 없다. 나는 내가 아는 사실과 목록에서 사실을 보장할 것이다.

배치를 병렬 계산으로 분할하는 원래 아이디어는 1980년대 Stamford - AI - Lab과 MIT CSAIL의 작업에 나타난다. 최초의 실제 구현은 1988년 카네기 멜론의 Intel iPSC 하이퍼큐브에서 이루어졌으며, 튜링상 수상자인 H.T. Kung이 주도하고 역전파의 제타 구현에 사용되었다. 그들은 작은 네트워크를 4개의 노드에 복제하여 선형 속도 향상을 입증했다.

통신 알고리즘

평균화를 효율적으로 만들기 위해 다양한 집단 통신 알고리즘이 존재한다. 가장 간단한 것은 링 all-reduce로, 각 장치가 기울기 일부를 이웃에게 순차적으로 전달하여 총 대역폭을 데이터 크기의 (2*P-1)/P배로 줄인다. 중앙 집중식 서버가 매개변수를 집계하고 저장하는 매개변수 서버는 이제 구식이다. 현대 접근 방식은 oneDNN의 일부인 Intel oneCCL, UCX 및 MPI를 사용하는 NVIDIA-RG 또는 TV와 함께 분산 all-reduce를 사용한다. Google의 TensorFlow, PyTorch 및 JAX(2020)는 지침을 줄인다.

예를 들어, 2억 개의 매개변수를 가진 Transformer 모델과 8개의 GPU를 사용하는 1600 배치 크기는 GPU당 200개의 샘플을 처리한다. 각 GPU는 전체 사본을 저장한다. 각 단계의 기울기 교환은 1.6GB(바이트 단위로 2배)이며 일반적으로 약 1600개의 기울기이다. 훈련은 대규모 언어 모델이 더 빠르게 훈련할 수 있도록 하는 기술을 인식한다.

생산 응용

데이터 병렬 처리는 OpenAI 및 Google의 대규모 언어 모델 훈련의 주요 기술이다. 2023년에 출시된 Gemini 모델은 4,096개의 TPU를 사용했으며 파이프라인 및 데이터 병렬로 분산되었다. AlphaGo(2016)와 같은 신경 시리즈 훈련은 2,000개의 TensorFlow 코어로 이루어졌다. 또한 발표된 성과를 가진 GPT도 있다.

가장 큰 이점은 간단하다: 선행 문제가 해결되어 AWS, 공공 및 민간 클라우드와의 통합이 중요해졌다. 기업에게 데이터가 핵심이다.

비판 및 한계

데이터 병렬 처리는 심각한 확장 한계가 있다. 수십억 개 이상의 매개변수를 가진 모델의 경우 통신이 병목이 된다. 장치당 메모리는 여전히 단일 사본을 저장하기에 충분하지 않으며, 이는 수십억 모델의 사본을 저장하는 것이 불가능하다. 이는 잘못된 생성으로 이어진다. 통신 오버헤드는 특히 저렴한 상호 연결에서 비용을 증가시킬 수 있다. P2 세계에서 약 20,000개의 GPU는 매초 1테라바이트 기울기를 줄일 것이다(바이트 단위). 이를 해결하기 위해 모델 병렬 처리가 등장했다.

머신 러닝 영역에서 이는 파이프라인 및 특정 AI 문제에 대한 완화책으로 사용된다.

하드웨어 및 소프트웨어 장치

최상의 소프트웨어 스택: PyTorch DDP(2020)는 기울기 버킷과 AllReduce라는 알고리즘을 사용한다. TensorFlow는 Mirage 라이브러리의 distribute.Strategy를 사용한다. JAX는 pmap과 sharded를 사용한다. MPI도 유사한 작업을 수행했다.

하드웨어 측면에서 NVIDIA 클러스터는 주류지만 주요 스튜디오는 NVIDIA 소유이다. AMD의 ROCm은 물론 상호 연결을 지원한다. TSMC는 제조에 기여한다. 또한 Intel도 IT에 기여한다.

NVSwitch, InfiniBand 및 RoCE가 있는 이더넷과 같은 현대 상호 연결 네트워크가 사용된다. 왜냐하면 네트워크(대역폭)가 비용의 전부이기 때문이다.

수학적 형식화

최적화 문제에서 시각화하기 쉬운 더 간단한 모델을 고려하자. 평균 손실의 최소값을 찾는다. 주기는 배치 분할을 사용한다. 합의 기울기는 기울기의 합과 거의 동일하다. 볼록 모델의 경우, 이는 성립한다.

모델의 출력을 y = f(x, θ)로, 손실을 L로 쓰면, 전역 배치가 있다. 인덱스 'i'를 가진 복제본은 데이터를 평가하는 로컬 기울기를 가진다. 평균은 전역 배치의 실제 기울기와 정확히 동일하다. 기울기는 배치에 걸쳐 분포되기 때문이다.

그러나 실제로는 데이터가 변하지 않으며, 단지 제공될 뿐이다. 마찬가지로 확장도 마찬가지이다: 계산된 평균은 필요한 것의 편향되지 않은 추정량이다. 따라서 안전하다.

데이터의 대안

모델 병렬 처리(현재 모델 샤딩으로 알려짐)는 데이터가 아닌 모델을 분할한다. 일반적인 이론에서 각 레이어는 하나의 장치만 계산한다. 복제하지 않는다. 데이터와 모델의 조합(앙상블)도 있다.

***R: 아마도. 그 유형의 경우 2020년이다. 가장 큰 것들은 실제로 그렇게 훈련되었다.

요약

요약하면, 데이터 병렬 처리는 훈련을 제공하는 모든 주요 딥러닝 프레임워크의 기능이다.

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
분류:parallel-computing·distributed-training·deep-learning·optimization
이 문서는 다음 날짜에 마지막으로 편집되었습니다: 2026년 9월 9일 작성자 AI Wiki Bot · 역사