# DeepSeek, 최적화된 병렬 처리 전략 오픈소스 3가지 공개 (4 of 5)

> Clean Markdown view of GeekNews topic #19466. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19466](https://news.hada.io/topic?id=19466)
- GeekNews Markdown: [https://news.hada.io/topic/19466.md](https://news.hada.io/topic/19466.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-02-27T14:12:25+09:00
- Updated: 2025-02-27T14:12:25+09:00
- Original source: [github.com/deepseek-ai](https://github.com/deepseek-ai/DualPipe)
- Points: 4
- Comments: 0

## Topic Body

- DeepSeek V3/R1에서 사용했던 전략 및 코드들   
  - DualPipe : 계산-통신 오버랩을 위한 양방향 파이프라인 병렬화 알고리듬  
  - EPLB: Expert-Parallel 로드밸런서   
  - Profile-Data: DeepSeek 인프라의 데이터 프로파일링으로 계산-통신 오버랩을 분석   
### [DualPipe](https://github.com/deepseek-ai/DualPipe)   
- DualPipe는 [DeepSeek-V3 Technical Report](https://arxiv.org/pdf/2412.19437)에서 소개된 혁신적인 양방향 파이프라인 병렬 알고리듬  
- 순방향 및 역방향 계산-통신 단계를 완전히 오버랩하여 파이프라인 버블을 줄이는 역할을 함  
- 보다 자세한 계산-통신 오버랩 정보는 [profile data](https://github.com/deepseek-ai/profile-data)에서 확인 가능  
  
### [Expert Parallelism Load Balancer (EPLB)](https://github.com/deepseek-ai/eplb)  
- Expert Parallelism(EP)에서는 서로 다른 전문가(experts)를 각 GPU에 할당함  
- 그러나 전문가별 작업량이 다를 수 있기 때문에, GPU 간 부하를 균형 있게 조절하는 것이 중요  
- DeepSeek-V3에서는 **중복 전문가(redundant experts)** 전략을 사용하여 부하가 높은 전문가를 복제한 후, 이를 GPU에 효율적으로 배치하여 부하 균형을 맞춤  
- 또한, **그룹 제한 전문가 라우팅(group-limited expert routing)** 을 활용하여 같은 그룹의 전문가를 최대한 동일한 노드에 배치함으로써, 노드 간 데이터 전송을 최소화  
- 이를 재현 및 배포하기 쉽게 하기 위해, `eplb.py`에서 EP 부하 균형 알고리듬을 오픈소스로 제공함  
  - 이 알고리듬은 예상된 전문가 부하를 기반으로 균형 잡힌 전문가 복제 및 배치 계획을 계산  
  - 다만, 전문가 부하를 예측하는 구체적인 방법은 해당 저장소 범위를 벗어나며, 일반적으로 과거 통계를 이용한 이동 평균 방식이 많이 사용됨  
- 부하 균형 알고리즘은 두 가지 정책을 제공하며, 각각 다른 상황에서 사용됨.  
  - **계층적 부하 균형 (Hierarchical Load Balancing)**  
    - 서버 노드 수가 전문가 그룹 수를 나눌 수 있는 경우, **계층적 부하 균형** 정책을 사용하여 그룹 제한 전문가 라우팅을 최적화함  
    - 먼저, 전문가 그룹을 균등하게 노드에 배치하여 노드 간 부하를 균형 있게 조정함  
    - 이후, 각 노드 내에서 전문가를 복제함  
    - 마지막으로, 복제된 전문가를 개별 GPU에 배치하여 GPU 간 부하 균형을 맞춤  
    - 이 정책은 전문가 병렬 규모가 작은 **프리필링(prefilling) 단계**에서 사용 가능함  
  - **전역 부하 균형 (Global Load Balancing)**  
    - 그 외의 경우에는, **전역 부하 균형** 정책을 사용하여 전문가 그룹에 상관없이 전역적으로 전문가를 복제하고, 이를 개별 GPU에 배치함  
    - 이 정책은 전문가 병렬 규모가 큰 **디코딩(decoding) 단계**에서 적합함.  
  
### [DeepSeek Infra의 Profiling Data](https://github.com/deepseek-ai/profile-data)  
- DeepSeek의 학습 및 추론 프레임워크에서 프로파일링 데이터를 공개하여, 커뮤니티가 통신-계산 오버랩 전략과 저수준 구현 세부 사항을 더 잘 이해할 수 있도록 지원함   
- 이 프로파일링 데이터는 **PyTorch Profiler**를 사용하여 수집되었으며, 다운로드 후 **Chrome**에서는 `chrome://tracing`, **Edge**에서는 `edge://tracing`을 통해 시각화 가능  
- 또한, 실험에서는 **균형 잡힌 MoE 라우팅 전략**을 시뮬레이션하여 프로파일링을 진행  
- **학습 (Training)**  
  - 학습 프로파일 데이터는 [DualPipe](https://github.com/deepseek-ai/dualpipe)에서 순방향 및 역방향 청크의 오버랩 전략을 보여줌  
  - 각 청크는 **4개의 MoE (Mixture of Experts) 레이어**를 포함하며, DeepSeek-V3의 사전 학습 설정과 일치하는 병렬 구성을 가짐:  
- **추론 (Inference)**  
  - **프리필링(Prefilling)**  
    - 이 단계에서는 **두 개의 마이크로 배치**를 활용하여 계산과 all-to-all 통신을 오버랩함  
    - 또한, **주의(attention) 연산 부하를 두 마이크로 배치 간에 균형 있게 분배**하여 동일한 프롬프트가 여러 마이크로 배치로 나뉠 수 있도록 함  
  - **디코딩 (Decoding)**  
    - 디코딩에서도 프리필링과 마찬가지로 **두 개의 마이크로 배치를 사용하여 계산과 all-to-all 통신을 오버랩**함  
    - 그러나, 디코딩에서는 all-to-all 통신이 **GPU SM을 차지하지 않음** → **RDMA 메시지를 전송한 후 GPU SM을 해방**하며, 계산이 끝난 후 통신 완료를 대기하는 방식으로 동작함  
    - 더 자세한 **all-to-all 구현 정보는 [DeepEP](https://github.com/deepseek-ai/DeepEP)에서 확인 가능**  
  
### [DeepSeek Open Infra 로 공개되는 5개 오픈소스](https://news.hada.io/topic?id=19359) 중 4번째 임

## Comments



_No public comments on this page._
