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 |