DeepEP: MoE 모델을 위해 특별히 통신 효율성을 최적화하는 오픈 소스 도구(딥시크 오픈 소스 주간 2일차)
일반 소개
DeepEP는 deepseek-ai 팀에서 개발한 오픈 소스 통신 라이브러리로, 전문가 혼합(MoE) 모델과 전문가 병렬 처리(EP)의 훈련 및 추론 효율성을 향상시키는 데 중점을 두고 있습니다. 대규모 분산 시스템을 위해 GPU 간의 데이터 교환을 최적화하여 높은 처리량과 저지연 통신을 지원하며, NVLink 및 RDMA 기술을 지원하고 FP8과 같은 저정밀 연산과 호환되며 각각 훈련 및 추론 시나리오를 위한 고효율 커널로 설계된 DeepEP를 제공합니다. 이 라이브러리는 딥시크 팀의 프로덕션 환경, 특히 노드 간 협업이 필요한 MoE 모델에서 시스템의 전반적인 성능을 크게 향상시킬 수 있는 것으로 입증되었으며, AI 연구자와 개발자가 효율적인 딥러닝 모델을 구축하는 데 강력한 보조 도구가 되고 있습니다. 현재 DeepEP는 GitHub에서 오픈소스로 제공되고 있으며, 커뮤니티에서 개선에 참여할 수 있습니다.

