このページでは、A4X Max、A4X、A4、A3 Ultra インスタンスで NCCL/gIBを使用して NCCL テストを実行する方法について説明します。このページの例は、2 ノードの NCCL テスト用です。
Cluster Director、Cluster Toolkit、GKE などのスケジューラを使用している場合は、このページの手順を行う必要はありません。代わりに、以下をご覧ください。
- デフォルト構成を使用する GKE クラスタで NCCL を実行する
- A4X Max を使用するカスタム GKE クラスタで NCCL を実行する
- A4X を使用するカスタム GKE クラスタで NCCL を実行する
- A4 または A3 Ultra を使用するカスタム GKE クラスタで NCCL を実行する
- Slurm クラスタで NCCL テストを実行する
- Cluster Director の Slurm クラスタで NCCL テストを実行する
A3 Mega と A3 High で NCCL テストを実行するには、 GPUDirect を有効にして A3 Mega または A3 High インスタンスを作成するをご覧ください。
始める前に
NCCL テストを実行する前に、ランタイム環境に NCCL/gIB をインストールしていることを確認してください。
NCCL テストを実行する
スケジュールされていない環境で NCCL テストを実行するには:
- CUDA 12.8(以降)をインストールします。
- Open MPI をインストールします。
- コンピューティング インスタンス間で非インタラクティブ SSH ログインを設定します。
- MPI を有効にして nccl-tests をビルドします。
nccl-tests をビルドするときに、
NCCL_HOME=/usr/local/gibを設定します。
NCCL/gIB パッケージに付属のスクリプトを実行するには:
# The script assumes binaries at /opt/nccl-tests/build/
$ /usr/local/gib/scripts/run_nccl_tests.sh -d /opt/nccl-tests/build/ -p 22 -t all_gather -m 0x0 -b 4K -e 16G a4-vm-1 a4-vm-2
また、すべてが含まれた診断コンテナ イメージも http://us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib-diagnostic:latestで公開しています。
次の例は、2 つの A4 インスタンスの出力を示しています。
NCCL version 2.25.1+cuda12.8
#
# 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)
4096 64 float none -1 59.97 0.07 0.06 0 57.49 0.07 0.07 0
8192 128 float none -1 58.17 0.14 0.13 0 58.36 0.14 0.13 0
16384 256 float none -1 59.07 0.28 0.26 0 59.03 0.28 0.26 0
32768 512 float none -1 60.93 0.54 0.50 0 60.79 0.54 0.51 0
65536 1024 float none -1 61.93 1.06 0.99 0 62.17 1.05 0.99 0
131072 2048 float none -1 64.62 2.03 1.90 0 64.48 2.03 1.91 0
262144 4096 float none -1 66.50 3.94 3.70 0 67.05 3.91 3.67 0
524288 8192 float none -1 69.37 7.56 7.09 0 67.83 7.73 7.25 0
1048576 16384 float none -1 117.2 8.95 8.39 0 113.7 9.22 8.64 0
2097152 32768 float none -1 118.8 17.65 16.55 0 118.1 17.75 16.64 0
4194304 65536 float none -1 122.2 34.32 32.17 0 122.6 34.22 32.08 0
8388608 131072 float none -1 132.2 63.44 59.48 0 130.7 64.20 60.18 0
16777216 262144 float none -1 139.2 120.49 112.96 0 139.7 120.07 112.56 0
33554432 524288 float none -1 152.0 220.81 207.01 0 152.1 220.59 206.81 0
67108864 1048576 float none -1 227.6 294.87 276.44 0 225.9 297.08 278.51 0
134217728 2097152 float none -1 431.7 310.87 291.44 0 438.0 306.41 287.26 0
268435456 4194304 float none -1 728.6 368.44 345.41 0 735.9 364.79 341.99 0
536870912 8388608 float none -1 1404.2 382.33 358.44 0 1418.4 378.51 354.85 0
1073741824 16777216 float none -1 2795.8 384.06 360.05 0 2768.9 387.79 363.55 0
2147483648 33554432 float none -1 5440.1 394.75 370.08 0 5418.7 396.31 371.54 0
4294967296 67108864 float none -1 10754 399.40 374.43 0 10746 399.67 374.69 0
8589934592 134217728 float none -1 21434 400.77 375.72 0 21421 401.01 375.95 0
17179869184 268435456 float none -1 42679 402.53 377.38 0 42792 401.48 376.38 0
次のステップ
- トラブルシューティングのために NCCL ログを収集して理解する。
- コンピューティング インスタンスと Slurm クラスタをモニタリングする。
- パフォーマンスの低下に関するトラブルシューティングを行う。