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 パッケージが含まれます。

前提条件

  • vSphere 環境に PVRDMA 分散ネットワークが構成されていることを確認します。詳細については、『vSphere ネットワーク』を参照してください。
  • PVRDMA を使用するように vSphere Bitfusion サーバが構成されていることを確認します。PVRDMA を使用するように vSphere Bitfusion サーバを構成する方法を参照してください。
  • Docker がインストールされていることを確認します。

手順

  1. UBUNTU_CODENAME を取得し、NVIDIA コンテナ イメージ内の 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 TensorRT に必要な 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

結果

データ トラフィック用に PVRDMA が有効になっている vSphere Bitfusion クライアントを含む NGC コンテナ イメージが作成されました。

次のタスク

vSphere Bitfusion で PVRDMA ネットワーク接続をテストする方法