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
- 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.
- 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.
- 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
.
- Répertoriez le contenu du dossier /opt/mellanox/DEBS/ en exécutant la commande
ls -l /opt/mellanox/DEBS/*
.
- 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.
- Créez un fichier Dockerfile.
Par exemple,
FROM nvcr.io/nvidia/tensorrt:20.12-py3
.
- Désinstallez les modules MOFED deb.
Par exemple, ajoutez la commande
RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1
.
- 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.
- Créez les exemples de projets NVIDIA TensorRT.
Par exemple, ajoutez la commande
WORKDIR /workspace/tensorrt/samples
.
- Installez les dépendances Python requises pour NVIDIA TersorRT.
Par exemple, ajoutez la commande
RUN /opt/tensorrt/python/python_setup.sh
.
- Installez le jeu de données MNIST.
Par exemple, ajoutez les commandes suivantes.
WORKDIR /workspace/tensorrt/data/mnist
RUN python download_pgms.py
- 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
- À 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.
- Activez le client vSphere Bitfusion.
Reportez-vous à la section
.
- (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.