Attivare, disattivare e configurare CoMMA

Questa guida descrive come attivare, disattivare e gestire la libreria Collective Communication Analyzer (CoMMA). CoMMA raccoglie la telemetria NCCL per i Google Cloud servizi. Per saperne di più su CoMMA, consulta Collective Communication Analyzer (CoMMA).

Attivare CoMMA

CoMMA è preinstallato e attivato se utilizzi immagini che contengono il plug-in NCCL gIB. Per un elenco di queste immagini, consulta Immagini con CoMMA attivato.

Opzioni di installazione

Se non utilizzi nessuna di queste immagini e vuoi installare CoMMA, utilizza uno dei seguenti metodi.

Metodo di installazione Tipi di macchine supportati
Immagine del bundle dell'infrastruttura Google (gIB) NCCL (consigliata per i tipi di macchine più recenti) A4X Max, A4X, A4 High e A3 Ultra
Immagine di installazione di CoMMA A4X, A4 High e A3 Ultra
Crea dal codice sorgente (obbligatorio per i tipi di macchine meno recenti) A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard e N1 con GPU collegate

Installare CoMMA

Per installare CoMMA, seleziona una delle seguenti opzioni:

Immagine NCCL gIB

Per installare CoMMA utilizzando l'immagine NCCL gIB, esegui il seguente comando.

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

Immagine di installazione di CoMMA

Puoi ottenere i file binari di CoMMA in un'immagine Docker autonoma. Puoi utilizzare l'immagine Docker di CoMMA, us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer, come initContainers per installare i file binari di CoMMA nel container del carico di lavoro. Il container memorizza i file binari nella directory /artifacts.

Per utilizzare l'immagine di installazione di CoMMA, completa i seguenti passaggi:

  1. Installa NCCL 2.23 o versioni successive.

  2. Installa CoMMA nel carico di lavoro aggiungendo il seguente snippet a 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/
    

Lo snippet di configurazione YAML specifica un container per l'installazione di CoMMA. Lo snippet specifica l'immagine container del programma di installazione, la relativa policy di pull e un volume mount per il plug-in. Lo stesso volume mount deve essere montato nel container del carico di lavoro con <mount-path>/lib64 aggiunto a LD_LIBRARY_PATH. La sezione command esegue uno script shell per rimuovere qualsiasi libreria di profiler esistente. Poi copia la nuova libreria di profiler nella directory dei plug-in designata. Lo script garantisce che la versione corretta del plug-in del profiler sia installata e pronta per l'uso.

Crea dal codice sorgente

Per creare la libreria CoMMA dal codice sorgente, installa il seguente software:

  • Linguaggio di programmazione Rust, richiesto dal compilatore e da Cargo. Può essere installato con rustup o pacchetti di sistema
  • Libclang-dev, richiesto da bindgen.
  • CMake versione 3.10 o successive

Per creare dal codice sorgente, completa i seguenti passaggi:

  1. Clona il repository e i relativi sottomoduli.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Compila i file binari utilizzando Cargo.

    cargo build --release

    Cargo salva il file binario in target/release/libnccl_profiler.so.

  3. Consenti a NCCL di caricare le librerie CoMMA utilizzando uno dei seguenti metodi:

    • Copia il file libnccl_profiler.so compilato in una directory in LD_LIBRARY_PATH. Rinominalo in libnccl-profiler.so (utilizza un trattino anziché un trattino basso).
    • In alternativa, imposta la variabile di ambiente NCCL_PROFILER_PLUGIN per specificare il percorso del file .so.

Verificare l'installazione o l'attivazione

Per verificare che NCCL carichi le librerie CoMMA, esamina i log NCCL:

  1. Attiva il logging di debug NCCL. Attiva il logging impostando la variabile di ambiente NCCL_DEBUG=INFO. Puoi anche specificare un livello di debug più dettagliato. Per ulteriori opzioni di debug, consulta la NCCL_DEBUG sezione nella documentazione NVIDIA.
  2. Specifica il sottosistema INIT per il debug. Specifica INIT impostando la NCCL_DEBUG_SUBSYS=INIT variabile di ambiente. Puoi anche specificare altri sottosistemi. Per ulteriori opzioni di sottosistema, consulta la NCCL_DEBUG_SUBSYS sezione.
  3. Trova una riga nel log NCCL simile alla seguente: NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN

