Halaman ini menjelaskan cara menjalankan NCCL pengujian di cluster Slurm. Untuk menggunakan lingkungan Slurm terkelola yang menyertakan pengujian NCCL bawaan untuk memverifikasi kesehatan cluster, lihat Cluster Director.
Pilih langkah-langkah untuk jenis mesin Anda:
A4X Max, A4X, dan A4
Pengujian berikut menggunakan Ramble, yang merupakan framework eksperimen multi-platform open source yang ditulis dalam Python dan digunakan untuk mengoordinasikan pengujian NCCL. Ramble dan dependensinya kompatibel dengan arsitektur ARM64 yang digunakan oleh mesin A4X Max dan A4X.
Skrip yang digunakan untuk pengujian ini di-staging di /opt/apps/system_benchmarks pada node pengontrol Slurm dan tersedia untuk semua node di cluster. Menjalankan pengujian ini akan menginstal Ramble ke direktori /opt/apps/ramble.
Dari node login di direktori ${HOME}, jalankan perintah berikut. Karena pengujian dapat memerlukan waktu sekitar 10 menit, atau lebih lama jika ada tugas lain dalam antrean, perintah berikut menggunakan
nohupdan mengalihkanstdout/errke file log.nohup bash /opt/apps/system_benchmarks/run-nccl-tests-via-ramble.sh >& nccl.log &
Perintah ini membuat folder bernama
nccl-tests_$(date +%s)yang menyimpan semua hasil pengujian. Tag tanggal memastikan bahwa folder unik dibuat berdasarkan setiap stempel waktu saat ini.Misalnya, jika cluster Anda memiliki 16 node, pengujian NCCL akan dijalankan untuk
all-gather,all-reduce, danreduce-scatterpada 2, 4, 8, dan 16 node.Tinjau hasilnya.
nccl.logberisi log dari penyiapan dan menjalankan pengujian. Untuk melihat log ini, jalankan perintah berikut:tail -f nccl.log
Anda juga dapat menggunakan
Ctrl+Cuntuk berhenti mengikuti output kapan saja. Di akhirnccl.log, output Anda akan terlihat seperti berikut:... ---- 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 -------
Semua skrip tugas Slurm dan log output nccl-tests disimpan di direktori
nccl-tests_$(date +%s)/experiments. Ringkasan performa pengujian NCCL juga disimpan dalam filenccl-tests_${date +%s)/summary.tsv.Menghapus direktori
nccl-tests_$(date +%s)/akan menghapus semua file yang dibuat selama pengujian ini.
A3 Ultra
Dari direktori bersama node login (node ini biasanya terletak di
${HOME}), download skrip yang diperlukan untuk membuat pengujian NCCL dengan menjalankan perintah berikut: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
Setelah skrip didownload, impor image Pytorch dari registry container NVIDIA dan buat pengujian NCCL. Untuk melakukannya, jalankan perintah berikut:
sbatch build-nccl-tests.sh
Skrip sebelumnya berjalan di salah satu node Anda. Skrip ini menggunakan tombol
--container-mountsuntuk memasang direktori saat ini,$PWD, ke direktori/nccldalam container.Pastikan pengujian NCCL dibuat. Untuk memverifikasi hal tersebut, jalankan perintah berikut:
sacct -a
Jika berhasil diselesaikan, output-nya akan mirip dengan berikut ini:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3ultra 112 COMPLETED 0:0
Jika build berhasil, Anda juga akan memiliki file bernama
nvidia+pytorch+24.09-py3.sqshdi direktori tempat Anda menjalankan perintah bersama dengan direktori bernamanccl-tests.Pastikan folder
nccl-tests/buildberisi beberapa biner, termasukall_gather_perf,all_reduce_perf,reduce_scatter_perf, danalltoall_perf.Download skrip pengujian 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
Untuk menjalankan tugas apa pun di cluster A3 Ultra, beberapa variabel lingkungan harus ditetapkan agar dapat mengaktifkan jaringan berperforma tinggi dengan RDMA. Karena Anda menggunakan container enroot dalam prosedur ini untuk meluncurkan workload, variabel ini harus ditetapkan di lingkungan container, bukan lingkungan host. Variabel ini dapat diperiksa dalam skrip
run-nccl-tests.shyang baru saja Anda download.Jalankan skrip pengujian NCCL. Pengujian dapat memerlukan waktu sekitar 15 menit, atau lebih lama.
sbatch run-nccl-tests.sh
Tinjau hasilnya. Skrip ini menghasilkan file
slurm-XX.outyang berisi hasil benchmark ncclall_gather_perf.Outputnya mirip dengan hal berikut ini:
# # 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
Dari direktori bersama node login (node ini biasanya terletak di
${HOME}), download skrip yang diperlukan untuk membuat pengujian NCCL dengan menjalankan perintah berikut: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
Setelah skrip didownload, impor image Pytorch dari registry container NVIDIA dan buat pengujian NCCL.
sbatch build-nccl-tests.sh
Skrip sebelumnya berjalan di salah satu node Anda. Skrip ini menggunakan tombol
--container-mountsuntuk memasang direktori saat ini,$PWD, ke direktori/nccldalam container.Pastikan pengujian NCCL dibuat:
sacct -a
Outputnya mirip dengan hal berikut ini:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3mega 112 COMPLETED 0:0
Setelah build selesai, direktori
nccl-testsakan dibuat. Direktori ini berisi filenvidia+pytorch+24.09-py3.sqsh. File.sqshadalah image sistem file terkompresi dan hanya baca yang berfungsi sebagai format container standar untuk workload AI.Pastikan folder
nccl-tests/buildberisi beberapa biner, termasukall_gather_perf,all_reduce_perf,reduce_scatter_perf, danalltoall_perf.Download skrip pengujian 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
Untuk menjalankan tugas apa pun di cluster A3 Mega, beberapa variabel lingkungan harus ditetapkan agar dapat mengaktifkan jaringan berperforma tinggi dengan protokol GPUDirect-TCPXO. Karena Anda menggunakan container enroot dalam prosedur ini untuk meluncurkan workload, variabel ini harus ditetapkan di lingkungan container, bukan lingkungan host. Anda dapat memeriksa variabel ini dalam skrip
run-nccl-tests.shyang Anda download pada langkah sebelumnya.Jalankan skrip pengujian NCCL. Pengujian dapat memerlukan waktu sekitar 15 menit, atau lebih lama.
sbatch run-nccl-tests.sh
Tinjau hasilnya. Skrip ini menghasilkan file
slurm-XX.outyang berisi hasil benchmark ncclall_gather_perf.Outputnya mirip dengan hal berikut ini:
# # 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 Tinggi
Dari direktori bersama node login (node ini biasanya terletak di
${HOME}), download skrip yang diperlukan untuk membuat pengujian NCCL dengan menjalankan perintah berikut: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
Setelah skrip didownload, impor image Pytorch dari registry container NVIDIA dan buat pengujian NCCL. Untuk melakukannya, jalankan perintah berikut:
sbatch build-nccl-tests.sh
Skrip sebelumnya berjalan di salah satu node Anda. Skrip ini menggunakan tombol
--container-mountsuntuk memasang direktori saat ini,$PWD, ke direktori/nccldalam container.Pastikan pengujian NCCL dibuat:
sacct -a
Outputnya mirip dengan hal berikut ini:
JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1 build-ncc+ a3high 112 COMPLETED 0:0
Jika build berhasil, direktori
nccl-testsakan dibuat. Direktori ini berisi filenvidia+pytorch+24.09-py3.sqsh. File.sqshadalah image sistem file terkompresi dan hanya baca yang berfungsi sebagai format container standar untuk workload AI.Pastikan folder
nccl-tests/buildberisi beberapa biner, termasukall_gather_perf,all_reduce_perf,reduce_scatter_perf, danalltoall_perf.Download skrip pengujian 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
Untuk menjalankan tugas apa pun di cluster A3 Tinggi, beberapa variabel lingkungan harus ditetapkan agar dapat mengaktifkan jaringan berperforma tinggi dengan GPUDirect-TCPX. Karena Anda menggunakan container enroot dalam prosedur ini untuk meluncurkan workload, variabel ini harus ditetapkan di lingkungan container, bukan lingkungan host. Anda dapat memeriksa variabel ini dalam skrip
run-nccl-tests.shyang baru saja Anda download.Jalankan skrip pengujian NCCL. Pengujian dapat memerlukan waktu sekitar 15 menit, atau lebih lama.
sbatch run-nccl-tests.sh
Tinjau hasilnya. Skrip ini menghasilkan file
slurm-XX.outyang berisi hasil benchmark ncclall_gather_perf.Outputnya mirip dengan hal berikut ini:
# # 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 : ###.## #
Langkah berikutnya
- Mengumpulkan dan Memahami Log NCCL untuk Pemecahan Masalah guna memahami output pengujian dan memecahkan masalah.
- Memantau instance Compute Engine dan cluster Slurm.
- Mempelajari cara memecahkan masalah performa lambat.