VMware vSphere Bitfusionの構築方法

14 min read

はじめに

今回はvSphere 8環境にVMware vSphere Bitfusionの構築方法を紹介します。動作確認はしていませんが、vSphere 8以外の環境でも同様の手順で構築できると思います。

前提知識

VMware vSphere Bitfusionとは

VMware vSphere Bitfusionは、AIやML(機械学習)ワークロードのためのGPU仮想化ソリューションです。Bitfusionは、ネットワークを介してリモートのGPUリソースを利用できるようにすることで、GPUの利用効率を向上させ、コストを削減します。 https://docs.vmware.com/jp/VMware-vSphere-Bitfusion/index.html

環境

本記事で使用している環境です。

環境
VMware ESXi 8
VMware vCenter 8
HPE ML350 Gen9
NVIDIA Tesla P40

Bitfusion Serverの構築

Bitfusion Serverは、GPUリソースをネットワーク経由で共有するためのサーバーコンポーネントです。Bitfusion Serverは、物理的なGPUリソースを仮想化し、それらをネットワークを介して提供します。これにより、リモートのクライアントマシンや仮想マシンが、必要なときに必要なだけGPUリソースを利用できます。

ファイルのダウンロード

  • 以下のサイトにアクセスしてください。 https://customerconnect.vmware.com/downloads/details?downloadGroup=BITFUSION-454&productId=1345

  • 自身のVMware Connectアカウントでログインしてください。

  • 「Bitdifusion Sever」の欄にある「DOWNLOAD NOW」ボタンをクリックしてください。

  • ダウンロード時に同意を求められたら、チェックボックスにチェックを入れ、「ACCEPT」をクリックしてください。

OVAのデプロイ

  • vCenter Serverにログインしてください。

  • 任意のデータセンタ、クラスタまたはフォルダを右クリックし、「OVFテンプレートのデプロイ」をクリックしてください。

  • 「ローカルファイル」にチェックを入れ、「ファイルのアップロード」をクリックし、先程ダウンロードしたOVAファイルを指定してください。(2023-05-23時点でファイル名はbitfusion-server-4.5.4-6.ovaとなっています。)その後、「次へ」をクリックしてください。

  • 任意の仮想マシン名を入力し、任意の保存先を指定し、「次へ」をクリックしてください。

  • 任意のリソースを選択し、「次へ」をクリックしてください。

  • 詳細を確認したら、「次へ」をクリックしてください。

  • 任意のストレージを選択し、「次へ」をクリックしてください。

  • 任意のネットワークグループを選択し、「次へ」をクリックしてください。

  • テンプレートのカスタマイズでは以下の項目を入力してください。

    • Hostname: 任意のホスト名を入力してください。
    • vCenter URL: vCenter ServerのURLを入力してください。
    • vCenter User Name: vCenter Serverにログインするためのユーザ名を入力してください。
    • vCenter Password: vCenter Serverにログインするためのパスワードを入力してください。
    • Customer Password: Bitfusionにログインするときに必要なパスワードを設定してください。
    • NVIDIA Packages(オプション): チェックボックスを選択する場合、、NVIDIA ライセンスを承諾します。NVIDIA ライセンスを承諾すると、 vSphere Bitfusion は、仮想マシンの初回起動時に NVIDIA ドライバ、CUDA ライブラリ、および NVIDIA Fabric Manager をダウンロードしてインストールします。
    • Network Adapter 1 (Management/Data): サーバに割り当てるネットワーク情報を設定してください。 この設定は一例であり、環境によって合わせてください。ネットワークアダプタが複数必要な場合はそちらも設定してください。
  • 設定を確認したら、「完了」をクリックしてください。

ESXiでのGPUデバイスの有効化

  • GPUが接続されたESXiにログインしてください。

  • 「管理」→「ハードウェア」→「PCIデバイス」と進み、GPUをクリックし、左上の「パススルーの切り替え」をクリックしてください。

  • パススルーが「無効」から「アクティブ」になっていることを確認してください。

Bitfusion Serverの設定

  • デプロイしたBitfusion Serverを開き、「アクション」→「設定の編集」をクリックしてください。

  • 「新規デバイス」→「PCIデバイス」をクリックしてください。

  • 「デバイスの選択」では「DirectPath I/O」の方を選択し、「選択」ボタンをクリックしてください。

  • CPUを変更する必要があります。最小値は接続する「GPUの台数 x 4」の値になります。

  • メモリを変更する必要があります。「32GB」または「GPUのVRAM x 1.5」の大きい方の値を設定してください。例: 24GB VRAMの場合、割り当てるメモリは「36GB」になります。

  • すべての設定を終えたら、「OK」をクリックしてください。その後、Bitfusion Serverを起動してください。

Bitfusionプラグインの確認

Bitfusion Server初回起動時に自動的にプラグインがインストールされます。

  • Bitfusionプラグインが終わったら、画面上部に以下のような表示が出現します。指示通り、ブラウザを更新してください。

  • ショートカットのプラグイン欄に「Bitfusion」が表示されていることを確認してください。

  • これをクリックすることで、GPUの使用率等を確認することができます。

Bitfusion Clientの構築