Disattivare CoMMA

Se CoMMA è già installato, impedisci la raccolta della telemetria NCCL impostando la variabile di ambiente CoMMA NCCL_TELEMETRY_MODE=0 prima di eseguire i carichi di lavoro. Per impostare le variabili di ambiente CoMMA, consulta Impostare le variabili di ambiente.

Per riattivare CoMMA dopo averlo disattivato:

  1. Imposta la variabile di ambiente NCCL_TELEMETRY_MODE su un valore diverso da zero. Ad esempio, per utilizzare la modalità predefinita, specifica NCCL_TELEMETRY_MODE=3.

    Per esaminare l'elenco completo delle opzioni, consulta NCCL_TELEMETRY_MODE nella tabella Opzioni di configurazione.

  2. Verifica che CoMMA funzioni.

Configurare e visualizzare la telemetria NCCL di CoMMA

Se CoMMA è attivato nel tuo ambiente, puoi configurare il tipo di dati di telemetria che raccoglie impostando il livello di granularità dei dati. Questa sezione spiega come impostare la granularità dei dati e le opzioni disponibili.

Puoi anche esaminare i dati raccolti da CoMMA per verificare che siano conformi alle norme di sicurezza della tua organizzazione o per analizzarli con i tuoi strumenti di analisi della telemetria NCCL. Per farlo, esporta i dati non elaborati in un file locale.

Impostare la granularità dei dati

CoMMA raccoglie la telemetria NCCL a diversi livelli di granularità. Configura il livello di granularità utilizzando le variabili di ambiente. Per impostare le variabili di ambiente CoMMA, consulta Impostare le variabili di ambiente.

  • Comportamento predefinito: per impostazione predefinita, CoMMA monitora le operazioni NCCL, incluse quelle collettive e peer-to-peer, i metadati di queste operazioni e i tempi di completamento. Utilizza le seguenti variabili di ambiente:
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
  • Per attivare livelli di raccolta dei dati più granulari, imposta le seguenti variabili di ambiente:
    • Monitora il tempo di completamento delle operazioni proxy impostando NCCL_PROFILER_TRACK_PROXYOP=true.
    • Monitora il tempo trascorso per ogni operazione di I/O di rete impostando NCCL_PROFILER_TRACK_STEPS=true. Questa impostazione fornisce il livello di granularità più elevato.

Per esaminare l'elenco completo delle variabili di ambiente, consulta Opzioni di configurazione.

Esportare i dati in un file locale

Esporta i dati non elaborati in un file locale per visualizzarli. Per esportare i dati in un file locale e visualizzare l'output:

  1. Imposta NCCL_TELEMETRY_MODE su 1 o 4. Per scoprire di più sulla variabile di ambiente NCCL_TELEMETRY_MODE, consulta Opzioni di configurazione.
  2. Imposta uno dei seguenti percorsi di esportazione:

    • Imposta NCCL_PROFILER_LATENCY_FILE=PATH per esportare le tracce dettagliate degli eventi in un file locale. Sostituisci PATH con un percorso come /tmp/latency-%p.txt.
    • Imposta NCCL_PROFILER_SUMMARY_FILE=PATH per esportare le statistiche di riepilogo aggregate. Sostituisci PATH con un percorso come /tmp/summary-%p.txt.

      Il sistema sostituisce %p con l'ID processo.

  3. Rivedi l'output. L'output non elaborato è un file JSON.

Opzioni di configurazione

Le sezioni seguenti riepilogano tutte le variabili di ambiente che puoi configurare per CoMMA. Spiegano anche come impostare qualsiasi variabile di ambiente.

Impostare le variabili di ambiente CoMMA

