Bei NVIDIA GPU Cloud (NGC) handelt es sich um eine GPU-beschleunigte Cloud-Plattform, die für Deep Learning und wissenschaftliches Computing optimiert ist. Zur Leistungssteigerung Ihrer KI- und ML-Workflows können Sie dem vSphere Bitfusion-Client, der auf einer NGC ausgeführt wird, einen PVRDMA-Adapter hinzufügen.

KI- und ML-Images für NGC enthalten MOFED-Pakete (Mellanox Open Fabrics Enterprise Distribution) für die RDMA-Unterstützung. Von PVRDMA unterstützte Open Source-Pakete vom Typ rdma-core sind in diesen Images nicht enthalten, und beide Pakettypen können nicht gleichzeitig im selben Container vorhanden sein. Zum Aktivieren von PVRDMA in Ihrem NGC-Container müssen Sie die MOFED-Bibliotheken löschen und die Open Source-Pakete vom Typ rdma-core installieren.

Mit diesem Verfahren können Sie ein Dockerfile zum Erstellen eines Images anlegen, das als Container ausgeführt werden kann. Im Dockerfile-Beispiel wird ein Image erstellt, das auf einem NVIDIA-Container-Image für TensorRT mit einer Ubuntu Linux-Distribution und den Open Source-Paketen vom Typ rdma-core für die Ubuntu-Distribution basiert.

Voraussetzungen

Prozedur

  1. Rufen Sie den UBUNTU_CODENAME ab und suchen Sie nach MOFED-Paketen vom Typ deb im NVIDIA-Container-Image.
    Sie verwenden das NVIDIA-Container-Image als Basis-Image für Ihre Docker-Datei.
    1. Starten Sie den NGC-Container in Docker, indem Sie den Befehl sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host NGC_Container ausführen, wobei NGC_Container als Name der URL des NVIDIA-Container-Images für TensorRT fungiert. Beispiel: nvcr.io/nvidia/tensorrt:20.12-py3.
    2. Rufen Sie den UBUNTU_CODENAME im NGC-Container ab, indem Sie den Befehl cat /etc/os-release ausführen.
      Beispiel: Der UBUNTU_CODENAME für Ubuntu 20.04 lautet focal.
    3. Listen Sie den Inhalt des Ordners /opt/mellanox/DEBS/ auf, indem Sie den Befehl ls -l /opt/mellanox/DEBS/* ausführen.
    4. Suchen Sie in der angezeigten Dateiliste nach MOFED-Paketen vom Typ deb.
      Beispiel: Bei ibverbs-providers_51mlnx1-1.51246_amd64.deb, ibverbs-utils_51mlnx1-1.51246_amd64.deb, libibverbs-dev_51mlnx1-1.51246_amd64.deb und libibverbs1_51mlnx1-1.51246_amd64.deb handelt es sich um MOFED-Pakete vom Typ deb.
      Hinweis: Mehrere NGC-Container enthalten gegebenenfalls verschiedene oder gar keine MOFED-Pakete.
  2. Erstellen Sie ein Dockerfile.
    Beispiel: FROM nvcr.io/nvidia/tensorrt:20.12-py3.
    1. Deinstallieren Sie die MOFED-Pakete vom Typ deb.
      Fügen Sie beispielsweise den Befehl RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1 hinzu.
    2. Installieren Sie die rdma-core-Pakete für Ubuntu.
      Fügen Sie beispielsweise den Befehl RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils perftest hinzu, wobei focal als Name der Ubuntu 20.04-Distribution fungiert.
    3. Erstellen Sie die NVIDIA TensorRT-Beispielprojekte.
      Fügen Sie beispielsweise den Befehl WORKDIR /workspace/tensorrt/samples hinzu.
    4. Installieren Sie die erforderlichen Python-Abhängigkeiten für NVIDIA TersorRT.
      Fügen Sie beispielsweise den Befehl RUN /opt/tensorrt/python/python_setup.sh hinzu.
    5. Installieren Sie den MNIST-Datensatz.
      Fügen Sie beispielsweise die folgenden Befehle hinzu.
      WORKDIR /workspace/tensorrt/data/mnist
      RUN python download_pgms.py
    6. Installieren Sie den vSphere Bitfusion-Client für Ubuntu.
      Fügen Sie beispielsweise die folgenden Befehle hinzu.
      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
    Dies ist ein Beispiel eines vollständigen Dockerfile.
    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. Erstellen Sie mithilfe von Docker das Image aus dem Dockerfile.
    Führen Sie beispielsweise den Befehl sudo docker build -t Dockerimage_name aus, wobei Dockerimage_name als Name des neuen Images fungiert.
  4. Aktivieren Sie den vSphere Bitfusion-Client.
    Weitere Informationen finden Sie unter .
  5. (Optional) Führen Sie das Dockerfile aus und verwenden Sie einen vSphere Bitfusion-Server, der über einen konfigurierten PVRDMA-Adapter verfügt.
    Führen Sie beispielsweise die folgenden Befehle aus, wobei Dockerimage_name als Name des neuen Images und BF_Server_IP als IP-Adresse Ihres vSphere Bitfusion-Servers fungiert.
    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

Ergebnisse

Sie haben ein NGC-Container-Image erstellt, das einen vSphere Bitfusion-Client mit aktiviertem PVRDMA für Datenverkehr enthält.

Nächste Maßnahme

Vorgehensweise zum Testen der PVRDMA-Netzwerkverbindung in vSphere Bitfusion