NVIDIA GPU Cloud (NGC) は、ディープ ラーニングと科学計算用に最適化された GPU アクセラレーション型のクラウド プラットフォームです。AI ワークフローおよび ML ワークフローのパフォーマンスを向上させるために、NGC で実行されている vSphere Bitfusion クライアントに PVRDMA アダプタを追加できます。
NGC の AI イメージと ML イメージには、RDMA をサポートするために Mellanox Open Fabrics Enterprise Distribution (MOFED) パッケージが含まれています。PVRDMA でサポートされているオープン ソース rdma-core パッケージは、これらのイメージに含まれていません。両方のタイプのパッケージを同じコンテナに共存させることはできません。NGC コンテナで PVRDMA を有効にするには、MOFED ライブラリを削除し、オープン ソース rdma-core パッケージをインストールする必要があります。
この手順に従うと、コンテナとして実行可能なイメージをビルドできる Dockerfile を作成できます。Dockerfile のサンプルでは、TensorRT の NVIDIA コンテナ イメージに基づいたイメージが作成されます。これには、Ubuntu Linux ディストリビューションと、Ubuntu ディストリビューション用のオープン ソース rdma-core パッケージが含まれます。
手順
- UBUNTU_CODENAME を取得し、NVIDIA コンテナ イメージ内の 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 TensorRT に必要な 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
結果
データ トラフィック用に PVRDMA が有効になっている
vSphere Bitfusion クライアントを含む NGC コンテナ イメージが作成されました。