Per impostare una variabile di ambiente CoMMA su un valore diverso da quello predefinito, imposta le variabili di ambiente. Puoi impostare le variabili di ambiente nella riga di comando per l'istanza di Compute o aggiungerle a uno script di avvio. Se imposti le variabili di ambiente nella riga di comando, il valore viene mantenuto solo per sessione. Per rendere permanenti le variabili di ambiente, inseriscile nel file ~/.bashrc, ~/.profile o in qualsiasi file di avvio utilizzato dal sistema operativo. Per saperne di più, consulta la documentazione del sistema operativo.

Devi impostare le variabili di ambiente CoMMA prima dell'avvio del carico di lavoro, perché il carico di lavoro legge le variabili durante l'inizializzazione di NCCL. Puoi impostare le variabili di ambiente nel seguente modo:

export ENVIRONMENT_VARIABLE=VALUE

Sostituisci quanto segue:

  • ENVIRONMENT_VARIABLE: la variabile di ambiente che vuoi impostare, ad esempio NCCL_TELEMETRY_MODE.
  • VALUE: il valore della variabile di ambiente, ad esempio 0.

Variabili di ambiente CoMMA

Questa sezione elenca le variabili di ambiente che puoi impostare per CoMMA e i relativi valori predefiniti.

Nome Descrizione Predefinito
NCCL_PROFILER_AGGREGATE_STEPS Attiva (true) o disattiva (false) l'aggregazione delle operazioni di chunk di rete. true
NCCL_PROFILER_GPUVIZ_LIB Specifica il percorso di libGPUViz.so, una libreria che carica la telemetria NCCL nei Google Cloud servizi. Questa libreria esegue il wrapping dell' API di comunicazione dell'agente. L'API di comunicazione dell'agente è l'interfaccia utilizzata dagli agenti, ad esempio i processi in esecuzione nel sistema operativo guest, per avviare connessioni sicure e affidabili con i Google Cloud servizi.

Se utilizzi un'immagine NCCL gIB come programma di installazione o una delle immagini che includono il plug-in NCCL gIB, non devi impostare questa variabile di ambiente.

NCCL_PROFILER_LATENCY_FILE Specifica il modello di percorso per il file di traccia della latenza. Ad esempio, /tmp/latency-%p.txt. Il sistema sostituisce %p nel nome con l'ID processo (PID).

Per disattivare l'esportazione basata su file, annulla l'impostazione di questa variabile.
NCCL_PROFILER_PLUGIN Specifica il percorso del file binario del plug-in del profiler.

Se non specifichi questa impostazione, NCCL cerca libnccl-profiler.so in LD_LIBRARY_PATH.
NCCL_PROFILER_SUMMARY_FILE Specifica il percorso del file di riepilogo aggregato. Ad esempio, /tmp/summary-%p.txt. Il sistema sostituisce %p nel nome con l'ID processo (PID).

Per disattivare l'esportazione basata su file, annulla l'impostazione di questa variabile.
NCCL_PROFILER_SUMMARY_INTERVAL Specifica l'intervallo per la generazione di report di riepilogo. Ad esempio, 10s, 1m. Supporta d, h, m, s, ms, us, ns 1m
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP Attiva (true) o disattiva (false) il monitoraggio delle operazioni proxy NCCL tra processi. true
NCCL_PROFILER_TRACK_NCCLOP Attiva (true) o disattiva (false) il monitoraggio e la generazione di report per le operazioni NCCL, incluse le comunicazioni collettive e point-to-point. true
NCCL_PROFILER_TRACK_PROXYOP Attiva (true) o disattiva (false) il monitoraggio e la generazione di report delle operazioni proxy. false
NCCL_PROFILER_TRACK_STEPS Attiva (true) o disattiva (false) il monitoraggio e la generazione di report delle operazioni di chunk di rete. false
NCCL_TELEMETRY_MODE Controlla la località di esportazione dei dati di telemetria NCCL. Le opzioni includono quanto segue:

Valore Descrizione
0 Disattiva la raccolta della telemetria NCCL.
1 Esporta la telemetria NCCL in un file locale. Con questo metodo, la telemetria NCCL non è disponibile per Google.
3 Esporta la telemetria NCCL nei servizi Google.
4 Esporta la telemetria NCCL sia nel file locale sia nei servizi Google.
3

Passaggi successivi