Activer, désactiver et configurer CoMMA

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 servicesGoogle Cloud . 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 avec CoMMA 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 anciens types de machines) 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 NCCL gIB, 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 votre conteneur de 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 :

  1. Installez NCCL 2.23 ou version ultérieure.

  2. 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 du conteneur d'installation, sa stratégie d'extraction et un montage de volume pour le plug-in. Le même montage de volume doit être monté sur le conteneur de 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. Il copie ensuite la nouvelle bibliothèque de profileur dans le répertoire de plug-ins désigné. Le script garantit que la bonne version du plug-in de profileur est installée et prête à l'emploi.

En compilant à partir de la source

Pour compiler la bibliothèque CoMMA à partir de la source, installez les logiciels suivants :

  • le langage de programmation Rust, dont le compilateur et Cargo ont besoin. Il peut être installé avec rustup ou des packages système.
  • Libclang-dev, qui nécessite bindgen.
  • CMake version 3.10 ou ultérieure

Pour compiler à partir de la source, procédez comme suit :

  1. Clonez le dépôt et ses sous-modules.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Compilez les binaires à l'aide de Cargo.

    cargo build --release

    Cargo enregistre le binaire dans target/release/libnccl_profiler.so.

  3. Activez NCCL pour charger les bibliothèques CoMMA à l'aide de l'une des méthodes suivantes :

    • Copiez le fichier libnccl_profiler.so compilé dans un répertoire de votre LD_LIBRARY_PATH. Renommez-le libnccl-profiler.so (utilisez un tiret au lieu d'un trait de soulignement).
    • Vous pouvez également définir la variable d'environnement NCCL_PROFILER_PLUGIN pour spécifier le chemin d'accès au fichier .so.

Vérifier l'installation ou l'activation

Pour vérifier que NCCL charge les bibliothèques CoMMA, consultez les journaux NCCL :

  1. Activez la journalisation des données de 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 la section NCCL_DEBUG de la documentation NVIDIA.
  2. Spécifiez le sous-système INIT pour le débogage. Spécifiez INIT en définissant la variable d'environnement NCCL_DEBUG_SUBSYS=INIT. Vous pouvez également spécifier d'autres sous-systèmes. Pour plus d'options de sous-système, consultez la section NCCL_DEBUG_SUBSYS.
  3. 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 NCCL_TELEMETRY_MODE=0 CoMMA avant d'exécuter vos charges de travail. Pour définir les variables d'environnement CoMMA, consultez Définir des variables d'environnement.

Pour réactiver CoMMA après l'avoir désactivé :

  1. Définissez la variable d'environnement NCCL_TELEMETRY_MODE sur une valeur différente de zéro. Par exemple, pour utiliser le mode par défaut, spécifiez NCCL_TELEMETRY_MODE=3.

    Pour consulter la liste complète des options, consultez NCCL_TELEMETRY_MODE dans le tableau Options de configuration.

  2. Vérifiez que CoMMA fonctionne.

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 le niveau de 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 avec 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 les 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 temps d'exécution. Il utilise les variables d'environnement suivantes :
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_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 temps 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 niveau de précision le plus élevé.

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 vers un fichier local pour les afficher. Pour exporter les données dans un fichier local et afficher le résultat, procédez comme suit :

  1. Définissez NCCL_TELEMETRY_MODE sur 1 ou 4. Pour en savoir plus sur la variable d'environnement NCCL_TELEMETRY_MODE, consultez Options de configuration.
  2. Définissez l'un des chemins d'exportation suivants :

    • Définissez NCCL_PROFILER_LATENCY_FILE=PATH pour exporter des traces d'événements détaillées dans un fichier local. Remplacez PATH par un chemin d'accès tel que /tmp/latency-%p.txt.
    • Définissez NCCL_PROFILER_SUMMARY_FILE=PATH pour exporter les statistiques récapitulatives agrégées. Remplacez PATH par un chemin d'accès tel que /tmp/summary-%p.txt.

      Le système remplace %p par l'ID du processus.

  3. 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. Ils expliquent également comment définir une variable d'environnement.

Définir les 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 en 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 exemple, NCCL_TELEMETRY_MODE).
  • VALUE : valeur de la variable d'environnement, par exemple 0.

Variables d'environnement CoMMA

Cette section liste 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 blocs 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 services Google Cloud . 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 s'exécutant dans votre système d'exploitation invité, utilisent pour établir des connexions sécurisées et fiables avec les services Google Cloud .

Si vous utilisez une image NCCL gIB comme programme d'installation ou l'une des images qui regroupent le plug-in NCCL gIB, 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 au fichier de trace 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, supprimez 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 Indique 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, supprimez la définition de cette variable.
NCCL_PROFILER_SUMMARY_INTERVAL Spécifie l'intervalle pour les 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 inter-processus. true
NCCL_PROFILER_TRACK_NCCLOP Active (true) ou désactive (false) le suivi et les 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 le reporting des opérations de proxy. false
NCCL_PROFILER_TRACK_STEPS Active (true) ou désactive (false) le suivi et le reporting des opérations de blocs réseau. false
NCCL_TELEMETRY_MODE Contrôle l'emplacement d'exportation des données de télémétrie NCCL. Voici les options disponibles :

Valeur Description
0 Désactive la collecte de données de télémétrie NCCL.
1 Exporte la télémétrie NCCL dans un fichier local. Avec cette méthode, la télémétrie NCCL n'est pas disponible pour Google.
3 Exporte la télémétrie NCCL vers les services Google.
4 Exporte la télémétrie NCCL vers un fichier local et les services Google.
3

Étapes suivantes