Ce guide explique comment activer, désactiver et gérer la bibliothèque Collective Communication Analyzer (CoMMA). CoMMA collecte la télémétrie NCCL pour les Google Cloud services. Pour en savoir plus sur CoMMA, consultez Collective Communication Analyzer (CoMMA).
Activer CoMMA
CoMMA est préinstallé et activé si vous utilisez des images contenant le plug-in NCCL gIB. Pour obtenir la liste de ces images, consultez Images sur lesquelles CoMMA est activé.
Options d'installation
Si vous n'utilisez aucune de ces images et que vous souhaitez installer CoMMA, utilisez l'une des méthodes suivantes.
| Méthode d'installation | Types de machines compatibles |
|---|---|
| Image du bundle d'infrastructure Google (gIB) NCCL (recommandée pour les types de machines plus récents) | A4X Max, A4X, A4 High et A3 Ultra |
| Image de l'installateur CoMMA | A4X, A4 High et A3 Ultra |
| Compiler à partir de la source (obligatoire pour les types de machines plus anciens) | A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard et N1 avec GPU associés |
Installer CoMMA
Pour installer CoMMA, sélectionnez l'une des options suivantes :
Image gIB NCCL
Pour installer CoMMA à l'aide de l'image gIB NCCL, exécutez la commande suivante.
docker run --rm --name nccl-gib-installer --volume /usr/local/gib:/var/lib/gib \ us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib install \ --install-nccl
Image de l'installateur CoMMA
Vous pouvez obtenir les binaires CoMMA dans une image Docker autonome. Vous pouvez utiliser l'image Docker CoMMA, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer, comme initContainers pour installer les binaires CoMMA dans le conteneur de votre charge de travail.
Le conteneur stocke les binaires dans le répertoire /artifacts.
Pour utiliser l'image de l'installateur CoMMA, procédez comme suit :
Installez CoMMA dans votre charge de travail en ajoutant l'extrait suivant à votre
initContainers:- name: profiler-plugin-installer image: us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer:latest imagePullPolicy: Always volumeMounts: - name: nccl-plugin-volume mountPath: /usr/local/nccl-plugin command: - /bin/sh - -c - | set -ex rm -rf /usr/local/nccl-plugin/lib64/libnccl-profiler.so cp /artifacts/libnccl_profiler.so /usr/local/nccl-plugin/lib64/libnccl-profiler.so # GPUViz is a dependency of telemetry insights such as straggler detection rm -rf /usr/local/nccl-plugin/lib64/libGPUViz.so cp /artifacts/libGPUViz.so /usr/local/nccl-plugin/lib64/
L'extrait de configuration YAML spécifie un conteneur pour l'installation de CoMMA.
L'extrait spécifie l'image de conteneur de l'installateur, sa stratégie d'extraction et une installation de volume pour le plug-in.
La même installation de volume doit être installée sur le conteneur de votre charge de travail avec
<mount-path>/lib64 ajouté à LD_LIBRARY_PATH.
La section command exécute un script shell pour supprimer toute bibliothèque de profileur existante. Elle copie ensuite la nouvelle bibliothèque de profileur dans le répertoire de plug-in désigné.
Le script s'assure que la version correcte du plug-in de profileur est installée et prête à être utilisée.
Compiler à partir de la source
Pour compiler la bibliothèque CoMMA à partir de la source, installez les logiciels suivants :
- Le langage de programmation Rust, requis par le compilateur et Cargo. Il peut être installé avec rustup ou des packages système.
Libclang-dev, requis parbindgen.CMakeversion 3.10 ou ultérieure
Pour compiler à partir de la source, procédez comme suit :
Clonez le dépôt et ses sous-modules.
git clone --recurse-submodules https://github.com/google/CoMMA
Compilez les binaires à l'aide de Cargo.
cargo build --release
Cargo enregistre le binaire dans
target/release/libnccl_profiler.so.Activez NCCL pour charger les bibliothèques CoMMA à l'aide de l'une des méthodes suivantes :
- Copiez le fichier
libnccl_profiler.socompilé dans un répertoire de votreLD_LIBRARY_PATH. Renommez-lelibnccl-profiler.so(utilisez un trait d'union au lieu d'un trait de soulignement). - Vous pouvez également définir la variable d'environnement
NCCL_PROFILER_PLUGINpour spécifier le chemin d'accès au fichier.so.
- Copiez le fichier
Vérifier l'installation ou l'activation
Pour vérifier que NCCL charge les bibliothèques CoMMA, examinez les journaux NCCL :
- Activez la journalisation du débogage NCCL. Activez la journalisation en définissant la variable d'environnement
NCCL_DEBUG=INFO. Vous pouvez également spécifier un niveau de débogage plus détaillé. Pour en savoir plus sur les options de débogage, consultez laNCCL_DEBUGsection de la documentation NVIDIA. - Spécifiez le sous-système
INITpour le débogage. SpécifiezINITen définissant laNCCL_DEBUG_SUBSYS=INITvariable d'environnement. Vous pouvez également spécifier d'autres sous-systèmes. Pour en savoir plus sur les options de sous-système, consultez laNCCL_DEBUG_SUBSYSsection. - Recherchez dans le journal NCCL une ligne semblable à la suivante :
NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN
Désactiver CoMMA
Si CoMMA est déjà installé, empêchez-le de collecter la télémétrie NCCL en définissant la variable d'environnement CoMMA NCCL_TELEMETRY_MODE=0 avant d'exécuter vos charges de travail. Pour définir des variables d'environnement
CoMMA, consultez Définir des variables d'environnement.
Pour réactiver CoMMA après l'avoir désactivé, procédez comme suit :
Définissez la variable d'environnement
NCCL_TELEMETRY_MODEsur une valeur différente de zéro. Par exemple, pour utiliser le mode par défaut, spécifiezNCCL_TELEMETRY_MODE=3.Pour consulter la liste complète des options, consultez
NCCL_TELEMETRY_MODEdans le tableau Options de configuration.
Configurer et afficher la télémétrie NCCL CoMMA
Si CoMMA est activé dans votre environnement, vous pouvez configurer le type de données de télémétrie qu'il collecte en définissant le niveau de précision des données. Cette section explique comment définir la précision des données et les options disponibles.
Vous pouvez également examiner les données collectées par CoMMA pour vérifier qu'elles sont conformes aux règles de sécurité de votre organisation ou pour les analyser à l'aide de vos propres outils d'analyse de la télémétrie NCCL. Pour ce faire, exportez les données brutes dans un fichier local.
Définir la précision des données
CoMMA collecte la télémétrie NCCL à différents niveaux de précision. Configurez le niveau de précision à l'aide de variables d'environnement. Pour définir des variables d'environnement CoMMA, consultez Définir des variables d'environnement.
- Comportement par défaut : par défaut, CoMMA suit les opérations NCCL,
y compris les opérations collectives et peer-to-peer, les métadonnées de ces
opérations et les délais d'exécution. Il utilise les variables d'environnement suivantes :
NCCL_PROFILER_TRACK_NCCLOP=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
- Pour activer des niveaux de collecte de données plus précis, définissez les variables d'environnement suivantes :
- Suivez le délai d'exécution des opérations de proxy en définissant
NCCL_PROFILER_TRACK_PROXYOP=true. - Suivez le temps passé sur chaque opération d'E/S réseau en définissant
NCCL_PROFILER_TRACK_STEPS=true. Ce paramètre offre le plus haut niveau de précision.
- Suivez le délai d'exécution des opérations de proxy en définissant
Pour consulter la liste complète des variables d'environnement, consultez Options de configuration.
Exporter des données vers un fichier local
Exportez les données brutes dans un fichier local pour les afficher. Pour exporter les données dans un fichier local et afficher le résultat, procédez comme suit :
- Définissez
NCCL_TELEMETRY_MODEsur1ou4. Pour en savoir plus sur la variable d'environnementNCCL_TELEMETRY_MODE, consultez Options de configuration. Définissez l'un des chemins d'exportation suivants :
- Définissez
NCCL_PROFILER_LATENCY_FILE=PATHpour exporter des traces d'événements détaillées dans un fichier local. RemplacezPATHpar un chemin d'accès tel que/tmp/latency-%p.txt. Définissez
NCCL_PROFILER_SUMMARY_FILE=PATHpour exporter des statistiques récapitulatives agrégées. RemplacezPATHpar un chemin d'accès tel que/tmp/summary-%p.txt.Le système remplace
%ppar l'ID de processus.
- Définissez
Examinez le résultat. Le résultat brut est un fichier JSON.
Options de configuration
Les sections suivantes récapitulent toutes les variables d'environnement que vous pouvez configurer pour CoMMA. Elles expliquent également comment définir une variable d'environnement.
Définir des variables d'environnement CoMMA
Pour définir une variable d'environnement CoMMA sur une valeur autre que celle par défaut, définissez des variables d'environnement. Vous pouvez définir des variables d'environnement sur la ligne de commande pour l'instance de calcul ou les ajouter à un script de démarrage. Si vous définissez les variables d'environnement sur la ligne de commande, la valeur ne persiste que par session. Pour rendre les variables d'environnement permanentes, placez-les dans le fichier ~/.bashrc, ~/.profile ou dans le fichier de démarrage utilisé par votre système d'exploitation. Pour en savoir plus, consultez la documentation de votre système d'exploitation.
Vous devez définir les variables d'environnement CoMMA avant le démarrage de votre charge de travail, car celle-ci lit les variables lors de l'initialisation de NCCL. Vous pouvez définir des variables d'environnement comme suit :
export ENVIRONMENT_VARIABLE=VALUE
Remplacez les éléments suivants :
ENVIRONMENT_VARIABLE: variable d'environnement que vous souhaitez définir, par exempleNCCL_TELEMETRY_MODE.VALUE: valeur de la variable d'environnement, par exemple0.
Variables d'environnement CoMMA
Cette section répertorie les variables d'environnement que vous pouvez définir pour CoMMA et leurs valeurs par défaut.
| Nom | Description | Par défaut | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
NCCL_PROFILER_AGGREGATE_STEPS |
Active (true) ou désactive (false)
l'agrégation des opérations de bloc réseau. |
true |
||||||||||
NCCL_PROFILER_GPUVIZ_LIB |
Spécifie le chemin d'accès à libGPUViz.so, une bibliothèque qui importe
la télémétrie NCCL vers les Google Cloud services. Cette bibliothèque encapsule l'
API de communication de l'agent.
L'API de communication de l'agent est l'interface que les agents, tels que les processus
exécutés dans votre système d'exploitation invité, utilisent pour établir des connexions sécurisées et
fiables avec les Google Cloud services.
Si vous utilisez une image gIB NCCL comme installateur ou l'une des images qui regroupent le plug-in gIB NCCL, vous n'avez pas besoin de définir cette variable d'environnement. |
|||||||||||
NCCL_PROFILER_LATENCY_FILE |
Spécifie le modèle de chemin d'accès pour le fichier de suivi de latence. Par exemple,
/tmp/latency-%p.txt.
Le système remplace %p dans le nom par l'ID de processus (pid).
Pour désactiver l'exportation basée sur des fichiers, annulez la définition de cette variable. |
|||||||||||
NCCL_PROFILER_PLUGIN |
Spécifie le chemin d'accès au binaire du plug-in de profileur. Si vous ne spécifiez pas ce paramètre, NCCL recherche libnccl-profiler.so dans le
LD_LIBRARY_PATH. |
|||||||||||
NCCL_PROFILER_SUMMARY_FILE |
Spécifie le chemin d'accès au fichier récapitulatif agrégé. Par exemple,
/tmp/summary-%p.txt.
Le système remplace %p dans le nom par l'ID de processus (pid).
Pour désactiver l'exportation basée sur des fichiers, annulez la définition de cette variable. |
|||||||||||
NCCL_PROFILER_SUMMARY_INTERVAL |
Spécifie l'intervalle pour la création de rapports récapitulatifs. Par exemple,
10s, 1m.
Compatible avec d, h, m, s,
ms, us, ns |
1m |
||||||||||
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP |
Active (true) ou désactive (false)
la surveillance des opérations de proxy NCCL interprocessus. |
true |
||||||||||
NCCL_PROFILER_TRACK_NCCLOP |
Active (true) ou désactive (false)
le suivi et la création de rapports pour les opérations NCCL,
y compris les communications collectives et point à point. |
true |
||||||||||
NCCL_PROFILER_TRACK_PROXYOP |
Active (true) ou désactive (false) le suivi et la création de rapports sur les opérations de proxy. |
false |
||||||||||
NCCL_PROFILER_TRACK_STEPS |
Active (true) ou désactive (false)
le suivi et la création de rapports sur les opérations de bloc réseau. |
false |
||||||||||
NCCL_TELEMETRY_MODE |
Contrôle l'emplacement d'exportation des données de télémétrie NCCL.
Les options incluent les suivantes :
|
3 |
Étape suivante
- Découvrez comment résoudre les problèmes liés à CoMMA.
- Découvrez comment détecter et résoudre les traînards.