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 serviziGoogle Cloud . Per saperne di più su CoMMA, consulta Collective Communication Analyzer (CoMMA).

Abilitare CoMMA

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

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 pacchetto dell'infrastruttura Google (gIB) NCCL (consigliata per i tipi di macchina più recenti) A4X Max, A4X, A4 High e A3 Ultra
Immagine del programma di installazione di CoMMA A4X, A4 High e A3 Ultra
Compila dall'origine (obbligatorio per i tipi di macchina precedenti) 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 gIB NCCL

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

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 del programma di installazione di CoMMA

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

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

  1. Installa NCCL 2.23 o versioni successive.

  2. Installa CoMMA nel tuo carico di lavoro aggiungendo il seguente snippet al tuo 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 dell'installer, il relativo criterio pull e un punto di montaggio del volume per il plug-in. Lo stesso punto di montaggio del volume deve essere montato nel contenitore del workload con <mount-path>/lib64 aggiunto a LD_LIBRARY_PATH. La sezione command esegue uno script shell per rimuovere eventuali librerie del profiler esistenti. e copia la nuova libreria del profiler nella directory dei plug-in designata. Lo script garantisce che la versione corretta del plug-in Profiler sia installata e pronta all'uso.

Crea da sorgente

Per creare la libreria CoMMA dall'origine, installa il seguente software:

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

Per eseguire la compilazione dal codice sorgente, completa i seguenti passaggi:

  1. Clona il repository e i relativi moduli secondari.

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

    cargo build --release

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

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

    • Copia il file libnccl_profiler.so compilato in una directory di 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. Abilita la registrazione impostando la variabile di ambiente NCCL_DEBUG=INFO. Puoi anche specificare un livello di debug più dettagliato. Per altre opzioni di debug, consulta la sezione NCCL_DEBUG nella documentazione NVIDIA.
  2. Specifica il sottosistema INIT per il debug. Specifica INIT impostando la variabile di ambiente NCCL_DEBUG_SUBSYS=INIT. Puoi anche specificare altri sottosistemi. Per altre opzioni del sottosistema, vedi la sezione NCCL_DEBUG_SUBSYS.
  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 NCCL_TELEMETRY_MODE=0 CoMMA prima di eseguire i workload. Per impostare le variabili di ambiente di 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.

Configura e visualizza la telemetria NCCL di CoMMA

Se CoMMA è abilitato 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 in linea con le 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 di 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 più granulari di raccolta dei dati, imposta le seguenti variabili di ambiente:
    • Tieni traccia del tempo di completamento delle operazioni proxy impostando NCCL_PROFILER_TRACK_PROXYOP=true.
    • Tieni traccia del tempo trascorso per ogni operazione di I/O di rete impostando NCCL_PROFILER_TRACK_STEPS=true. Questa impostazione offre 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, segui questi passaggi:

  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 statistiche riepilogative 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.

Imposta le variabili di ambiente CoMMA

Per impostare una variabile di ambiente CoMMA su un valore non predefinito, imposta le variabili di ambiente. Puoi impostare le variabili di ambiente nella riga di comando per l'istanza di calcolo 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 workload, poiché il workload 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 sui blocchi di rete. true
NCCL_PROFILER_GPUVIZ_LIB Specifica il percorso di libGPUViz.so, una libreria che carica la telemetria NCCL nei servizi Google Cloud . Questa libreria esegue il wrapping dell'API di comunicazione con l'agente. L'API di comunicazione dell'agente è l'interfaccia che gli agenti, come i processi in esecuzione nel sistema operativo guest, utilizzano per avviare connessioni sicure e affidabili con i servizi Google Cloud .

Se utilizzi un'immagine NCCL gIB come programma di installazione o una delle immagini che raggruppano 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, deseleziona questa variabile.
NCCL_PROFILER_PLUGIN Specifica il percorso del file binario del plug-in 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, deseleziona 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 sulle operazioni sui blocchi di rete. false
NCCL_TELEMETRY_MODE Controlla la posizione di esportazione dei dati di telemetria NCCL. Le opzioni includono quanto segue:

Valore Descrizione
0 Disabilita la raccolta di dati di 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