Esta página descreve como executar NCCL do NCCL em um cluster do Slurm. Para usar um ambiente gerenciado do Slurm que inclua testes integrados do NCCL para verificar a integridade do cluster, consulte o Cluster Director.
Escolha as etapas para seu tipo de máquina:
A4X Max, A4X e A4
O teste a seguir usa Ramble, um framework de experimentação multiplataforma de código aberto escrito em Python que é usado para coordenar a execução de testes do NCCL. O Ramble e as dependências dele são compatíveis com a arquitetura ARM64 usada pelas máquinas A4X Max e A4X.
Os scripts de execução usados para esse teste são preparados em /opt/apps/system_benchmarks no nó do controlador do Slurm e estão disponíveis para todos os nós do cluster. A execução desse teste instala o Ramble no diretório /opt/apps/ramble.
No nó de login no diretório ${HOME}, execute o comando a seguir. Como o teste pode levar aproximadamente 10 minutos ou mais se outros jobs estiverem na fila, o comando a seguir usa
nohupe redireciona ostdout/errpara um arquivo de registro.nohup bash /opt/apps/system_benchmarks/run-nccl-tests-via-ramble.sh >& nccl.log &
Esse comando cria uma pasta chamada
nccl-tests_$(date +%s)que armazena todos os resultados do teste. A tag de data garante que uma pasta exclusiva seja criada com base em cada carimbo de data/hora atual.Por exemplo, se o cluster tiver 16 nós, os testes do NCCL serão executados para
all-gather,all-reduceereduce-scatterem 2, 4, 8 e 16 nós.Analise os resultados. O
nccl.logcontém os registros da configuração e execução do teste. Para conferir esses registros, execute o seguinte:tail -f nccl.log
Também é possível usar
Ctrl+Cpara interromper a saída a qualquer momento. No final donccl.log, a saída será semelhante a esta:... ---- 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 -------
Todos os scripts de job do Slurm e os registros de saída de nccl-tests são armazenados no diretório
nccl-tests_$(date +%s)/experiments. Um resumo da performance do teste do NCCL também é armazenado no arquivonccl-tests_${date +%s)/summary.tsv.A remoção do diretório
nccl-tests_$(date +%s)/remove todos os arquivos gerados durante esses testes.
A3 Ultra
No diretório compartilhado do nó de login (geralmente localizado em
${HOME}), faça o download do script necessário para criar o teste do NCCL executando o comando a seguir: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
Depois que o script for baixado, importe uma imagem do Pytorch do registro de contêineres da NVIDIA e crie os testes do NCCL. Para isso, execute este comando:
sbatch build-nccl-tests.sh
O script anterior é executado em um dos nós. Ele usa a opção
--container-mountspara montar o diretório atual,$PWD, no diretório/nccldentro do contêiner.Verifique se o teste do NCCL foi criado. Para verificar isso, execute o comando a seguir:
sacct -a
Se concluída, a saída será semelhante a esta:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3ultra 112 COMPLETED 0:0
Se a criação for bem-sucedida, você também terá um arquivo chamado
nvidia+pytorch+24.09-py3.sqshno diretório em que executou o comando, além de um diretório chamadonccl-tests.Verifique se a pasta
nccl-tests/buildcontém vários binários, incluindoall_gather_perf,all_reduce_perf,reduce_scatter_perfealltoall_perf.Faça o download do script de teste do 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
Para executar qualquer job em um cluster A3 Ultra, várias variáveis de ambiente precisam ser definidas para ativar a rede de alta performance com RDMA. Como você usa contêineres enroot neste procedimento para iniciar cargas de trabalho, essas variáveis precisam ser definidas no ambiente do contêiner, e não no ambiente do host. Essas variáveis podem ser inspecionadas no script
run-nccl-tests.shque você acabou de baixar.Execute o script de teste do NCCL. O teste pode levar aproximadamente 15 minutos ou mais.
sbatch run-nccl-tests.sh
Analise os resultados. O script gera um arquivo
slurm-XX.outque contém o resultado do comparativo de mercadoall_gather_perfdo nccl.O resultado será assim:
# # 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
No diretório compartilhado do nó de login (geralmente localizado em
${HOME}), faça o download do script necessário para criar o teste do NCCL executando o comando a seguir: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
Depois que o script for baixado, importe uma imagem do Pytorch do registro de contêineres da NVIDIA e crie os testes do NCCL.
sbatch build-nccl-tests.sh
O script anterior é executado em um dos nós. Ele usa a opção
--container-mountspara montar o diretório atual,$PWD, no diretório/nccldentro do contêiner.Verifique se o teste do NCCL foi criado:
sacct -a
O resultado será assim:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3mega 112 COMPLETED 0:0
Depois que a criação for concluída, o diretório
nccl-testsserá criado. Esse diretório contém o arquivonvidia+pytorch+24.09-py3.sqsh. Um arquivo.sqshé uma imagem de sistema compactada somente leitura que serve como formato de contêiner padrão para cargas de trabalho de IA.Verifique se a pasta
nccl-tests/buildcontém vários binários, incluindoall_gather_perf,all_reduce_perf,reduce_scatter_perfealltoall_perf.Faça o download do script de teste do 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
Para executar qualquer job em um cluster A3 Mega, várias variáveis de ambiente precisam ser definidas para ativar a rede de alta performance com o protocolo GPUDirect-TCPXO. Como você usa contêineres enroot neste procedimento para iniciar cargas de trabalho, essas variáveis precisam ser definidas no ambiente do contêiner, e não no ambiente do host. É possível inspecionar essas variáveis no script
run-nccl-tests.shque você baixou na etapa anterior.Execute o script de teste do NCCL. O teste pode levar aproximadamente 15 minutos ou mais.
sbatch run-nccl-tests.sh
Analise os resultados. O script gera um arquivo
slurm-XX.outque contém o resultado do comparativo de mercadoall_gather_perfdo nccl.O resultado será assim:
# # 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 Alto
No diretório compartilhado do nó de login (geralmente localizado em
${HOME}), faça o download do script necessário para criar o teste do NCCL executando o comando a seguir: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
Depois que o script for baixado, importe uma imagem do Pytorch do registro de contêineres da NVIDIA e crie os testes do NCCL. Para isso, execute o seguinte comando:
sbatch build-nccl-tests.sh
O script anterior é executado em um dos nós. Ele usa a opção
--container-mountspara montar o diretório atual,$PWD, no diretório/nccldentro do contêiner.Verifique se o teste do NCCL foi criado:
sacct -a
O resultado será assim:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3high 112 COMPLETED 0:0
Se a criação for bem-sucedida, o diretório
nccl-testsserá criado. Esse diretório contém o arquivonvidia+pytorch+24.09-py3.sqsh. Um arquivo.sqshé uma imagem de sistema compactada somente leitura que serve como formato de contêiner padrão para cargas de trabalho de IA.Verifique se a pasta
nccl-tests/buildcontém vários binários, incluindoall_gather_perf,all_reduce_perf,reduce_scatter_perfealltoall_perf.Faça o download do script de teste do 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
Para executar qualquer job em um cluster A3 Alto, várias variáveis de ambiente precisam ser definidas para ativar a rede de alta performance com GPUDirect-TCPX. Como você usa contêineres enroot neste procedimento para iniciar cargas de trabalho, essas variáveis precisam ser definidas no ambiente do contêiner, e não no ambiente do host. É possível inspecionar essas variáveis no script
run-nccl-tests.shque você acabou de baixar.Execute o script de teste do NCCL. O teste pode levar aproximadamente 15 minutos ou mais.
sbatch run-nccl-tests.sh
Analise os resultados. O script gera um arquivo
slurm-XX.outque contém o resultado do comparativo de mercadoall_gather_perfdo nccl.O resultado será assim:
# # 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 : ###.## #
A seguir
- Coletar e entender registros do NCCL para solução de problemas para entender as saídas de teste e resolver problemas.
- Monitorar instâncias do Compute Engine e clusters do Slurm.
- Saiba como resolver problemas de performance lenta.