Bitfusionが対応しているOSは現時点(2023-05-23時点)でLinuxのみです。その中でも以下のディストリビューションのみサポートしています。

  • CentOS 7
  • Red Hat Linux 7.9
  • Red Hat Linux 8.5
  • Red Hat Linux 9.0
  • Ubuntu Linux 18.04
  • Ubuntu Linux 20.04
  • Ubuntu Linux 22.04
  • SUSE Linux 15.3
  • Rocky Linux 8
  • Rocky Linux 9

今回はUbuntu Linux 20.04で検証していきます。

クライアントマシンの構築

  • 対応しているディストリビューションの仮想マシンを構築してください。

Bitfusion Clientのダウンロード

Bitfusion Clientのインストール

  • ダウンロードしたファイルをFTPやSCPなどを使用し、クライアントマシンの任意のディレクトリに転送してください。
mune@test-bitfusion:~$ ls
bitfusion-client-ubuntu2204_4.5.4-6_amd64.deb
  • SSHでクライアントマシンにアクセスしてください。

  • 以下のコマンドを実行し、bitfusion-clientをインストールしてください。これはディストリビューションによって変わります。

mune@test-bitfusion:~$ sudo apt-get install -y ./bitfusion-client-ubuntu2004_4.5.4-6_amd64.deb

  • 以下のコマンドを実行し、インストールを確認してください。
mune@test-bitfusion:~$ bitfusion version
Bitfusion version 4.5.4 release

クライアントの有効化

このままではまだBitfusionを使用することができません。そこで、vCenter Serverから有効化を行う必要があります。

  • vCenter Serverにログインしてください。

  • クライアントマシンに移動し、「アクション」→「Bitfusion」→「Activate Bitfusion」をクリックしてください。

  • 選択肢が表示されますが、これはクライアントなので「For a client, this will allow users to run Bitfusion workloads.」を選択し、「ACTIVATE」をクリックしてください。

Bitfusionの有効化の確認

vCenterからの確認

  • 「ショートカット」→「Bitfusion」プラグインにアクセスし、「Clients」にクライアントマシンが表示されていることを確認してください。

クライアントマシンからの確認

  • 以下のコマンドを実行し、GPUがリストに表示されていることを確認してください。
mune@test-bitfusion:~$ sudo bitfusion list_gpus
 - server 0 (leader)  [192.168.0.181:56001]: running 0 tasks
   |- GPU [0]: free memory (24576 / 24576MiB) Tesla P40 (6.1)

Bitfusionの動作テスト

この作業はubuntu 20.04のみ対応しています。また、仮想マシンのディスクに十分な空き容量が必要です。(私の場合は50GBで足りました。)また、CPUでの比較をする場合は十分なメモリが必要です。

  • 以下のコマンドを実行し、ディレクトリを作成してください。
mune@test-bitfusion:~$ mkdir ~/bitfusion
  • 以下のコマンドを実行し、ディレクトリに移動してください。
une@test-bitfusion:~$ cd ~/bitfusion/
mune@test-bitfusion:~/bitfusion$
  • 以下のコマンドを実行し、テスト用スクリプトをダウンロードしてください。
une@test-bitfusion:~/bitfusion$ sudo wget https://packages.vmware.com/bitfusion/scripts/client_vm_starter.sh
--2023-05-23 12:54:29--  https://packages.vmware.com/bitfusion/scripts/client_vm_starter.sh
  • 以下のコマンドでインストールを行ってください。
mune@test-bitfusion:~/bitfusion$ sudo bash ./client_vm_starter.sh -p install_cuda_deps
  • 以下のコマンドを実行し、ベンチマークを実行してください。
mune@test-bitfusion:~/bitfusion$ sudo bitfusion run -n 1 -- python3 ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --batch_size=64 --model=resnet50 --num_gpus=1 --num_batches=100

  • vCenter ServerのBitfusionプラグインにアクセスすることでGPUリソースをモニタリングすることができます。

おまけ: CPUとBitfusion(GPU)の比較

Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHzで8CPU割り当て、8GBRAMを割り当てたマシンとBitfusionを使用した場合の比較を行いました。

CPUの場合

以下のコマンドを実行し、検証を行いました。

mune@test-bitfusion:~/bitfusion$ python3 ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --data_format=NHWC --batch_size=64 --model=resnet50 --num_batches=100 --num_gpus=1

結果、一秒あたりに生成できる画像の数は1.29枚となりました。

Bitfusion(GPU)の場合

以下のコマンドを実行し、検証を行いました。

mune@test-bitfusion:~/bitfusion$ sudo bitfusion run -n 1 -- python3 ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --data_format=NHWC --batch_size=64 --model=resnet50 --num_batches=100 --num_gpus=1

結果、一秒あたりに生成できる画像の数は126.98枚となりました。

比較

以下に、ベンチマーク実行時にCPUとBitfusionを比較した結果を示します。画像生成枚数に関してはベンチマークの出力結果、実行時間に関しては実測時間を記載しています。

画像生成枚数[images/sec] 実行時間[m]
CPU(Intel Xeon CPU E5-2630 v4) 1.29 93
Bitfusion(NVIDIA Tesla P40) 126.98 1.5

結果

画像生成枚数に関してはCPUと比較してBitfusionは98倍の数、1秒あたりに画像生成できる枚数が多いことがわかりました。また、実行時間に関しては0.0156倍となり、1時間30分以上実行時間を短縮することができています。

参考にさせていただいたサイト