deepseek-ai/DeepEP
DeepEP: an efficient expert-parallel communication library
DeepEP – Mixture-of-Experts (MoE) 모델을 위한 고성능 커뮤니케이션
개요 – DeepEP(DeepEveryParallel)는 대규모 Mixture-of-Experts(MoE) 학습 및 추론에 필요한 초고속 GPU 간 통신 프리미티브를 제공하는 C++/Python 라이브러리입니다. 전문가 병렬(EP) 올투올 커널과 함께 파이프라인, 컨텍스트, 데이터 병렬 및 원격 메모리 액세스(Engram)에 대한 실험적 지원을 구현합니다. 커널은 컴패니언 도구인 DeepJIT를 사용하여 런타임에 JIT 컴파일되어 사용 중인 정확한 GPU 아키텍처에 맞게 튜닝됩니다.
중요성 – MoE 모델은 신경망 계층을 많은 전문가로 분할하고 각 토큰을 그중 몇 개로 라우팅합니다. 이는 모델 용량을 크게 늘리지만 모든 계층에서 GPU 간 텐서 이동이 필요합니다. 기존 NCCL 컬렉티브는 병목 현상이 됩니다. DeepEP의 EP 커널은 고처리량, 저지연 올투올 디스패치/컴바인을 달성하고, FP8 디스패치를 지원하며, NVLink를 통해 전문가 가중치를 프리페치하고 중복 그래디언트를 줄여 MoonEP 및 UltraEP에서 설명된 '전문가 복제' 기술을 가능하게 합니다.
주요 기능
- JIT 컴파일된 EP 커널(DeepJIT 통해) – 런타임 시 정확한 SM 수와 GPU 모델로 컴파일됩니다.
- NCCL-Gin 백엔드 – 기존 NCCL 통신자를 재사용할 수 있는 경량 디바이스 사이드 API.
- 통합
EPBufferAPI – 디스패치, 컴바인, 가중치 프리페치, 그래디언트 감소 및 버퍼 할당을 처리하는 단일 객체. - 실험적 프리미티브 – Engram(RDMA 기반 원격 메모리), 파이프라인 병렬(PP), 컨텍스트/데이터 병렬 워크로드용 버킷 컬렉티브.
- NVIDIA Hopper+ GPU 지원 및 별도 리포지토리를 통한 Huawei Ascend 950 NPU 지원.
- 분석적 SM/QP 수 추정 – 자동 튜닝 불필요.
- 중복 전문가 지원 – 동적 전문가 복제를 위한
lb_prefetch_weights/lb_reduce_grads.
일반적인 워크플로
EPBuffer생성 – MoE 하이퍼파라미터(은닉 크기, top-k, 전문가 수, FP8 플래그)로 생성합니다. 버퍼는 올투올 커널에 할당할 SM 수를 추정합니다.- 디스패치 –
buffer.dispatch(...)를 호출하여 모든 랭크에 걸쳐 적절한 전문가에게 토큰을 라우팅합니다. 이 호출은EventOverlap을 반환하며 나중에 대기할 수 있어 계산-통신 오버랩이 가능합니다. - 전문가 GEMM 실행 – 수신된 토큰에 대해 실행합니다.
- 컴바인 –
buffer.combine(...)(또는 역방향 헬퍼)를 호출하여 전문가 출력을 원래 랭크로 줄입니다. - (선택) 부하 분산 –
lb_prefetch_weights와lb_reduce_grads를 사용하여 부하가 높은 전문가를 NVLink 연결 GPU 간에 복제합니다.
설치 스냅샷
# 서브모듈(DeepJIT) 복제 및 초기화
git submodule update --init --recursive
# 호환 NCCL 패키지 설치(CUDA 13용 예시)
python -m pip install "nvidia-nccl-cu13>=2.32.3" --no-deps
# 휠 빌드 및 설치
bash install.sh
빌드는 로컬 CUDA, NCCL 및 C++20 툴체인에 대해 C++ 확장을 컴파일합니다. 설치 시 GPU는 필요 없습니다. 커널은 첫 사용 시 컴파일됩니다.
DeepEP 사용 시기
- 대규모 MoE 모델(예: 수천 개의 전문가를 가진 GPT 스타일)의 학습 또는 추론.
- GPU 간 부하 균형을 위해 전문가 복제가 필요한 시나리오.
- NVLink 노드 내 링크 및 선택적으로 RDMA 노드 간 네트워크가 있는 시스템.
- 이미 PyTorch 2.x를 사용 중이며 올투올 통신 계층의 드롭인 교체를 원하는 프로젝트.
제한 사항 / 실험적 부분
- Engram, PP 및 버킷 컬렉티브는 여전히 실험적입니다.
- EP 커널은 GPU SM이 필요하므로 순수 RDMA 전용 모드는 지원되지 않습니다.
- 최신 하드웨어(NVIDIA Hopper 이상) 및 CUDA 13.1+ 필요.
리소스
- 메인 리포지토리: https://github.com/deepseek-ai/DeepEP
- 런타임 커널 컴파일용 DeepJIT 서브모듈.
- Ascend 호환 포크: https://github.com/deepseek-ai/DeepEP-Ascend
- 관련 부하 분산 프로젝트: MoonshotAI/MoonEP, Dots-Infra/UltraEP.
DeepEP는 전문가 병렬 딥러닝 워크로드를 위한 특수 통신 라이브러리로, JIT 컴파일된 커널과 API를 제공하여 연구자와 엔지니어가 최신 GPU 클러스터에서 MoE 모델을 효율적으로 확장할 수 있게 합니다.
관련
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트