목록으로
GitHub - deepseek-ai/DualPipe: A bidirectional pipeline parallelism algorithm for computation-communication overlap in DeepSeek V3/R1 training.
Service2025.03.08

GitHub - deepseek-ai/DualPipe: A bidirectional pipeline parallelism algorithm for computation-communication overlap in DeepSeek V3/R1 training.

요약

DualPipe는 DeepSeek-V3 훈련을 위해 개발된 혁신적인 양방향 pipeline parallelism 알고리즘으로, forward 및 backward computation-communication 단계의 완전한 오버랩을 달성하고 pipeline bubble을 감소시킵니다.
️ DualPipeV는 DualPipe에서 "cut-in-half" 절차를 통해 파생된 간결한 V-shape 스케줄이며, 효율적인 훈련 스케줄링을 제공합니다.
이 알고리즘은 기존 1F1B 및 ZB1P 방식과 비교하여 pipeline bubble을 크게 줄이고, 효율적인 계산-통신 오버랩을 통해 Deep Learning 모델 훈련의 성능을 향상시킵니다.

상세 내용

DeepSeek-AI가 DeepSeek V3/R1 모델 학습을 위해 개발한 DualPipe는 computation-communication overlap를 극대화하고 pipeline bubbles을 줄이는 혁신적인 bidirectional pipeline parallelism 알고리즘입니다.

DualPipe의 핵심 방법론은 forward 및 backward computation-communication 단계의 완전한 중첩을 달성하는 것입니다. 이는 "양방향(bidirectional)" 스케줄링을 통해 이루어지며, forward 방향과 reverse 방향으로 micro-batches를 처리합니다. 스케줄링 다이어그램에서, 하나의 shared black border로 둘러싸인 두 개의 셀은 상호 중첩된 computation과 communication을 나타내며, 이는 알고리즘이 동시에 여러 작업을 수행하여 idle 시간을 최소화함을 의미합니다. 예를 들어, 8개의 PP ranks와 20개의 micro-batches를 사용하는 DualPipe 스케줄링은 forward와 reverse 방향으로 micro-batches를 분산시켜 처리 효율을 높입니다.

DualPipeV는 DualPipe에서 파생된 간결한 V-shape 스케줄입니다. 이는 Sea AI Lab의 "cut-in-half" 절차를 사용하여 개발되었으며, DualPipe보다 적은 수의 PP ranks를 사용하여 유사한 이점을 제공할 수 있습니다. 예를 들어, 4개의 PP ranks (8개의 PP stages)와 10개의 micro-batches에 대한 DualPipeV 스케줄링이 제시됩니다.

DualPipe와 DualPipeV는 기존의 pipeline parallelism 방법론인 1F1B(1 Forward, 1 Backward) 및 ZB1P(Zero Bubble 1 Pipe)와 비교하여 pipeline bubbles과 메모리 사용량 측면에서 우수한 성능을 보입니다. PP를 PP stages의 수, F를 forward chunk의 실행 시간, B를 full backward chunk의 실행 시간, W를 "backward for weights" chunk의 실행 시간, F&B를 상호 중첩된 forward 및 backward chunk의 실행 시간으로 정의할 때, 각 방법론의 bubble 시간은 다음과 같습니다:
* 1F1B: (PP1)(F+B)(PP -1)(F+B)
* ZB1P: (PP1)(F+B2W)(PP -1)(F+B-2W)
* DualPipe/DualPipeV: (PP/21)(F&B+B3W)(PP /2-1)(F\&B+B-3W)

DualPipe와 DualPipeV는 1F1B 또는 ZB1P에 비해 더 적은 bubble 시간을 가집니다. 메모리 사용량 측면에서는, DualPipe와 DualPipeV는 1F1B 및 ZB1P와 동일한 Activation Per Device (PP)를 사용하지만, Parameter Per Device2×PP+12 \times PP + 1로 더 높을 수 있습니다. 그러나 DualPipeV는 PP/2PP/2Devices를 사용하여 전체 장치 수를 줄일 수 있습니다.

요약하자면, DualPipe는 computation-communication overlap를 통해 pipeline parallelism의 효율을 극대화하고, 특히 "bidirectional" 스케줄링을 통해 pipeline bubbles을 효과적으로 줄이는 알고리즘입니다. DualPipeV는 이 개념의 경량화된 변형으로, 다양한 설정에서 높은 훈련 효율성을 제공합니다.

원본 보기
GitHub
Shared by Anonymous