NVIDIA GPU Cloud (NGC) es una plataforma de nube con aceleración de GPU optimizada para el aprendizaje profundo y la computación científica. Para mejorar el rendimiento de los flujos de trabajo de IA y ML, puede agregar un adaptador de PVRDMA a su cliente de vSphere Bitfusion que se ejecuta en una NGC.
Las imágenes de IA y ML para NGC contienen paquetes de Mellanox Open Fabrics Enterprise Distribution (MOFED), para la compatibilidad con RDMA. Los paquetes rdma-core de código abierto, que son compatibles con PVRDMA, no se incluyen en estas imágenes y ambos tipos de paquetes no pueden coexistir en el mismo contenedor. Para habilitar PVRDMA en el contenedor de NGC, debe eliminar las bibliotecas MOFED e instalar los paquetes rdma-core de código abierto.
Al seguir este procedimiento, puede crear un Dockerfile que compile una imagen, que usted podrá ejecutar como contenedor. En el ejemplo de Dockerfile se crea una imagen basada en una imagen de contenedor de NVIDIA para TensorRT, que incluye una distribución de Ubuntu Linux y los paquetes de código abierto rdma-core para la distribución de Ubuntu.
Requisitos previos
- Compruebe que el entorno de vSphere tenga configurada una red distribuida de PVRDMA. Para obtener más información, consulte la documentación de redes de vSphere.
- Compruebe que haya configurado un servidor de vSphere Bitfusion para usar PVRDMA. Consulte Cómo configurar un servidor de vSphere Bitfusion para usar PVRDMA.
- Compruebe que tiene Docker instalado.
Procedimiento
- Obtenga UBUNTU_CODENAME y busque los paquetes deb de MOFED en la imagen de contenedor de NVIDIA.
Utilice la imagen de contenedor de NVIDIA como imagen base para el Dockerfile.
- En Docker, inicie el contenedor de NGC ejecutando el comando
sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host NGC_Containter
, donde NGC_Containter es el nombre de la URL de la imagen de contenedor de NVIDIA para TensorRT. Por ejemplo, nvcr.io/nvidia/tensorrt:20.12-py3.
- En el contenedor de NGC, obtenga UBUNTU_CODENAME ejecutando el comando
cat /etc/os-release
.
Por ejemplo,
UBUNTU_CODENAME para Ubuntu 20.04 es
focal
.
- Enumere el contenido de la carpeta /opt/mellanox/DEBS/ ejecutando el comando
ls -l /opt/mellanox/DEBS/*
.
- En la lista de archivos que se muestra, busque los paquetes deb de MOFED.
Por ejemplo,
ibverbs-providers_51mlnx1-1.51246_amd64.deb
,
ibverbs-utils_51mlnx1-1.51246_amd64.deb
,
libibverbs-dev_51mlnx1-1.51246_amd64.deb
y
libibverbs1_51mlnx1-1.51246_amd64.deb
son paquetes
deb de MOFED.
Nota: Los distintos contenedores de NGC pueden contener diferentes paquetes de MOFED o no contener ninguno.
- Cree un Dockerfile.
Por ejemplo,
FROM nvcr.io/nvidia/tensorrt:20.12-py3
.
- Desinstale los paquetes deb de MOFED.
Por ejemplo, agregue el comando
RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1
.
- Instale los paquetes de
rdma-core
para Ubuntu.
Por ejemplo, agregue el comando
RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils perftest
, donde
focal es el nombre de su distribución de Ubuntu 20.04.
- Compile los proyectos de muestra de NVIDIA TensorRT.
Por ejemplo, agregue el comando
WORKDIR /workspace/tensorrt/samples
.
- Instale las dependencias de Python necesarias para NVIDIA TersorRT.
Por ejemplo, agregue el comando
RUN /opt/tensorrt/python/python_setup.sh
.
- Instale el conjunto de datos de MNIST.
Por ejemplo, agregue los siguientes comandos.
WORKDIR /workspace/tensorrt/data/mnist
RUN python download_pgms.py
- Instale el cliente de vSphere Bitfusion para Ubuntu.
Por ejemplo, agregue los siguientes comandos.
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
Este es un ejemplo de un Dockerfile completo.
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
- Mediante Docker, compile la imagen a partir del Dockerfile.
Por ejemplo, ejecute el comando
sudo docker build -t Dockerimage_name
, donde
Dockerimage_name es el nombre de la nueva imagen.
- Active el cliente de vSphere Bitfusion.
- (opcional) Ejecute el archivo de Docker y apunte a un servidor de vSphere Bitfusion que tenga un adaptador de PVRDMA configurado.
Por ejemplo, ejecute los siguientes comandos, donde
Dockerimage_name es el nombre de la nueva imagen y
BF_Server_IP es la dirección IP de su servidor de
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
Resultados
Ha creado una imagen de contenedor de NGC que contiene un cliente de
vSphere Bitfusion con PVRDMA habilitado para el tráfico de datos.