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 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 :

  1. Installez NCCL 2.23 ou une 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 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 par 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 trait d'union 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, examinez les journaux NCCL :

  1. 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 la NCCL_DEBUG section de la documentation NVIDIA.
  2. Spécifiez le sous-système INIT pour le débogage. Spécifiez INIT en définissant la NCCL_DEBUG_SUBSYS=INIT variable d'environnement. Vous pouvez également spécifier d'autres sous-systèmes. Pour en savoir plus sur les options de sous-système, consultez la NCCL_DEBUG_SUBSYS section.
  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 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 :

  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 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=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 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.

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 :

  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 des 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 de 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. 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 exemple NCCL_TELEMETRY_MODE.
  • VALUE: valeur de la variable d'environnement, par exemple 0.

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 :

Valeur Description
0 Désactive la collecte 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 à la fois dans un fichier local et vers les services Google.
3

Étape suivante