Compute Engine VM에서 NCCL 실행

이 페이지에서는 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와 같은 스케줄러를 사용하는 경우 이 페이지의 단계를 따르지 않아도 됩니다. 대신 다음을 참고하세요.

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 테스트를 실행하는 방법을 알아보려면 다음을 참고하세요.

또한 모든 항목이 포함된 진단 컨테이너 이미지를 http://us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib-diagnostic:latest에 게시합니다.

예약되지 않은 환경에서 NCCL 테스트를 실행하려면 다음 단계를 따르세요.

  1. cuda-12.8 (또는 이후 버전) 및 openmpi 설치
  2. VM 간에 비대화형 SSH 로그인 설정
  3. 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

다음 단계