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.
Prozedur
- 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.
- 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.
- 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
.
- Listen Sie den Inhalt des Ordners /opt/mellanox/DEBS/ auf, indem Sie den Befehl
ls -l /opt/mellanox/DEBS/*
ausführen.
- 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.
- Erstellen Sie ein Dockerfile.
Beispiel:
FROM nvcr.io/nvidia/tensorrt:20.12-py3
.
- 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.
- 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.
- Erstellen Sie die NVIDIA TensorRT-Beispielprojekte.
Fügen Sie beispielsweise den Befehl
WORKDIR /workspace/tensorrt/samples
hinzu.
- 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.
- Installieren Sie den MNIST-Datensatz.
Fügen Sie beispielsweise die folgenden Befehle hinzu.
WORKDIR /workspace/tensorrt/data/mnist
RUN python download_pgms.py
- 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
- 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.
- Aktivieren Sie den vSphere Bitfusion-Client.
Weitere Informationen finden Sie unter
.
- (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.