Executar o NCCL em instâncias do Compute Engine

Nesta página, descrevemos como instalar o NCCL/gIB com pacotes de software Debian (.deb) ou o Red Hat Package Manager (.rpm). Essa instalação permite executar testes do NCCL em instâncias A4X Max, A4X, A4 e A3 Ultra. Os exemplos a seguir são para testes de dois nós.

Para executar testes da NCCL em A3 Mega e A3 High, consulte Criar uma instância A3 Mega ou A3 High com o GPUDirect ativado.

Se você usa programadores como Cluster Director, Cluster Toolkit ou GKE, não precisa seguir as etapas desta página. Em vez disso, consulte o seguinte:

Instalar o NCCL/gIB

Dependendo de onde você executa as cargas de trabalho, instale o NCCL/gIB na instância de computação ou na imagem do contêiner.

O pacote nccl-gib é agrupado com uma biblioteca e cabeçalhos NVidia NCCL não modificados (libnccl2.so). Todo o conteúdo do NCCL/gIB é instalado no diretório /usr/local/gib. Algumas dependências também são buscadas no repositório da distribuição.

Debian 12+/Ubuntu 20.04+ (pacote .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+ (pacote .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

Se você estiver usando imagens de SO padrão, também será necessário instalar o driver NVIDIA DOCA-OFED mais recente. Não é necessário instalar esse driver se você estiver usando imagens otimizadas para aceleradores do Google, como Container OS ou imagens de SO Ubuntu ou Rocky Linux otimizadas para aceleradores.

Para evitar que as instâncias de computação executem versões diferentes do pacote nccl-gib, recomendamos que você atualize nccl-gib antes de executar as cargas de trabalho do NCCL ou desative as atualizações automáticas.

Ativar NCCL/gIB

Para ativar o NCCL/gIB nas suas cargas de trabalho, verifique o seguinte:

  • O /usr/local/gib/scripts/set_nccl_env.sh é originado no ambiente de execução. O arquivo de origem inclui todas as variáveis de ambiente necessárias para o NCCL/gIB, e o Google espera atualizá-las em versões futuras do NCCL/gIB.
  • O diretório /usr/local/gib/lib64 está em LD_LIBRARY_PATH.

Para verificar se o NCCL/gIB está ativado, confira se as seguintes entradas de registro no nível INFO do NCCL estão presentes:

# 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

Executar testes da NCCL

Para saber como executar testes do NCCL em um ambiente programado, consulte o seguinte:

Também publicamos uma imagem de contêiner de diagnóstico com tudo incluído em http://us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib-diagnostic:latest.

Para executar testes da NCCL em um ambiente não programado:

  1. Instale o CUDA 12.8 ou mais recente.
  2. Instale o Open MPI.
  3. Configure logins SSH não interativos entre as instâncias de computação.
  4. Crie nccl-tests com o MPI ativado. Ao criar nccl-tests, defina NCCL_HOME=/usr/local/gib.

Para executar o script enviado com o pacote 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

O exemplo a seguir mostra a saída em duas instâncias 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

A seguir