NVIDIA GPU Cloud (NGC) 是一個 GPU 加速雲端平台,針對深度學習和科學計算進行了最佳化。若要提高 AI 和 ML 工作流程的效能,可以將 PVRDMA 介面卡新增至在 NGC 上執行的 vSphere Bitfusion 用戶端。

NGC 的 AI 和 ML 映像包含 Mellanox Open Fabrics Enterprise Distribution (MOFED) 套件以支援 RDMA。PVRDMA 支援的開放原始碼 rdma-core 套件未包含在這些映像中,並且這兩種類型的套件不能在同一容器上共存。若要在 NGC 容器上啟用 PVRDMA,必須刪除 MOFED 程式庫並安裝開放原始碼 rdma-core 套件。

透過執行此程序,您可以建立可建置映像的 Dockerfile,該映像可作為容器執行。Dockerfile 範例建立的映像基於 TensorRT 的 NVIDIA 容器映像,其中包括 Ubuntu Linux 發行版以及適用於 Ubuntu 發行版的開放原始碼 rdma-core 套件。

必要條件

  • 確認您的 vSphere 環境設定了 PVRDMA 分散式網路。如需詳細資訊,請參閱《vSphere 網路》說明文件。
  • 確認您已將 vSphere Bitfusion 伺服器設定為使用 PVRDMA。請參閱如何設定 vSphere Bitfusion 伺服器以使用 PVRDMA
  • 確認您已安裝 Docker。

程序

  1. 在 NVIDIA 容器映像中取得 UBUNTU_CODENAME 並尋找 MOFED deb 套件。
    您可以將 NVIDIA 容器映像用作 Dockerfile 的基礎映像。
    1. 在 Docker 中,透過執行 sudo docker run -it --rm -u root --ipc=host --privileged --net=host --cap-add=IPC_LOCK --pid=host NGC_Containter 命令啟動 NGC 容器,其中 NGC_Containter 是 TensorRT 的 NVIDIA 容器映像的 URL 名稱。例如,nvcr.io/nvidia/tensorrt:20.12-py3
    2. 在 NGC 容器中,透過執行 cat /etc/os-release 命令取得 UBUNTU_CODENAME
      例如,Ubuntu 20.04 的 UBUNTU_CODENAMEfocal
    3. 執行 ls -l /opt/mellanox/DEBS/* 命令,列出 /opt/mellanox/DEBS/ 資料夾的內容。
    4. 在顯示的檔案清單中,尋找 MOFED deb 套件。
      例如, ibverbs-providers_51mlnx1-1.51246_amd64.debibverbs-utils_51mlnx1-1.51246_amd64.deblibibverbs-dev_51mlnx1-1.51246_amd64.deblibibverbs1_51mlnx1-1.51246_amd64.deb 是 MOFED deb 套件。
      備註: 不同的 NGC 容器可能包含不同的 MOFED 套件,或者根本不包含 MOFED 套件。
  2. 建立 Dockerfile。
    例如, FROM nvcr.io/nvidia/tensorrt:20.12-py3
    1. 解除安裝 MOFED deb 套件。
      例如,新增 RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1 命令。
    2. 安裝適用於 Ubuntu 的 rdma-core 套件。
      例如,新增 RUN apt-get update && apt-get install -y --reinstall -t focal rdma-core libibverbs1 ibverbs-providers infiniband-diags ibverbs-utils perftest 命令,其中 focal 是 Ubuntu 20.04 發行版的名稱。
    3. 建置 NVIDIA TensorRT 範例專案。
      例如,新增 WORKDIR /workspace/tensorrt/samples 命令。
    4. 為 NVIDIA TersorRT 安裝所需的 Python 相依項。
      例如,新增 RUN /opt/tensorrt/python/python_setup.sh 命令。
    5. 安裝 MNIST 資料集。
      例如,新增以下命令。
      WORKDIR /workspace/tensorrt/data/mnist
      RUN python download_pgms.py
    6. 安裝適用於 Ubuntu 的 vSphere Bitfusion 用戶端。
      例如,新增以下命令。
      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
    這是一個完整的 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. 透過使用 Docker,從 Dockerfile 中建置映像。
    例如,執行 sudo docker build -t Dockerimage_name 命令,其中 Dockerimage_name 是新映像的名稱。
  4. 啟動 vSphere Bitfusion 用戶端。
    請參閱
  5. (選擇性) 執行 docker 檔案,並指定設定了 PVRDMA 介面卡的 vSphere Bitfusion 伺服器為目標。
    例如,執行以下命令,其中 Dockerimage_name 是新映像的名稱, BF_Server_IPvSphere Bitfusion 伺服器的 IP 位址。
    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

結果

您已建立一個 NGC 容器映像,其中包含啟用了 PVRDMA 以傳輸資料流量的 vSphere Bitfusion 用戶端。

下一步

如何在 vSphere Bitfusion 中測試 PVRDMA 網路連線