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:
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 dabindgen.CMakeversione 3.10 o successive
Per creare dal codice sorgente, completa i seguenti passaggi:
Clona il repository e i relativi sottomoduli.
git clone --recurse-submodules https://github.com/google/CoMMA
Compila i file binari utilizzando Cargo.
cargo build --release
Cargo salva il file binario in
target/release/libnccl_profiler.so.Consenti a NCCL di caricare le librerie CoMMA utilizzando uno dei seguenti metodi:
- Copia il file
libnccl_profiler.socompilato in una directory inLD_LIBRARY_PATH. Rinominalo inlibnccl-profiler.so(utilizza un trattino anziché un trattino basso). - In alternativa, imposta la variabile di ambiente
NCCL_PROFILER_PLUGINper specificare il percorso del file.so.
- Copia il file
Verificare l'installazione o l'attivazione
Per verificare che NCCL carichi le librerie CoMMA, esamina i log NCCL:
- 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 laNCCL_DEBUGsezione nella documentazione NVIDIA. - Specifica il sottosistema
INITper il debug. SpecificaINITimpostando laNCCL_DEBUG_SUBSYS=INITvariabile di ambiente. Puoi anche specificare altri sottosistemi. Per ulteriori opzioni di sottosistema, consulta laNCCL_DEBUG_SUBSYSsezione. - 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:
Imposta la variabile di ambiente
NCCL_TELEMETRY_MODEsu un valore diverso da zero. Ad esempio, per utilizzare la modalità predefinita, specificaNCCL_TELEMETRY_MODE=3.Per esaminare l'elenco completo delle opzioni, consulta
NCCL_TELEMETRY_MODEnella tabella Opzioni di configurazione.
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=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_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.
- Monitora il tempo di completamento delle operazioni proxy impostando
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:
- Imposta
NCCL_TELEMETRY_MODEsu1o4. Per scoprire di più sulla variabile di ambienteNCCL_TELEMETRY_MODE, consulta Opzioni di configurazione. Imposta uno dei seguenti percorsi di esportazione:
- Imposta
NCCL_PROFILER_LATENCY_FILE=PATHper esportare le tracce dettagliate degli eventi in un file locale. SostituisciPATHcon un percorso come/tmp/latency-%p.txt. Imposta
NCCL_PROFILER_SUMMARY_FILE=PATHper esportare le statistiche di riepilogo aggregate. SostituisciPATHcon un percorso come/tmp/summary-%p.txt.Il sistema sostituisce
%pcon l'ID processo.
- Imposta
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 esempioNCCL_TELEMETRY_MODE.VALUE: il valore della variabile di ambiente, ad esempio0.
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:
|
3 |
Passaggi successivi
- Scopri come risolvere i problemi relativi a CoMMA.
- Scopri come rilevare e risolvere i problemi di straggler.