トレンドコラム

技術解説

1台のGPUサーバーを複数の仮想インスタンスに分割 ~VMwareでの設定方法~

2020.06.30

NTTPC GPUエンジニア

NTTPC GPUエンジニア

1台のGPUサーバーを複数の仮想インスタンスに分割 ~VMwareでの設定方法~

チーム内でGPUサーバーを共有して利用する場合、1つのジョブだけでGPUサーバー1台を占有するのではなく、複数のジョブを同時並列で回したいというニーズも多いと思います。

1台のGPUサーバーを仮想的に複数のインスタンスに分割したい場合、大きく分けて下記3パターンの手法があります。
1. コンテナ環境(Dockerなど)にアプリケーションソフトやライブラリをパッケージング
2. NVIDIA マルチインスタンスGPU(MIG)で分割
3. ハイパーバイザー環境(VMwareなど)

本コラムでは、3.ハイパーバイザー環境をVMwareで設定する際の方法を紹介します。
※本記事は2020年時点の情報に基づいたものです

注意事項

CPUやメモリーは複数のVM間で共有することができますが、GPUの場合、1枚のGPUカードを複数のVMに割り当てることはできません。1つのVMには1枚以上のGPUをアサインする必要があります。

ハイパーバイザー環境を構築することで、下記の図の様な運用が可能になります。

それでは、実際の構築手順を紹介します。今回の検証環境は下記の通りです。

■検証環境

  • 使用したハイパーバイザー:VMware ESXi 6.7 ( 無償版 )
  • 使用したGPU:NVIDIA V100 Tensor Core GPU

■利用手順

1. BIOS設定

内蔵GPUがある場合は無効化します。
さまざまなBIOSのバリエーションがあるため設定方法は割愛しますが、多くは「iGPU」という名前で設定項目があると思います。

2. VMware ESXiのインストール

UEFIでインストールします。

3. VM作成

UEFIブートで作成します。OSの縛りはありませんので、どのOSを指定しても構いません。
インストール後、VM設定を開き、仮想マシン>オプションタブ内の構成を編集します。
「パラメーターの追加」から、次のパラメーターを追加します。
pciPassthru.use64bitMMIO="TRUE”

OSにログインした後、アップデートやVMware-Toolsなどの基本的な初回セットアップを行います。

4. GPUの仮想化

今回は「GPUパススルー」の設定を行います。
ESXiのメイン画面の左ペインから「管理」を選択し、「ハードウェア」タブ内のPCIデバイスを選択します。
下図のように一覧化されており、その中にGPUが表示されています。通常「NVIDIA Corporation …」がGPUです。
GPUを選択後、パススルーの切り替えを実行し、その後ホストを再起動します。

5. PCIデバイスの追加

VMの編集>その他のデバイスの追加 からPCIデバイスを追加します。

6. GPUの確認

Ubuntuの場合は”lspci”コマンド、Windowsの場合は”デバイスマネージャー”からGPUカードが認識されていることを確認します。
認識されていれば、ドライバーをインストールしOS上で利用できるようにします。

以上が、VM上でGPUを利用する方法です。