기능 목록
- 효율적인 올투올 커뮤니케이션GPU 간 올투올 통신을 최적화하고 노드 내 NVLink 및 노드 간 RDMA를 지원하여 빠르고 안정적인 데이터 교환을 보장합니다.
- 높은 처리량 교육 지원대규모 데이터 전송을 처리하고 모델 학습 효율성을 향상시킬 수 있는 학습 및 추론 사전 채우기를 위해 설계된 커널을 제공합니다.
- 지연 시간이 짧은 추론 커널추론 및 디코딩 단계에서는 실시간 애플리케이션 시나리오에 적합한 순수 RDMA 기술을 사용하여 지연 시간을 줄입니다.
- FP8 저정밀 산술FP8 배포에 대한 기본 지원으로 리소스에 민감한 환경에서도 성능을 유지하면서 컴퓨팅 비용을 절감할 수 있습니다.
- 유연한 리소스 제어스트리밍 멀티프로세서(SM) 수 조정을 지원하여 개발자가 하드웨어 조건에 따라 구성을 최적화할 수 있습니다.
- 통신과 컴퓨팅 간의 중복후크 메커니즘을 통한 원활한 통신 및 연산으로 GPU 활용도를 향상시킵니다.
- 도메인 간 대역폭 최적화DeepSeek-V3의 패킷 제한 도메인 알고리즘을 위해 NVLink에서 RDMA로 효율적인 데이터 포워딩 지원을 제공합니다.
도움말 사용
설치 프로세스
DeepEP는 GitHub 기반의 오픈 소스 프로젝트로, 사용하려면 수동으로 다운로드하고 환경을 구성해야 합니다. 자세한 설치 단계는 다음과 같습니다:
1. 전제 조건
- 운영 체제GPU 및 네트워크 하드웨어와의 호환성을 위해 Linux(예: 우분투 20.04 이상)를 권장합니다.
- 하드웨어 요구 사항NVLink 또는 RDMA 지원 GPU(예: NVIDIA H800)가 장착되어 있고 고속 네트워크(예: InfiniBand 400Gb/s)에 연결되어 있습니다.
- 소프트웨어 종속성::
- CUDA 툴킷(CUDA 11.x 또는 12.x와 같은 하드웨어와 호환되는 권장 버전).
- NCCL(NVIDIA 집단 커뮤니케이션 라이브러리).
- NVSHMEM의 수정된 버전(DeepEP는 통신 기능에 의존하며 별도로 설치해야 함).
- Python 3.8 이상(테스트 및 스크립트 실행용).
2. DeepEP 소스 코드 다운로드
터미널을 열고 다음 명령을 실행하여 리포지토리를 복제합니다:
git clone https://github.com/deepseek-ai/DeepEP.git
cd DeepEP
3. NVSHMEM 설치
DeepEP는 수정된 버전의 NVSHMEM을 사용하므로 공식적으로 제공된 다음을 참조하세요.NVSHMEM 설치 가이드. 간단한 단계는 다음과 같습니다:
- NVSHMEM 소스 코드를 다운로드하고 DeepEP에서 제공하는 패치를 적용합니다(
third-party/nvshmem.patch
). - 컴파일하고 설치합니다:
cd nvshmem patch -p1 < ../third-party/nvshmem.patch make -j && sudo make install
4. DeepEP 컴파일
DeepEP 디렉토리로 이동하여 통신 라이브러리를 컴파일합니다:
make
컴파일이 완료되면 프로젝트에서 호출할 수 있는 커널 파일이 생성됩니다.
5. 환경 변수 구성
DeepEP가 올바르게 작동하도록 하려면 가상 채널 할당과 같은 NVSHMEM 관련 매개변수를 설정해야 합니다:
export NVSHMEM_IB_SL=0 # 设置虚拟通道,避免流量冲突
적응형 라우팅을 사용해야 하는 경우 추가 구성을 사용할 수 있습니다(지연 시간이 짧은 커널만 해당):
export NVSHMEM_ENABLE_ADAPTIVE_ROUTING=1
6. 테스트 설치
제공된 테스트 스크립트를 실행하여 DeepEP 기능을 확인합니다:
python tests/test_low_latency.py
출력에 성공적인 통신이 표시되면 설치가 완료된 것입니다.
사용법
DeepEP는 주로 MoE 모델에 통합된 워크플로우를 통해 사용되며, 다음은 주요 기능에 대한 자세한 사용 방법 가이드입니다:
기능 1: 높은 처리량 교육 실행
DeepEP의 높은 처리량 커널은 MoE 모델의 분산 학습에 적합합니다. DeepSeek-V3 기반 모델이 있다고 가정하면 아래 단계를 따를 수 있습니다:
- 모델 및 데이터 준비MoE 모델이 전문가 병렬 로직으로 구성되어 있고 데이터 세트를 학습할 준비가 되었는지 확인합니다.
- DeepEP 커널 호출하기교육 스크립트에서 DeepEP의 모든 커뮤니케이션 인터페이스를 소개합니다. 예시:
#include "deep_ep.h" void moe_train(float* input, float* output, int size) { deep_ep_all_to_all(input, output, size, FP8); }
- 구성 하드웨어: 예를 들어 사용할 GPU 장치를 지정합니다:
CUDA_VISIBLE_DEVICES=0,1,2,3 ./train_script
- 러닝 트레이닝훈련 시작 후 DeepEP는 NVLink와 RDMA 간의 통신을 자동으로 최적화합니다.
기능 2: 짧은 지연 시간 추론
지연 시간이 짧은 커널은 온라인 대화 시스템과 같은 실시간 추론 작업에 적합합니다:
- 모델 로드: 사전 학습된 MoE 모델을 메모리에 로드합니다.
- 추론 커널 호출하기: 순수 RDMA 통신 인터페이스를 사용합니다. 예시:
#include "deep_ep.h" void moe_infer(float* query, float* result, int batch_size) { deep_ep_low_latency_all_to_all(query, result, batch_size); }
- 추론 속도 테스트: 다음 명령을 실행하여 지연 시간을 측정합니다:
python tests/test_inference.py --batch_size 128 --hidden_size 7168
출력에는 각 배치에 대한 추론 시간이 표시되어 실시간 요구 사항이 충족되는지 확인할 수 있습니다.
기능 3: FP8 컴퓨팅 최적화
DeepEP는 계산 비용을 줄이기 위해 FP8 배포를 지원합니다:
- FP8 모드 활성화통신 인터페이스를 호출할 때 데이터 유형을 FP8로 지정합니다.
- 인증 정확도테스트 스크립트를 실행하여 FP8과 BF16의 성능 및 정확도 차이를 비교합니다:
python tests/test_fp8.py
- 프로덕션에 적용FP8 구성을 기존 학습 또는 추론 프로세스에 통합합니다.
기능 4: 리소스 제어 및 최적화
하드웨어에 맞게 SM의 수를 조정합니다:
- 하드웨어 SM 수 보기사용
nvidia-smi
GPU의 스트림 프로세서 수를 확인합니다. - SM 한도 설정: 스크립트에 지정됩니다:
deep_ep_set_sm_limit(32); // 限制为32个SM
- 성능 테스트: SM 수를 조정한 후 벤치마크를 실행하여 최적의 구성을 찾습니다.
주의
- 네트워크 구성DeepEP는 인피니밴드 네트워크에서 최적의 테스트를 거쳤으며, RoCE는 호환성에 대한 추가 검증이 필요합니다.
- 적응형 라우팅지연 시간이 짧은 커널만 이 기능을 지원하며, 일반 커널에서 이 기능을 활성화하면 교착 상태가 발생할 수 있습니다.
- 클러스터 튜닝모든 테스트 스크립트를 실행하는 것이 좋습니다(예
tests/
디렉터리)를 사용하여 클러스터에 맞게 구성을 자동으로 조정할 수 있습니다.
이러한 단계를 통해 DeepEP를 빠르게 시작하고 MoE 모델에서 통신 최적화 기능을 최대한 활용할 수 있습니다.
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...