DeepEP : Un outil open source pour optimiser l'efficacité de la communication spécifiquement pour les modèles MoE (DeepSeek Open Source Week Day 2)
Introduction générale
DeepEP est une bibliothèque de communication open source développée par l'équipe deepseek-ai, qui se concentre sur l'amélioration de l'efficacité de la formation et du raisonnement des modèles de mélange d'experts (MoE) et du parallélisme d'experts (EP). DeepEP prend en charge les technologies NVLink et RDMA, est compatible avec les opérations de faible précision telles que le FP8, et a été conçu avec des noyaux à haute efficacité pour les scénarios d'entraînement et d'inférence respectivement. La bibliothèque a fait ses preuves dans l'environnement de production de l'équipe DeepSeek, en particulier pour les modèles MoE qui nécessitent une collaboration entre les nœuds, ce qui peut améliorer considérablement les performances globales du système, et constitue un assistant puissant pour les chercheurs et les développeurs en IA dans la construction de modèles d'apprentissage profond efficaces. DeepEP est actuellement en open-source sur GitHub, et la communauté est invitée à participer à son amélioration.

Liste des fonctions
- Des communications efficaces entre tous les acteursOptimisation de la communication entre les GPU et prise en charge de NVLink intra-nœud et de RDMA inter-nœuds pour garantir un échange de données rapide et stable.
- Soutien à la formation à haut débit: Fournit des noyaux conçus pour la formation et la prépopulation d'inférence qui peuvent gérer des transferts de données à grande échelle et améliorer l'efficacité de la formation des modèles.
- Noyau d'inférence à faible latencePour la phase d'inférence et de décodage, la technologie RDMA pure est utilisée pour réduire la latence, ce qui convient aux scénarios d'application en temps réel.
- Arithmétique de basse précision FP8La prise en charge native de la distribution FP8 réduit les coûts de calcul tout en maintenant les performances dans les environnements sensibles aux ressources.
- Contrôle flexible des ressourcesLa nouvelle version du logiciel de gestion de l'information est la suivante : elle prend en charge l'ajustement du nombre de multiprocesseurs (SM) en continu, ce qui permet aux développeurs d'optimiser la configuration en fonction des conditions matérielles.
- Chevauchement entre les communications et l'informatiqueCommunication et calcul transparents grâce au mécanisme de crochet afin d'améliorer l'utilisation du GPU.
- Optimisation de la bande passante entre domainesLa solution de transfert de données de NVLink vers RDMA pour l'algorithme Packet Limit Domain de DeepSeek-V3 est très efficace.
Utiliser l'aide
Processus d'installation
DeepEP est un projet open source basé sur GitHub qui nécessite un téléchargement manuel et la configuration de l'environnement à utiliser. Voici les étapes détaillées de l'installation :
1. les conditions préalables
- système d'exploitationLinux (par exemple Ubuntu 20.04 ou version ultérieure) est recommandé pour assurer la compatibilité avec le matériel GPU et réseau.
- exigences en matière de matérielLes systèmes de gestion de l'information : équipés de GPU compatibles NVLink ou RDMA (par exemple, NVIDIA H800) et connectés à des réseaux à haut débit (par exemple, InfiniBand 400Gb/s).
- dépendance logicielle: :
- CUDA Toolkit (version recommandée compatible avec le matériel, par exemple CUDA 11.x ou 12.x).
- NCCL (NVIDIA Collective Communication Library).
- Version modifiée de NVSHMEM (DeepEP s'appuie sur ses capacités de communication et doit être installé séparément).
- Python 3.8+ (pour les tests et l'exécution des scripts).
2. télécharger le code source de DeepEP
Ouvrez un terminal et exécutez la commande suivante pour cloner le dépôt :
git clone https://github.com/deepseek-ai/DeepEP.git
cd DeepEP
3) Installation de NVSHMEM
DeepEP s'appuie sur une version modifiée de NVSHMEM.Guide d'installation de NVSHMEM. Les étapes brèves sont les suivantes :
- Téléchargez le code source de NVSHMEM et appliquez le correctif fourni par DeepEP (situé dans le fichier
third-party/nvshmem.patch
). - Compilation et installation :
cd nvshmem patch -p1 < ../third-party/nvshmem.patch make -j && sudo make install
4) Compilation de DeepEP
Allez dans le répertoire DeepEP et compilez la bibliothèque de communication :
make
Après la compilation, les fichiers du noyau sont générés et peuvent être appelés dans le projet.
5. configuration des variables d'environnement
Pour que DeepEP fonctionne correctement, les paramètres liés à NVSHMEM, tels que l'affectation des canaux virtuels, doivent être définis :
export NVSHMEM_IB_SL=0 # 设置虚拟通道,避免流量冲突
Une configuration supplémentaire est disponible si vous devez activer le routage adaptatif (uniquement pour les noyaux à faible latence) :
export NVSHMEM_ENABLE_ADAPTIVE_ROUTING=1
6. test d'installation
Exécutez le script de test fourni pour vérifier la fonctionnalité du DeepEP :
python tests/test_low_latency.py
Si la sortie indique une communication réussie, l'installation est terminée.
Utilisation
DeepEP est principalement utilisé par le biais de flux de travail intégrés dans le modèle MoE, et ce qui suit est un guide détaillé sur les principales fonctionnalités :
Fonction 1 : Exécuter des formations à haut débit
Le noyau à haut débit de DeepEP est adapté à l'entraînement distribué des modèles MoE. En supposant que vous ayez un modèle basé sur DeepSeek-V3, vous pouvez suivre les étapes ci-dessous :
- Préparation des modèles et des donnéesLe modèle MoE : Assurez-vous que votre modèle MoE est configuré avec une logique parallèle experte et qu'il est prêt à recevoir des ensembles de données d'entraînement.
- Appel du noyau DeepEPIntroduction de l'interface de communication "tout-en-un" de DeepEP dans le script de formation. Exemple :
#include "deep_ep.h" void moe_train(float* input, float* output, int size) { deep_ep_all_to_all(input, output, size, FP8); }
- Matériel de configurationSpécifiez l'appareil GPU à utiliser, par exemple :
CUDA_VISIBLE_DEVICES=0,1,2,3 ./train_script
- entraînement à la course à piedDeepEP optimise automatiquement la communication entre NVLink et RDMA après l'initiation de l'entraînement.
Fonctionnalité 2 : raisonnement à faible latence
Les noyaux à faible latence conviennent aux tâches de raisonnement en temps réel, telles que les systèmes de dialogue en ligne :
- Modèles de chargementChargement du modèle MoE pré-entraîné dans la mémoire.
- Appel du noyau d'inférenceUtiliser une interface de communication RDMA pure. Exemple :
#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); }
- Test de la vitesse de raisonnementLe délai d'attente : Exécutez la commande suivante pour mesurer le délai d'attente :
python tests/test_inference.py --batch_size 128 --hidden_size 7168
La sortie indiquera le temps d'inférence pour chaque lot, garantissant ainsi que les exigences en matière de temps réel sont respectées.
Fonction 3 : Optimisation informatique du 8e PC
DeepEP prend en charge la distribution FP8 afin de réduire les coûts de calcul :
- Activer le mode FP8Spécifier le type de données comme FP8 lors de l'appel de l'interface de communication.
- Précision de la vérificationLe test d'évaluation de la performance et de l'exactitude des données : Exécutez le script de test pour comparer les différences de performance et d'exactitude entre le FP8 et le BF16 :
python tests/test_fp8.py
- Application à la productionLes configurations du FP8 peuvent être intégrées dans des processus d'apprentissage ou d'inférence existants.
Fonction 4 : Contrôle et optimisation des ressources
Ajuster le nombre de SM en fonction du matériel :
- Afficher le nombre de SM matériels: Utilisation
nvidia-smi
Vérifiez le nombre de processeurs de flux dans le GPU. - Fixer des limites au SM: spécifié dans le script :
deep_ep_set_sm_limit(32); // 限制为32个SM
- Performance des testsLes résultats de l'étude de faisabilité sont présentés dans le tableau ci-dessous : effectuer des tests après avoir ajusté le nombre de SM pour trouver la meilleure configuration.
mise en garde
- Configuration du réseauDeepEP est testé de manière optimale sur les réseaux InfiniBand, tandis que RoCE nécessite une vérification supplémentaire de la compatibilité.
- Routage adaptatifCette fonctionnalité n'est supportée que par les noyaux à faible latence ; l'activer pour les noyaux normaux peut entraîner des blocages.
- Optimisation des grappes d'entreprisesIl est recommandé d'exécuter tous les scripts de test (par ex.
tests/
) pour adapter automatiquement la configuration à votre cluster.
Grâce à ces étapes, vous pouvez rapidement commencer à utiliser DeepEP et tirer pleinement parti de ses capacités d'optimisation de la communication dans le modèle MoE.
© déclaration de droits d'auteur
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...