Caratteristiche di DeepEP

1

Quadro professionale di comunicazione distribuita

DeepEP è un framework di comunicazione distribuita di nuova generazione ottimizzato specificamente per gli scenari Mixture of Experts (MoE) ed Expert Parallel (EP). Il nostro framework offre kernel di comunicazione all-to-all ad alta velocità e bassa latenza per le GPU, supportando perfettamente lo scheduling MoE e le operazioni composte.

2

Architettura ad alte prestazioni

DeepEP, basato sulla tecnologia RDMA pura, fornisce un insieme di kernel a bassa latenza specificamente ottimizzati per le prestazioni di decodifica dell'inferenza, caratterizzati da un esclusivo metodo di sovrapposizione comunicazione-computazione basato su hook che raggiunge un'eccellente efficienza parallela senza occupare risorse SM.

3

Tecnologia innovativa

DeepEP supporta operazioni a bassa precisione, tra cui FP8, e fornisce un'ottimizzazione per l'algoritmo di group-constrained gating proposto in DeepSeek-V3. Il nostro framework supporta in particolare il trasferimento efficiente dei dati tra domini eterogenei, come NVLink e RDMA, garantendo prestazioni eccellenti nelle attività di formazione e prefetching dell'inferenza.

Che cos'è il DeepEP?

DeepEP è dedicato alle operazioni di distribuzione e fusione di MoE e supporta operazioni a bassa precisione, tra cui FP8. Allo stesso tempo, DeepEP è appositamente ottimizzato per l'algoritmo di group-limit gating proposto nel documento DeepSeek-V3 e fornisce una serie di core ad alte prestazioni per l'inoltro asimmetrico della larghezza di banda del dominio (ad esempio, da domini NVLink a domini RDMA). Questi core non solo hanno un elevato throughput per le attività di addestramento e pre-popolamento dell'inferenza, ma supportano anche il controllo del numero di multiprocessori (SM). Per gli scenari di decodifica dell'inferenza sensibili alla latenza, DeepEP include una serie di core RDMA puri a bassa latenza per ridurre al minimo la latenza. La libreria introduce anche un approccio di sovrapposizione comunicazione-computazione basato su hook che non consuma risorse SM, migliorando ulteriormente l'efficienza.

Che cos'è un modello di competenze miste (MoE)?

Un modello esperto ibrido è un'architettura di rete neurale che combina più reti "esperte", con una rete "gated" che decide a quali esperti indirizzare i dati in ingresso. Questa architettura consente al modello di crescere in modo significativo in termini di dimensioni, pur rimanendo efficiente dal punto di vista computazionale, poiché solo alcuni degli esperti vengono attivati alla volta anziché tutte le reti. Il concetto di MoE è stato proposto per la prima volta da Jacobs, Jordan e Hinton nel 1991, ma non è stato ampiamente utilizzato nella modellazione linguistica su larga scala fino agli ultimi anni. L'architettura MoE è utilizzata da Switch Transformers di Google, Z-Code di Microsoft e DeepSeek-V3 di DeepSeek, che consente l'addestramento e la distribuzione di modelli su larga scala attraverso l'attivazione rada degli esperti.

Prestazioni DeepEP

Kernel normali con NVLink e RDMA forwarding

Testiamo i kernel normali su H800 (~160 GB/s di larghezza di banda massima NVLink), con ciascuno collegato a una scheda di rete CX7 InfiniBand 400 Gb/s RDMA (~50 GB/s di larghezza di banda massima). E seguiamo l'impostazione di pre-training di DeepSeek-V3/R1 (4096 token per batch, 7168 nascosti, top-4 gruppi, top-8 esperti, FP8 dispatching e BF16 combining).

Tipo Spedizione #EP Larghezza di banda del collo di bottiglia Combinare #EP Larghezza di banda del collo di bottiglia
Intranodo 8 153 GB/s (NVLink) 8 158 GB/s (NVLink)
Internodo 16 43 GB/s (RDMA) 16 43 GB/s (RDMA)
Internodo 32 44 GB/s (RDMA) 32 47 GB/s (RDMA)
Internodo 64 46 GB/s (RDMA) 64 45 GB/s (RDMA)

Kernel a bassa latenza con RDMA puro

Testiamo kernel a bassa latenza su H800 con ciascuno collegato a una scheda di rete CX7 InfiniBand 400 Gb/s RDMA (~50 GB/s di larghezza di banda massima). E seguiamo una tipica impostazione di produzione di DeepSeek-V3/R1 (128 token per lotto, 7168 nascosti, top-8 esperti, dispatching FP8 e combinazione BF16).

Spedizione #EP Latenza Larghezza di banda RDMA Combinare #EP Latenza Larghezza di banda RDMA
8 163 noi 46 GB/s 8 318 noi 46 GB/s
16 173 noi 43 GB/s 16 329 noi 44 GB/s
32 182 noi 41 GB/s 32 350 noi 41 GB/s
64 186 noi 40 GB/s 64 353 noi 41 GB/s
128 192 noi 39 GB/s 128 369 noi 39 GB/s
256 194 noi 39 GB/s 256 360 noi 40 GB/s

Come utilizzare DeepEP?

L'utilizzo di DeepEP richiede una GPU Hopper, Python 3.8+, CUDA 12.3+, PyTorch 2.1+, nonché NVLink per la comunicazione intra-nodo e reti RDMA per la comunicazione cross-nodo. La libreria dipende da una versione modificata di NVSHMEM, che deve essere configurata prima dell'installazione.

Sviluppo

# Costruire e creare collegamenti simbolici per i file SO
NVSHMEM_DIR=/path/to/installato/nvshmem python setup.py build
# È possibile modificare i nomi specifici degli SO in base alla propria piattaforma.
ln -s build/lib.linux-x86_64-cpython-38/deep_ep_cpp.cpython-38-x86_64-linux-gnu.so

# Eseguire i casi di test
# NOTE: è possibile modificare la funzione `init_dist` in `tests/utils.py`.
# in base alle impostazioni del proprio cluster e lanciare in più nodi
python tests/test_intranode.py
python tests/test_internode.py
python tests/test_low_latency.py

Installazione

NVSHMEM_DIR=/path/to/installed/nvshmem python setup.py install

Più DeepEP: https://github.com/deepseek-ai/Deepep