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 套件。
程序
- 在 NVIDIA 容器映像中取得 UBUNTU_CODENAME 並尋找 MOFED deb 套件。
您可以將 NVIDIA 容器映像用作 Dockerfile 的基礎映像。
- 在 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。
- 在 NGC 容器中,透過執行
cat /etc/os-release
命令取得 UBUNTU_CODENAME。
例如,Ubuntu 20.04 的
UBUNTU_CODENAME 為
focal
。
- 執行
ls -l /opt/mellanox/DEBS/*
命令,列出 /opt/mellanox/DEBS/ 資料夾的內容。
- 在顯示的檔案清單中,尋找 MOFED deb 套件。
例如,
ibverbs-providers_51mlnx1-1.51246_amd64.deb
、
ibverbs-utils_51mlnx1-1.51246_amd64.deb
、
libibverbs-dev_51mlnx1-1.51246_amd64.deb
和
libibverbs1_51mlnx1-1.51246_amd64.deb
是 MOFED
deb 套件。
備註: 不同的 NGC 容器可能包含不同的 MOFED 套件,或者根本不包含 MOFED 套件。
- 建立 Dockerfile。
例如,
FROM nvcr.io/nvidia/tensorrt:20.12-py3
。
- 解除安裝 MOFED deb 套件。
例如,新增
RUN apt-get purge -y ibverbs-providers ibverbs-utils libibverbs-dev libibverbs1
命令。
- 安裝適用於 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 發行版的名稱。
- 建置 NVIDIA TensorRT 範例專案。
例如,新增
WORKDIR /workspace/tensorrt/samples
命令。
- 為 NVIDIA TersorRT 安裝所需的 Python 相依項。
例如,新增
RUN /opt/tensorrt/python/python_setup.sh
命令。
- 安裝 MNIST 資料集。
例如,新增以下命令。
WORKDIR /workspace/tensorrt/data/mnist
RUN python download_pgms.py
- 安裝適用於 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
- 透過使用 Docker,從 Dockerfile 中建置映像。
例如,執行
sudo docker build -t Dockerimage_name
命令,其中
Dockerimage_name 是新映像的名稱。
- 啟動 vSphere Bitfusion 用戶端。
- (選擇性) 執行 docker 檔案,並指定設定了 PVRDMA 介面卡的 vSphere Bitfusion 伺服器為目標。
例如,執行以下命令,其中
Dockerimage_name 是新映像的名稱,
BF_Server_IP 是
vSphere 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 用戶端。