nosukeのメモ帳

某外資IT企業で働いています。

vSphereの機械学習のHOLを触ってみた

機械学習に関するHOLが公開されていたので試してみます(英語オンリーです)

なお、実際に画面操作する際はシミュレーションとなっていましたが、しょうがないですね。

 

 

内容は6つのモジュールに分かれていました。

  • モジュール 1 - GPU を使用した vSphere での AI/ML 概要 (15 分)
  • モジュール 2 - NVIDIA vGPU を使用した機械学習ワークロードの実行 (15 分)
  • モジュール 3 - パススルー モードでの GPU の使用 (15 分)
  • モジュール 4 - vSphere with Tanzu で NVIDIA vGPU を使用してコンテナを構成する (15 分)
  • モジュール 5 - ワークロードに適したプロファイルの選択 (vGPU と MIG vGPU) - (15 分)
  • モジュール 6 - NVLink と NVSwitch を使用した機械学習ワークロードの最適化 (15 分)

 

モジュール1

AIやMLの概要の説明なので詳細はスルーしますが、TensorFlow, Caffe2, PyTorch, Mxnet,  Microsoft CNTKやHorovodが人気なフレームワークであるという説明のほか、フレームワークのデプロイ方法として仮想マシンに直接インストール、NVIDIA docker(GPU使用)、 Docker(GPU不要)があるという説明がありました。

 

モジュール2

ここから実際に仮想マシンNVIDIAドライバをインストールし、機械学習ワークロードを実行するシミュレーションを体験します。

複数の仮想マシン間でGPUを共有するNVIDIA vGPU技術を利用しますが、そのためにはNVIDIA vGPUもしくはNVIDIA-ESX-HOSTドライバと呼ばれるNVIDIA vGPUマネージャを導入する必要があります。

また、実際に機械学習ワークロードを実行するためにCUDAおよびCUDNNライブラリを仮想マシンにインストールする必要があります(効率化のために必要)

 

UIはこのようになっています。

 

 

ホストにSSH接続してNVIDIAのVIBをインストールし、ホストを再起動すればインストールが完了します。

 

A30のGPUが2つありますね。

 

続いて次のシミュレーションですが、内容としてはGPUを使用した場合にどれくらいベンチマークが変わるかといった内容でした。

また、GPUを接続している場合はPCIバイスの部分に表示されるようです。

4-24の部分はマルチプロセッサのスライス数(4)とGPUメモリ(24)を表しているとのことです。

 

モジュール3

ここからはvSphere 8から使用できるGPUのDirectPath I/Oの話になります。

1つもしくは複数のGPUを1つの仮想マシンに結び付けることができる機能で、NVIDIA vGPUのように複数の仮想マシンGPUを共有はできません。

 

まずはPCIバイスから選択したGPUのパススルーを有効にします。

 

仮想マシンの設定を編集してPCIバイスで先ほどのパススルーを有効にしたGPUを選択します。

その後のシミュレーションでベンチマークなどを確認できますが、ハイパーバイザーをバイパスできる分高速化されています。

 

モジュール4

vSphere with Tanzuを使います。

まずは仮想マシンの使用リソースを指定する仮想マシンクラスを作成します。

ここからの前半部分ではyaml ファイル経由で Tanzu Kubernetes Grid ワークロード クラスターをデプロイします。

kubectl applyでリソースの作成を行ったり、

podの一覧の確認ができたりします。

後半部分ではGPU が有効なワーカー ノードにアクセスし、Jupyter ノートブック コンテナーをデプロイします。

最終的にjupterlabを起動してこのモジュールは終わりです。

 

 

モジュール5

 vGPUプロファイルもしくはMIG-with-vGPUプロファイルの使い分け方に関するモジュールです。

シミュレーションはワークロードが軽い場合はMIGを、重い場合はvGPUのほうが早いという結果を示しています。

 

モジュール6

vSphere 8.0 Update 1ではNVSwitch技術を使用し1つの仮想マシンに8GPUを割り当てることができます(以下の図のようにGPU間にNVLinkを構築し、NVIDIA NVLink Switch で複数の NVLink を接続することで実現するようです)

 

 

www.nvidia.com

実際にGPUが8つ割り当てられていることをCLIGUIから確認できます。

このケースだとNVSwitchが6つあるようです。

 

以上になります。

シミュレーション中心なのが残念でしたが、VMware製品を用いた機械学習の環境構築について学ぶのであれば受講をおすすめできるHOLかと思います。