Questa pagina descrive come eseguire i test NCCL su un cluster Slurm. Per utilizzare un ambiente Slurm gestito che include test NCCL integrati per verificare l'integrità del cluster, consulta invece Cluster Director.
Scegli i passaggi per il tuo tipo di macchina:
A4X Max, A4X e A4
Il seguente test utilizza Ramble, un framework di sperimentazione multipiattaforma open source scritto in Python che viene utilizzato per coordinare l'esecuzione dei test NCCL. Ramble e le relative dipendenze sono compatibili con l'architettura ARM64 utilizzata dalle macchine A4X Max e A4X.
Gli script di esecuzione utilizzati per questo test vengono preparati in
/opt/apps/system_benchmarks sul nodo controller Slurm e sono
disponibili per tutti i nodi del cluster. L'esecuzione di questo test installa Ramble
nella directory /opt/apps/ramble.
Dal nodo di accesso nella directory ${HOME}, esegui questo comando. Poiché il test può richiedere circa 10 minuti o più se altri job sono in coda, il seguente comando utilizza
nohupe reindirizzastdout/erra un file di log.nohup bash /opt/apps/system_benchmarks/run-nccl-tests-via-ramble.sh >& nccl.log &
Questo comando crea una cartella denominata
nccl-tests_$(date +%s)che archivia tutti i risultati dei test. Il tag data assicura che venga creata una cartella univoca in base a ogni timestamp corrente.Ad esempio, se il cluster ha 16 nodi, i test NCCL vengono eseguiti per
all-gather,all-reduceereduce-scattersu 2, 4, 8 e 16 nodi.Esamina i risultati. Il file
nccl.logcontiene i log relativi alla configurazione e all'esecuzione del test. Per visualizzare questi log, esegui il comando seguente:tail -f nccl.log
Puoi anche utilizzare
Ctrl+Cper interrompere il monitoraggio dell'output in qualsiasi momento. Al termine dinccl.log, l'output dovrebbe essere simile al seguente:... ---- SUMMARY for >1GB Message Sizes ---- workload n_nodes msg_size busbw all-gather 2 1073741824 ###.## all-gather 2 2147483648 ###.## all-gather 2 4294967296 ###.## all-gather 2 8589934592 ###.## ... all-reduce 2 1073741824 ###.## ... reduce-scatter 2 1073741824 ###.## ... -------- Benchmarking Complete -------
Tutti gli script dei job Slurm e i log di output di nccl-tests sono memorizzati nella directory
nccl-tests_$(date +%s)/experiments. Un riepilogo delle prestazioni del test NCCL viene archiviato anche nel filenccl-tests_${date +%s)/summary.tsv.La rimozione della directory
nccl-tests_$(date +%s)/rimuove tutti i file generati durante questi test.
A3 Ultra
Dalla directory condivisa del nodo di accesso (in genere si trova in
${HOME}), scarica lo script necessario per creare il test NCCL eseguendo il seguente comando:wget -np -nd https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/refs/heads/main/examples/machine-learning/a3-ultragpu-8g/nccl-tests/build-nccl-tests.sh
Dopo il download dello script, importa un'immagine Pytorch da NVIDIA Container Registry e crea i test NCCL. Per farlo, esegui questo comando:
sbatch build-nccl-tests.sh
Lo script precedente viene eseguito su uno dei tuoi nodi. Utilizza l'opzione
--container-mountsper montare la directory corrente,$PWD, nella directory/ncclall'interno del container.Verifica che il test NCCL sia stato creato. Per verificarlo, esegui questo comando:
sacct -a
Se l'operazione viene completata correttamente, l'output è simile al seguente:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3ultra 112 COMPLETED 0:0
Se la build ha esito positivo, nella directory in cui hai eseguito il comando dovresti trovare anche un file denominato
nvidia+pytorch+24.09-py3.sqshe una directory denominatanccl-tests.Verifica che la cartella
nccl-tests/buildcontenga diversi file binari, tra cuiall_gather_perf,all_reduce_perf,reduce_scatter_perfealltoall_perf.Scarica lo script per il test NCCL.
wget -np -nd https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/refs/heads/main/examples/machine-learning/a3-ultragpu-8g/nccl-tests/run-nccl-tests.sh
Per eseguire qualsiasi job su un cluster A3 Ultra, è necessario impostare diverse variabili di ambiente per abilitare la rete ad alte prestazioni con RDMA. Poiché in questa procedura utilizzi i container enroot per avviare i carichi di lavoro, queste variabili devono essere impostate nell'ambiente del container anziché nell'ambiente host. Queste variabili possono essere esaminate nello script
run-nccl-tests.shche hai appena scaricato.Esegui lo script per il test NCCL. Il test può richiedere circa 15 minuti o più.
sbatch run-nccl-tests.sh
Esamina i risultati. Lo script restituisce un file
slurm-XX.outche contiene il risultato del benchmark ncclall_gather_perf.L'output è simile al seguente:
# # out-of-place in-place # size count type redop root time algbw busbw #wrong time algbw busbw #wrong # (B) (elements) (us) (GB/s) (GB/s) (us) (GB/s) (GB/s) 268435456 4194304 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 536870912 8388608 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 1073741824 16777216 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 2147483648 33554432 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 4294967296 67108864 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 8589934592 134217728 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 # Out of bounds values : 0 OK # Avg bus bandwidth : ###.## #
A3 Mega
Dalla directory condivisa del nodo di accesso (in genere si trova in
${HOME}), scarica lo script necessario per creare il test NCCL eseguendo il seguente comando:wget -np -nd https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/refs/heads/main/examples/machine-learning/a3-megagpu-8g/nccl-tests/build-nccl-tests.sh
Dopo il download dello script, importa un'immagine Pytorch da NVIDIA Container Registry e crea i test NCCL.
sbatch build-nccl-tests.sh
Lo script precedente viene eseguito su uno dei tuoi nodi. Utilizza l'opzione
--container-mountsper montare la directory corrente,$PWD, nella directory/ncclall'interno del container.Verifica che il test NCCL sia stato creato:
sacct -a
L'output è simile al seguente:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3mega 112 COMPLETED 0:0
Al termine della build, viene creata la directory
nccl-tests. Questa directory contiene il filenvidia+pytorch+24.09-py3.sqsh. Un file.sqshè un'immagine di sistema del file system compressa e di sola lettura che funge da formato standard del container per i carichi di lavoro AI.Verifica che la cartella
nccl-tests/buildcontenga diversi file binari, tra cuiall_gather_perf,all_reduce_perf,reduce_scatter_perfealltoall_perf.Scarica lo script per il test NCCL:
wget -np -nd https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/refs/heads/main/examples/machine-learning/a3-megagpu-8g/nccl-tests/run-nccl-tests.sh
Per eseguire qualsiasi job su un cluster A3 Mega, è necessario impostare diverse variabili di ambiente per abilitare la rete ad alte prestazioni con il protocollo GPUDirect-TCPXO. Poiché in questa procedura utilizzi i container enroot per avviare i carichi di lavoro, queste variabili devono essere impostate nell'ambiente container anziché nell'ambiente host. Puoi esaminare queste variabili nello script
run-nccl-tests.shche hai scaricato nel passaggio precedente.Esegui lo script per il test NCCL. Il test può richiedere circa 15 minuti o più.
sbatch run-nccl-tests.sh
Esamina i risultati. Lo script restituisce un file
slurm-XX.outche contiene il risultato del benchmark ncclall_gather_perf.L'output è simile al seguente:
# # out-of-place in-place # size count type redop root time algbw busbw #wrong time algbw busbw #wrong # (B) (elements) (us) (GB/s) (GB/s) (us) (GB/s) (GB/s) 268435456 4194304 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 536870912 8388608 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 1073741824 16777216 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 2147483648 33554432 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 4294967296 67108864 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 8589934592 134217728 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 # Out of bounds values : 0 OK # Avg bus bandwidth : ###.## #
A3 High
Dalla directory condivisa del nodo di accesso (in genere si trova in
${HOME}), scarica lo script necessario per creare il test NCCL eseguendo il comando seguente:wget -np -nd https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/refs/heads/main/examples/machine-learning/a3-highgpu-8g/nccl-tests/build-nccl-tests.sh
Dopo il download dello script, importa un'immagine Pytorch da NVIDIA Container Registry e crea i test NCCL. Per farlo, esegui questo comando:
sbatch build-nccl-tests.sh
Lo script precedente viene eseguito su uno dei tuoi nodi. Utilizza l'opzione
--container-mountsper montare la directory corrente,$PWD, nella directory/ncclall'interno del container.Verifica che il test NCCL sia stato creato:
sacct -a
L'output è simile al seguente:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3high 112 COMPLETED 0:0
Se la build ha esito positivo, viene creata la directory
nccl-tests. Questa directory contiene il filenvidia+pytorch+24.09-py3.sqsh. Un file.sqshè un'immagine di sistema del file system compressa e di sola lettura che funge da formato standard del container per i carichi di lavoro AI.Verifica che la cartella
nccl-tests/buildcontenga diversi file binari, tra cuiall_gather_perf,all_reduce_perf,reduce_scatter_perfealltoall_perf.Scarica lo script per il test NCCL:
wget -np -nd https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/refs/heads/main/examples/machine-learning/a3-highgpu-8g/nccl-tests/run-nccl-tests.sh
Per eseguire qualsiasi job su un cluster A3 High, è necessario impostare diverse variabili di ambiente per abilitare il networking ad alte prestazioni con GPUDirect-TCPX. Poiché in questa procedura utilizzi i container enroot per avviare i carichi di lavoro, queste variabili devono essere impostate nell'ambiente del container anziché nell'ambiente host. Puoi esaminare queste variabili nello script
run-nccl-tests.shche hai appena scaricato.Esegui lo script per il test NCCL. Il test può richiedere circa 15 minuti o più.
sbatch run-nccl-tests.sh
Esamina i risultati. Lo script restituisce un file
slurm-XX.outche contiene il risultato del benchmark ncclall_gather_perf.L'output è simile al seguente:
# # out-of-place in-place # size count type redop root time algbw busbw #wrong time algbw busbw #wrong # (B) (elements) (us) (GB/s) (GB/s) (us) (GB/s) (GB/s) 268435456 4194304 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 536870912 8388608 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 1073741824 16777216 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 2147483648 33554432 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 4294967296 67108864 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 8589934592 134217728 float none -1 ##### ###.## ###.## N/A ###### ###.## ###.## 0 # Out of bounds values : 0 OK # Avg bus bandwidth : ###.## #
Passaggi successivi
- Raccogli e comprendi i log NCCL per la risoluzione dei problemi per comprendere gli output del test e risolvere i problemi.
- Monitora le istanze Compute Engine e i cluster Slurm.
- Scopri di più sulla risoluzione dei problemi di prestazioni lente.