Halaman ini menjelaskan cara menjalankan pengujian NCCL di cluster Slurm. Untuk menggunakan lingkungan Slurm terkelola yang mencakup pengujian NCCL bawaan untuk memverifikasi kesehatan cluster, lihat Cluster Director.
Pilih langkah-langkah untuk jenis mesin Anda:
A4X dan A4
Pengujian berikut menggunakan Ramble, yang merupakan framework eksperimen multiplatform open source yang ditulis dalam Python dan digunakan untuk mengoordinasikan jalannya pengujian NCCL. Ramble dan dependensinya kompatibel dengan arsitektur ARM64 yang digunakan oleh mesin A4X.
Skrip yang digunakan untuk pengujian ini di-stage di
/opt/apps/system_benchmarks pada node pengontrol Slurm dan tersedia untuk semua node dalam cluster. Menjalankan pengujian ini akan menginstal Ramble
ke direktori /opt/apps/ramble.
Dari node login di direktori ${HOME}, jalankan perintah berikut. Karena pengujian dapat memakan 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 menghentikan pengiriman 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 dihasilkan selama pengujian ini.
A3 Ultra
Dari direktori bersama node login (node ini biasanya berada 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 NVIDIA container registry dan buat pengujian NCCL. Untuk melakukannya, jalankan perintah berikut:
sbatch build-nccl-tests.sh
Skrip sebelumnya berjalan di salah satu node Anda. Menggunakan switch
--container-mountsuntuk memasang direktori saat ini,$PWD, ke dalam direktori/nccldi dalam container.Pastikan pengujian NCCL dibuat. Untuk memverifikasi hal ini, 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 disetel agar dapat mengaktifkan jaringan berperforma tinggi dengan RDMA. Karena Anda menggunakan container enroot dalam prosedur ini untuk meluncurkan beban kerja, variabel ini harus ditetapkan di lingkungan container, bukan di lingkungan host. Variabel ini dapat diperiksa dalam skrip
run-nccl-tests.shyang baru saja Anda download.Jalankan skrip pengujian NCCL. Pengujian ini dapat memerlukan waktu sekitar 15 menit, atau lebih.
sbatch run-nccl-tests.sh
Tinjau hasilnya. Skrip 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 berada 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 NVIDIA container registry dan buat pengujian NCCL.
sbatch build-nccl-tests.sh
Skrip sebelumnya berjalan di salah satu node Anda. Menggunakan switch
--container-mountsuntuk memasang direktori saat ini,$PWD, ke dalam direktori/nccldi dalam 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,
nccl-tests directoryakan dibuat. Direktori ini berisi filenvidia+pytorch+24.09-py3.sqsh. File.sqshadalah image sistem file hanya baca yang dikompresi dan 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 eksekusi tugas apa pun di cluster A3 Mega, Anda harus menetapkan sejumlah variabel lingkungan. Setelan ini memungkinkan jaringan berperforma tinggi dengan protokol GPUDirect-TCPXO. Karena Anda menggunakan container enroot dalam prosedur ini untuk meluncurkan beban kerja, variabel ini harus ditetapkan di lingkungan container, bukan di lingkungan host. Anda dapat memeriksa variabel ini dalam skrip
run-nccl-tests.shyang Anda download pada langkah sebelumnya.Jalankan skrip pengujian NCCL. Pengujian ini dapat memerlukan waktu sekitar 15 menit, atau lebih lama.
sbatch run-nccl-tests.sh
Tinjau hasilnya. Skrip 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 berada 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 NVIDIA container registry dan buat pengujian NCCL. Untuk melakukannya, jalankan perintah berikut:
sbatch build-nccl-tests.sh
Skrip sebelumnya berjalan di salah satu node Anda. Menggunakan switch
--container-mountsuntuk memasang direktori saat ini,$PWD, ke dalam direktori/nccldi dalam 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,
nccl-tests directoryakan dibuat. Direktori ini berisi filenvidia+pytorch+24.09-py3.sqsh. File.sqshadalah image sistem file hanya baca yang dikompresi dan 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 eksekusi tugas apa pun di cluster A3 Tinggi, beberapa variabel lingkungan harus ditetapkan untuk mengaktifkan jaringan berperforma tinggi dengan GPUDirect-TCPX. Karena Anda menggunakan container enroot dalam prosedur ini untuk meluncurkan beban kerja, variabel ini harus ditetapkan di lingkungan container, bukan di lingkungan host. Anda dapat memeriksa variabel ini dalam skrip
run-nccl-tests.shyang baru saja Anda download.Jalankan skrip pengujian NCCL. Pengujian ini dapat memerlukan waktu sekitar 15 menit, atau lebih.
sbatch run-nccl-tests.sh
Tinjau hasilnya. Skrip 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.
- Pantau instance Compute Engine dan cluster Slurm.
- Pelajari cara memecahkan masalah performa lambat.