トレンドコラム

技術解説

GPUリソースを複数人で効率的に使うための仮想化手法

2020.06.30

サービスクリエーション本部 GPUアーキテクト 森重 ゆう

サービスクリエーション本部
GPUアーキテクト
森重 ゆう

GPUリソースを複数人で効率的に使うための仮想化手法

はじめに

GPUカードの高性能化・高価格化によって、一人ひとりがGPUサーバー1台を占有するのではなく、VMなどを活用してリソースを効率よく使いたいという需要が高まってきています。具体的には次のようなケースにおいて、仮想化によるリソースの効率的な割り当てが求められていると感じています。

・Case1 大学

AIの講義に参加している学生1人1人が、それぞれ異なる用途で同じ時間帯にGPUサーバーを活用したい

・Case2 半導体メーカー

3D CADのレンダリングを行う部署、ディープラーニングによる画像処理を用いて製造ラインの改善を行う部署、顧客データからの需要予測を行うマーケティング部など、さまざまな部署からGPUサーバーのニーズが上がっているが、複数台のサーバーを調達・管理するのは難しい

上記以外にも、複数のジョブでGPUサーバーを共有する場合は、GPUリソースを仮想化しそれぞれのジョブに割り当てることで、より生産性を高められると考えます。
そこで今回は、VM上でGPUを利用する方法について解説します。
前提として、VM作成やVM起動などのといった基本的な動作についてはすでにわかっているものとします。

VM

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

利用手順

1. BIOS設定

GPU内蔵GPUがある場合は無効化します。
さまざまなBIOSがあるので設定方法は割愛しますが、多くはiGPUという名前で設定項目があると思います。

2. ESXiのインストール

UEFIで特別な設定なくインストールします。

3. VM作成

EFIブートで作成します。OSは基本的にどのOSでも構いません。
インストール後、VM設定を開き、仮想マシン オプションタブ内の構成の編集をします。パラメーターの追加から、以下のパラメーターを追加します。
pciPassthru.use64bitMMIO="TRUE”
OSにログインした後、アップデートやVMware-Toolsなどの基本的な初回セットアップを行います。

4. GPUの仮想化

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

5. PCIデバイスの追加

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

6. GPUの確認

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

ここまでが、VM上でGPUを利用する方法です。
注意事項として通常、VMを作成する際にはCPUやメモリーは複数のVMで共有する、もしくは割り当てることができますが、GPUの場合はGPU1枚を複数のVMに割り当てることはできません。

この設定を行うことで、下記の図の様な運用も可能となり効率的にリソースを活用することができます。

まとめ

今回はVMを用いてGPUリソースを異なる用途に割り当てる方法について解説しましたが、GPUの仮想化についてはさまざまな方法があります。次回はDockerを利用してコンテナ上でGPUを利用する方法について解説予定です。
また、先日発表されたNVIDIA A100 Tensor Core GPUはマルチインスタンス機能を備えており、1つのGPUを最大7つのインスタンスに分割して使用可能です。こちらも今後検証してみたいと思います。