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 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.
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 della configurazione e dell'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 archiviati nella directory
nccl-tests_$(date +%s)/experiments. Un riepilogo del rendimento 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 dovrebbe essere presente 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 di 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 esecuzione di 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 di 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 creato
nccl-tests directory. Questa directory contiene il filenvidia+pytorch+24.09-py3.sqsh. Un file.sqshè un'immagine del file system compressa e di sola lettura che funge da formato standard del container per i carichi di lavoro di 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 di 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 esecuzione di job su un cluster A3 Mega, devi impostare un numero di variabili di ambiente. Questa impostazione attiva 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 di 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 creato
nccl-tests directory. Questa directory contiene il filenvidia+pytorch+24.09-py3.sqsh. Un file.sqshè un'immagine del file system compressa e di sola lettura che funge da formato standard del container per i carichi di lavoro di 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 di 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 esecuzione di 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 di 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.