이 페이지에서는 Debian 소프트웨어 패키지 (.deb) 또는 Red Hat 패키지 관리자 (.rpm)를 사용하여 NCCL/gIB를 설치하는 방법을 설명합니다. 이렇게 설치하면 A3 Ultra, A4, A4X 가상 머신 인스턴스 (VM)에서 NCCL 테스트를 실행할 수 있습니다(다음 예는 2노드 테스트용임).
A3 Mega 및 A3 High에서 NCCL 테스트를 실행하려면 GPUDirect가 사용 설정된 A3 Mega 또는 A3 High 인스턴스 만들기를 참고하세요.
Cluster Director, Cluster Toolkit 또는 GKE와 같은 스케줄러를 사용하는 경우 이 페이지의 단계를 따르지 않아도 됩니다. 대신 다음을 참고하세요.
- 기본 구성을 사용하는 GKE 클러스터에서 NCCL 실행
- A4X를 사용하는 맞춤 GKE 클러스터에서 NCCL 실행
- A4 또는 A3 Ultra를 사용하는 커스텀 GKE 클러스터에서 NCCL 실행
- Slurm 클러스터에서 NCCL 테스트 실행
- Cluster Director의 Slurm 클러스터에서 NCCL 테스트 실행
nccl-gib 설치
워크로드를 실행하는 위치에 따라 게스트 VM 또는 컨테이너 이미지에 NCCL/gIB를 설치합니다.
nccl-gib 패키지는 수정되지 않은 NVidia NCCL 라이브러리 (libnccl2.so) 및 헤더와 함께 번들로 제공됩니다. 모든 NCCL/gIB 콘텐츠는 /usr/local/gib 디렉터리에 설치됩니다. 일부 종속 항목은 배포의 저장소를 통해 가져오기도 합니다.
Debian 12 이상/Ubuntu 20.04 이상 (.deb 패키지)
# If you're not using an image from Google, trust the Google Cloud signing key curl http://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/cloud.google.gpg # Add gpudirect-gib-apt repo echo 'deb https://packages.cloud.google.com/apt gpudirect-gib-apt main' | sudo tee /etc/apt/sources.list.d/nccl-gib.list sudo apt update sudo apt install nccl-gib
RockyLinux/CentOS/RHEL 9 이상 (.rpm 패키지)
# Add gpudirect-gib-rpm repo sudo tee -a /etc/yum.repos.d/nccl-gib.repo << EOL [gpudirect-gib-rpm] name=NCCL/gIB baseurl=https://packages.cloud.google.com/yum/repos/gpudirect-gib-rpm enabled=1 repo_gpgcheck=0 gpgcheck=0 sudo dnf makecache sudo dnf install nccl-gib
표준 OS 이미지를 사용하는 경우 최신 NVIDIA DOCA-OFED 드라이버도 설치해야 합니다. Container OS 또는 게스트 가속기 Ubuntu/RockyLinux OS 이미지와 같은 Google의 A* 최적화 이미지를 사용하는 경우 이 드라이버를 설치할 필요가 없습니다.
VM에서 서로 다른 버전의 nccl-gib 패키지가 실행되지 않도록 NCCL 워크로드를 실행하기 전에 nccl-gib를 업데이트하거나 무인 업그레이드를 사용 중지하는 것이 좋습니다.
NCCL/gIB 사용
워크로드에서 NCCL/gIB를 사용 설정하려면 다음을 확인하세요.
/usr/local/gib/scripts/set_nccl_env.sh는 런타임 환경에서 가져옵니다. 소스 파일에는 NCCL/gIB에 필요한 모든 환경 변수가 포함되어 있으며 Google에서는 향후 NCCL/gIB 출시에서 이를 업데이트할 예정입니다./usr/local/gib/lib64디렉터리는LD_LIBRARY_PATH에 있습니다.
NCCL/gIB가 사용 설정되어 있는지 확인하려면 다음 NCCL INFO 수준 로그 항목이 있는지 확인하세요.
# A sample log entry from NCCL core
vm-0:606:642 [6] NCCL INFO Using network gIB
# A sample log entry from the gIB network plugin
vm-0:606:642 [6] NCCL INFO NET/gIB : Initializing gIB v1.0.5
NCCL 테스트 실행
예약된 환경에서 NCCL 테스트를 실행하는 방법을 알아보려면 다음을 참고하세요.
- 기본 구성을 사용하는 GKE 클러스터에서 NCCL 실행
- A4X를 사용하는 맞춤 GKE 클러스터에서 NCCL 실행
- A4 또는 A3 Ultra를 사용하는 커스텀 GKE 클러스터에서 NCCL 실행
- Slurm 클러스터에서 NCCL 테스트 실행
- Cluster Director의 Slurm 클러스터에서 NCCL 테스트 실행
또한 모든 항목이 포함된 진단 컨테이너 이미지를 http://us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib-diagnostic:latest에 게시합니다.
예약되지 않은 환경에서 NCCL 테스트를 실행하려면 다음 단계를 따르세요.
- cuda-12.8 (또는 이후 버전) 및 openmpi 설치
- VM 간에 비대화형 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
A4 VM 2개에 대한 출력 예:
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 로그 수집 및 이해를 참고하여 테스트 출력을 이해하고 문제를 해결하세요.
- Compute Engine 인스턴스 및 Slurm 클러스터 모니터링
- 느린 성능 문제 해결에 대해 알아봅니다.