NVIDIA GPU Cloud (NGC) est une plate-forme cloud accélérée par GPU optimisée pour l'apprentissage profond et l'informatique scientifique. Pour améliorer les performances de vos workflows d'intelligence artificielle et d'apprentissage automatique, vous pouvez ajouter un adaptateur PVRDMA à votre client [vSphere Bitfusion] qui s'exécute sur un conteneur NGC.

Les images AI et ML pour NGC contiennent des modules MOFED (Mellanox Open Fabrics Enterprise Distribution), pour la prise en charge de RDMA. Les modules open source rdma-core pris en charge par PVRDMA ne sont pas inclus dans ces images et les deux types de modules ne peuvent pas coexister sur le même conteneur. Pour activer PVRDMA sur votre conteneur NGC, vous devez supprimer les bibliothèques MOFED et installer les modules open source rdma-core.

En suivant cette procédure, vous pouvez créer un Dockerfile susceptible de produire une image que vous pouvez exécuter en tant que conteneur. L'exemple de Dockerfile crée une image basée sur une image de conteneur NVIDIA pour TensorRT, qui inclut une distribution Ubuntu Linux et les modules open source rdma-core pour la distribution Ubuntu.

Conditions préalables

  • Vérifiez que votre environnement vSphere dispose d'un réseau distribué PVRDMA configuré. Pour plus d'informations, reportez-vous à la documentation Mise en réseau vSphere.
  • Vérifiez que vous avez configuré un serveur vSphere Bitfusion en vue d'utiliser PVRDMA. Reportez-vous à la section Configuration d'un serveur vSphere Bitfusion en vue d'utiliser PVRDMA.
  • Vérifiez que Docker est installé.

Procédure

  1. Obtenez le UBUNTU_CODENAME et recherchez les modules MOFED deb dans l'image de conteneur NVIDIA.
    Vous utilisez l'image de conteneur NVIDIA comme image de base pour votre Dockerfile.
    1. Dans Docker, démarrez le conteneur NGC en exécutant la commande sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host NGC_Containter, où NGC_Containter est le nom de l'URL de l'image de conteneur NVIDIA pour TensorRT. Par exemple, nvcr.io/nvidia/tensorrt:20.12-py3.
    2. Dans le conteneur NGC, obtenez le UBUNTU_CODENAME en exécutant la commande cat /etc/os-release.
      Par exemple, le UBUNTU_CODENAME pour Ubuntu 20.04 est focal.
    3. Répertoriez le contenu du dossier /opt/mellanox/DEBS/ en exécutant la commande ls -l /opt/mellanox/DEBS/*.
    4. Dans la liste des fichiers affichés, recherchez les modules MOFED deb.
      Par exemple, ibverbs-providers_51mlnx1-1.51246_amd64.deb, ibverbs-utils_51mlnx1-1.51246_amd64.deb, libibverbs-dev_51mlnx1-1.51246_amd64.deb et libibverbs1_51mlnx1-1.51246_amd64.deb sont des modules MOFED deb.
      Note : Différents conteneurs NGC peuvent contenir différents modules MOFED ou aucun module MOFED.
  2. Créez un fichier Dockerfile.
    Par exemple, FROM nvcr.io/nvidia/tensorrt:20.12-py3.
    1. Désinstallez les modules MOFED deb.
      Par exemple, ajoutez la commande RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1.
    2. Installez les modules rdma-core pour Ubuntu.
      Par exemple, ajoutez la commande RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils perftest, où focal est le nom de votre distribution Ubuntu 20.04.
    3. Créez les exemples de projets NVIDIA TensorRT.
      Par exemple, ajoutez la commande WORKDIR /workspace/tensorrt/samples.
    4. Installez les dépendances Python requises pour NVIDIA TersorRT.
      Par exemple, ajoutez la commande RUN /opt/tensorrt/python/python_setup.sh.
    5. Installez le jeu de données MNIST.
      Par exemple, ajoutez les commandes suivantes.
      WORKDIR /workspace/tensorrt/data/mnist
      RUN python download_pgms.py
    6. Installez le client vSphere Bitfusion pour Ubuntu.
      Par exemple, ajoutez les commandes suivantes.
      WORKDIR /workspace
      RUN wget https://packages.vmware.com/bitfusion/ubuntu/20.04/bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
      RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=America/Los_Angeles apt-get install -y ./bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
    Voici un exemple d'un Dockerfile complet.
    FROM nvcr.io/nvidia/tensorrt:20.12-py3
    
    RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1
    
    RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils libcapstone3 perftest
    
    WORKDIR /workspace/tensorrt/samples
    RUN make -j4
    
    RUN /opt/tensorrt/python/python_setup.sh
    
    WORKDIR /workspace/tensorrt/data/mnist
    RUN python download_pgms.py
    
    WORKDIR /workspace
    RUN wget https://packages.vmware.com/bitfusion/ubuntu/20.04/bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
    RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=America/Los_Angeles apt-get install -y ./bitfusion-client-ubuntu2004_3.0.1-4_amd64.deb
  3. À l'aide de Docker, créez l'image à partir du Dockerfile.
    Par exemple, exécutez la commande sudo docker build -t Dockerimage_name, où Dockerimage_name est le nom de la nouvelle image.
  4. Activez le client vSphere Bitfusion.
    Reportez-vous à la section .
  5. (Facultatif) Exécutez le fichier Docker et ciblez un serveur vSphere Bitfusion sur lequel un adaptateur PVRDMA est configuré.
    Par exemple, exécutez les commandes suivantes, où Dockerimage_name est le nom de la nouvelle image et BF_Server_IP est l'adresse IP de votre serveur vSphere Bitfusion.
    sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host Dockerimage_name
    cd /workspace/tensorrt/bin
    bitfusion run -n 1 -l BF_Server_IP -- ./sample_mnist

Résultats

Vous avez créé une image de conteneur NGC qui contient un client vSphere Bitfusion sur lequel PVRDMA est activé pour le trafic de données.

Que faire ensuite

Test de la connexion réseau PVRDMA dans vSphere Bitfusion