NCCL auf Compute Engine-VMs ausführen

Auf dieser Seite finden Sie eine Anleitung zur Installation von NCCL/gIB mit Debian-Softwarepaketen (.deb) oder dem Red Hat Package Manager (.rpm). Mit dieser Installation können Sie NCCL-Tests auf A3 Ultra-, A4- und A4X-VM-Instanzen ausführen (die folgenden Beispiele beziehen sich auf Tests mit zwei Knoten).

Informationen zum Ausführen von NCCL-Tests auf A3 Mega- und A3 High-Instanzen finden Sie unter A3 Mega- oder A3 High-Instanz mit aktiviertem GPUDirect erstellen.

Wenn Sie Scheduler wie Cluster Director, Cluster Toolkit oder GKE verwenden, müssen Sie die Schritte auf dieser Seite nicht ausführen. Sehen Sie sich stattdessen Folgendes an:

nccl-gib installieren

Je nachdem, wo Sie Ihre Arbeitslasten ausführen, installieren Sie NCCL/gIB entweder in der Gast-VM oder im Container-Image.

Das Paket nccl-gib wird mit einer unveränderten NVidia NCCL-Bibliothek (libnccl2.so) und Headern gebündelt. Alle NCCL-/gIB-Inhalte werden im Verzeichnis /usr/local/gib installiert. Einige Abhängigkeiten werden auch über das Repository der Distribution abgerufen.

Debian 12+/Ubuntu 20.04+ (.deb-Paket)

# 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-Paket)

# 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

Wenn Sie Standard-Betriebssystem-Images verwenden, müssen Sie auch den neuesten NVIDIA DOCA-OFED-Treiber installieren. Wenn Sie die für A* optimierten Images von Google verwenden, z. B. Container-Optimized OS oder Gastbeschleuniger-Betriebssystem-Images für Ubuntu/RockyLinux, müssen Sie diesen Treiber nicht installieren.

Damit auf VMs nicht verschiedene Versionen des nccl-gib-Pakets ausgeführt werden, empfehlen wir, nccl-gib zu aktualisieren, bevor Sie Ihre NCCL-Arbeitslasten ausführen, oder unbeaufsichtigte Upgrades zu deaktivieren.

NCCL/gIB verwenden

Damit Sie NCCL/gIB in Ihren Arbeitslasten aktivieren können, müssen folgende Voraussetzungen erfüllt sein:

  • /usr/local/gib/scripts/set_nccl_env.sh wird in Ihrer Laufzeitumgebung bereitgestellt. Die Quelldatei enthält alle erforderlichen Umgebungsvariablen für NCCL/gIB. Google geht davon aus, dass diese in zukünftigen NCCL/gIB-Releases aktualisiert werden.
  • Das Verzeichnis /usr/local/gib/lib64 befindet sich in Ihrem LD_LIBRARY_PATH.

Prüfen Sie, ob die folgenden Logeinträge auf NCCL-INFO-Ebene vorhanden sind, um zu bestätigen, dass NCCL/gIB aktiviert ist:

# 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-Tests ausführen

Informationen zum Ausführen von NCCL-Tests in einer geplanten Umgebung finden Sie unter:

Wir veröffentlichen auch ein Diagnose-Container-Image mit allen Inhalten unter http://us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib-diagnostic:latest.

So führen Sie NCCL-Tests in einer nicht geplanten Umgebung aus:

  1. Installieren Sie cuda-12.8 (oder höher) und openmpi.
  2. Richten Sie nicht interaktive SSH-Anmeldungen zwischen den VMs ein.
  3. Erstellen Sie nccl-tests mit aktiviertem MPI. Legen Sie beim Erstellen von nccl-tests NCCL_HOME=/usr/local/gib fest.

So führen Sie das mit dem NCCL-/gIB-Paket gelieferte Skript aus:

# 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

Beispielausgabe auf zwei A4-VMs:

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

Nächste Schritte