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

  1. 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.
    1. 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.
    2. 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.
    3. Enumere el contenido de la carpeta /opt/mellanox/DEBS/ ejecutando el comando ls -l /opt/mellanox/DEBS/*.
    4. 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.
  2. Cree un Dockerfile.
    Por ejemplo, FROM nvcr.io/nvidia/tensorrt:20.12-py3.
    1. Desinstale los paquetes deb de MOFED.
      Por ejemplo, agregue el comando RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1.
    2. 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.
    3. Compile los proyectos de muestra de NVIDIA TensorRT.
      Por ejemplo, agregue el comando WORKDIR /workspace/tensorrt/samples.
    4. Instale las dependencias de Python necesarias para NVIDIA TersorRT.
      Por ejemplo, agregue el comando RUN /opt/tensorrt/python/python_setup.sh.
    5. Instale el conjunto de datos de MNIST.
      Por ejemplo, agregue los siguientes comandos.
      WORKDIR /workspace/tensorrt/data/mnist
      RUN python download_pgms.py
    6. 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
  3. 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.
  4. Active el cliente de vSphere Bitfusion.
    Consulte .
  5. (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.

Qué hacer a continuación

Cómo probar la conexión de red de PVRDMA en vSphere Bitfusion