Nesta página, descrevemos como executar testes do NCCL em um cluster do Slurm. Para usar um ambiente gerenciado do Slurm que inclui testes NCCL integrados para verificar a integridade do cluster, consulte o Cluster Director.
Escolha as etapas para seu tipo de máquina:
A4X e A4
O teste a seguir usa o Ramble, um framework de experimentação multiplataforma de código aberto escrito em Python 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.
Os scripts de execução usados para esse teste são armazenados em /opt/apps/system_benchmarks no nó do controlador 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 do 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 ver esses registros, execute o seguinte:tail -f nccl.log
Você também pode usar
Ctrl+Cpara interromper o rastreamento da saída a qualquer momento. No final donccl.log, a saída será parecida com 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 do 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)/exclui todos os arquivos gerados durante esses testes.
A3 Ultra
No diretório compartilhado do nó de login (geralmente localizado em
${HOME}), baixe o script necessário para criar o teste do NCCL executando o seguinte 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
Depois que o script for baixado, importe uma imagem do Pytorch do registro de contêiner 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 a operação for concluída com êxito, a saída será semelhante a esta:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3ultra 112 COMPLETED 0:0
Se o build for bem-sucedido, 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 da 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, é necessário definir várias variáveis de ambiente 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 de 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 da 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 mercado ncclall_gather_perf.O resultado será o seguinte:
# # 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}), baixe o script necessário para criar o teste do NCCL executando o seguinte 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
Depois que o script for baixado, importe uma imagem do Pytorch do registro de contêiner 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á o seguinte:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3mega 112 COMPLETED 0:0
Depois que o build for concluído, o
nccl-tests directoryserá criado. Esse diretório contém o arquivonvidia+pytorch+24.09-py3.sqsh. Um arquivo.sqshé uma imagem de sistema de arquivos compactada e somente leitura que serve como o 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 da 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, você precisa definir algumas variáveis de ambiente. Essa configuração ativa a rede de alto desempenho 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 de contêiner em vez do ambiente de host. Você pode inspecionar essas variáveis no script
run-nccl-tests.shque baixou na etapa anterior.Execute o script de teste da 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 mercado ncclall_gather_perf.O resultado será o seguinte:
# # 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
No diretório compartilhado do nó de login (geralmente localizado em
${HOME}), baixe o script necessário para criar o teste do NCCL executando o seguinte comando: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êiner 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á o seguinte:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3high 112 COMPLETED 0:0
Se a build for bem-sucedida, o
nccl-tests directoryserá criado. Esse diretório contém o arquivonvidia+pytorch+24.09-py3.sqsh. Um arquivo.sqshé uma imagem de sistema de arquivos compactada e somente leitura que serve como o 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 da 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 execução de job em um cluster A3 High, várias variáveis de ambiente precisam ser definidas para ativar redes de alto desempenho com GPUDirect-TCPX. Como você usa contêineres enroot neste procedimento para iniciar cargas de trabalho, essas variáveis precisam ser definidas no ambiente de contêiner, e não no ambiente do host. Você pode inspecionar essas variáveis no script
run-nccl-tests.shque acabou de baixar.Execute o script de teste da 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 mercado ncclall_gather_perf.O resultado será o seguinte:
# # 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.
- Monitore instâncias do Compute Engine e clusters do Slurm.
- Saiba como resolver problemas de desempenho lento.