Exécuter NCCL sur des VM Compute Engine

Cette page explique comment installer NCCL/gIB avec des packages logiciels Debian (.deb) ou le gestionnaire de packages Red Hat (.rpm). Cette installation vous permet d'exécuter des tests NCCL sur les instances de machines virtuelles (VM) A3 Ultra, A4 et A4X (les exemples suivants concernent des tests à deux nœuds).

Pour exécuter des tests NCCL sur A3 Mega et A3 High, consultez Créer une instance A3 Mega ou A3 High avec GPUDirect activé.

Si vous utilisez des planificateurs tels que Cluster Director, Cluster Toolkit ou GKE, vous n'avez pas besoin de suivre les étapes de cette page. Consultez plutôt les ressources suivantes :

Installer nccl-gib

Selon l'endroit où vous exécutez vos charges de travail, vous installez NCCL/gIB dans la VM invitée ou dans l'image de conteneur.

Le package nccl-gib est fourni avec une bibliothèque et des en-têtes NVidia NCCL (libnccl2.so) non modifiés. Tous les contenus NCCL/gIB sont installés dans le répertoire /usr/local/gib. Certaines dépendances sont également récupérées via le dépôt de la distribution.

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

Si vous utilisez des images d'OS standards, vous devez également installer le dernier pilote NVIDIA DOCA-OFED. Vous n'avez pas besoin d'installer ce pilote si vous utilisez des images optimisées A* de Google, telles que Container OS ou Guest Accelerator Ubuntu/RockyLinux OS Images.

Pour éviter que les VM exécutent différentes versions du package nccl-gib, nous vous recommandons de mettre à jour nccl-gib avant d'exécuter vos charges de travail NCCL ou de désactiver les mises à niveau automatiques.

Utiliser NCCL/gIB

Pour activer NCCL/gIB dans vos charges de travail, assurez-vous des points suivants :

  • /usr/local/gib/scripts/set_nccl_env.sh est fourni dans votre environnement d'exécution. Le fichier source inclut toutes les variables d'environnement nécessaires pour NCCL/gIB. Google prévoit de les mettre à jour dans les futures versions de NCCL/gIB.
  • Le répertoire /usr/local/gib/lib64 se trouve dans votre LD_LIBRARY_PATH.

Pour vérifier que NCCL/gIB est activé, assurez-vous que les entrées de journal de niveau INFO NCCL suivantes sont présentes :

# 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

Exécuter des tests NCCL

Pour savoir comment exécuter des tests NCCL dans un environnement planifié, consultez les ressources suivantes :

Nous publions également une image de conteneur de diagnostic avec tout ce qui est inclus sur http://us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib-diagnostic:latest.

Pour exécuter des tests NCCL dans un environnement non planifié :

  1. Installez cuda-12.8 (ou version ultérieure) et openmpi.
  2. Configurez des connexions SSH non interactives entre les VM.
  3. Créez nccl-tests avec MPI activé. Lorsque vous créez nccl-tests, définissez NCCL_HOME=/usr/local/gib

Pour exécuter le script fourni avec le package 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

Exemple de résultat sur deux VM 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

Étapes suivantes