NVIDIA P100搭載のECSを3D用途で使ってみる#1

この記事は Alibaba Cloud の日本サイト の環境(ドキュメントやアカウント、そのアカウントでの検証結果)に基づいて記載しています。 日本サイトと国際サイトでは各プロダクトごとに提供機能が一部異なることがあります(そのほとんどは国際サイトの方が日本サイトよりも多機能になっている)。記事の内容は適宜最新化する予定です。

Alibaba Cloud ECSのgn5インスタンスファミリーにはNVIDIAのP100が搭載されています。 NVIDIAのGPUというとディープラーニングでの話題が多い現状ですが、仮想マシン上でGPUの利用を可能とし3D CADなどを可能とする技術が5年前位から始まっています。 特にグラフィック処理のリソースを要求するWindows 10の仮想化(VDI)に伴い一般化してきています。

今回は、Alibaba Cloudで利用できるNVIDIA P100をWindows Server 2016から3D MarkやYoutubeでベンチマークします。

しかし、結論から言うとテスト出来ませんでした。 GPUの実行モードが”Compute”になっており、ゲストOS(Windows Server 2016)からグラフィックスカードとして利用出来ませんでした。 従量課金の2時間自動リリースで購入したこともあり試行錯誤のうちに時間切れになりました。 再チャレンジ予定です。

仮想マシンでのGPU利用について

2010年初頭のころの仮想デスクトップでは3D CADや動画参照は以下の理由などからNGでした。

  • 使い物にならない(カクカク、コマ落ち)
  • 大量のCPUリソース消費 (VDI黎明期は1VMに1vCPUが基本だったことともあり、CPUリソース消費はとても嫌われた)
  • CADなどの業務アプリケーションではそもそもインストールできない (インストーラが認定されたGPUが搭載されているかをチェック)

そんなかCitrix のXenServerやVMwareのESXiで物理GPUを仮想マシンにパススルーして認識させる技術が登場します。 このころは1物理サーバにGPUカードを何枚も搭載し、GPUカード分の仮想マシンを起動する運用です。 もちろん、費用対効果の課題はありました。

次にNVIDIAはGPU仮想化技術を公開します。 1枚のGPUカードに複数のGPUコアを搭載し、その1コアを論理分割して仮想マシンに割り当てることが出来ました。 1番最初はKeplerベースのK1/K2です。 

NVIDAさんの資料から抜粋していますが、K1では1枚のカード(ボード)で最大32のvGPU、つまり32台の仮想マシンでGPUの利用を実現しました。物理サーバに2枚以上のK1/K2カードを搭載することで32VMや64VMなどやっと集約するメリットが出始めた頃ですね。

まあ、Frame Buffer(メモリと言った方がわかりやすいですかね)は512MBなのでCAD用途よりはOSやMS Office、ブラウジングなどのCPUリソースのオフロード用途がメインでしたが効果は大きいものでした。さらに64VMとなるとCPUリソースがどうしても足りなくなる状況もありました。当時のサーバ向けのCPUは1Socketで18core程度だったでしょうか。CADですと4vCPUは欲しいところでしたし、64VMとなると、256 の物理コアが必要となりますが、多ソケット対応のサーバはレアでそもそも基幹システム向けで非常に高額です。コア数が多いCPUはクロックが低いという課題もありました。

https://images.nvidia.com/content/grid/pdf/GRID-vGPU-User-Guide.pdf

その後、Keplerベース、Maxwellベース、Pascalベースと進化を続けています。 Maxwellからライセンスの考えが変わったり色々ありましたけど。

こんなGPU仮想化ですが、Windows 10がメインストリームになっていく中で注目度があがっているようです。 Windows 10はCPUリソースを多く消費するためです。 GPU仮想化を行うことで仮想マシンのCPUリソース消費を抑える一方、動画やマルチメディア処理を高速化、高品質化し、エンドユーザにもメリットがあるわけです。

GPU仮想化について、黎明期から大分色々とやっていたのでまだまだ書きたいことはあるのですがこの辺とします。

テスト環境について

今回は以下の環境でテストを実施します。

  • Alibaba Cloud ECSのgn5(ecs.gn5-c4g1.xlarge)
  • OSはWindows Server 2016
  • リージョンは東京

今回利用するECSではハイパーバイザーは操作出来ないため、vGPU(1つのGPUの物理コアを論理分割し仮想マシンに割り当てる概念)は利用出来ないかもしれません。 vGPUを利用出来ない場合はパススルー型となり、Windows Server側ではvGPU用のドライバではなく通常のP100のドライバを導入します。

テストは、3D Markによりベンチマークを実行します。 また、Youtubeを利用し、GPUの有無でCPUのリソース消費が大きく低減することを確認します。

GPU演算タイプの購入

ECSのgn5タイプファミリーを従量課金で購入します。

gn5に標準で付与されるローカルディスクの免罪条項がポップアップされます。 ローカルディスクなのでノード障害時はデータはロストしますということです。

ECSインスタンスが立ち上がりました。

リモートデスクトップでサインインします。Windows Server 2016ですがパッと見はWindows 10ですよね。まあ、カーネルは一緒ですし、UI のかぶせ方が多少異なるくらいです。

デバイスマネージャで確認します。NVIDIA P100はドライバーが未インストールのため認識されていません。

非GPU利用時のYoutube

GPUドライバをインストールする前にYoutube動画でCPUリソース消費を確認します。 GPUドライバをインストール後にCPU消費が大きく軽減するを比較、確認するためです。

HD画質でAlibab CloudのET City Brainの動画を流します。

CPUは40-50%を推移しています。 4vCPUの50%というと5GHz相当のリソース消費となります。

NVIDIAドライバーのインストール

NVIDIAのドライバダウンロードサイトにアクセスし、TeslaのP100を選びます。

ドライバが見つからないとのこと。 ベータ版も探してみます。

結局見つからないので、CUDA Toolkitのバージョンを10.1から10.0に変更します。

CUDA Toolkit 10.0は対応しています。ダウンロードします。

再度確認画面が来ます。ダウンロードします。

ダウンロードしたモジュールをインストールします。

使用許諾を確認し、次へ進めます。

インストールオプションは”高速”で進めます。

インストールが開始されました。

インストールが終了しました。

デバイスマネージャからTesla P100が正常に認識されたことが確認出来ます。

GPU有効化状態でのYoutube

CPUの使用率は20%台に減少したことが確認出来ます。

後述しますが実はGPUは有効化されていません。どうしてCPU使用率が減ったかは謎です。。。

ブラウザのChromeでGPU使用が無効となっているのでしょうか?

設定を確認します。 ”ハードウェアアクセラレーションが使用可能な場合は使用する”は有効です。 Chromeの設定の問題ではないようです。

基本に立ち返り、”nvidia-smi”コマンドでGPUの状況を確認します。

あれれ??? GPUが使用されていません。 GPU-Utilが0%です。また、GPU上のメモリ割り当てもされていません。 一番下にあるProcessesに”No running processes found”とあります。 GPUが割り当てされていないということになります。

NVIDAのGPU利用の際のお約束といえる”NVIDIAコントロールパネル”を確認します。

Windows ServerはグラフィックカードとしてGPUを認識していない模様。

上記の操作はリモートデスクトッププロトコルを使用していたので、コンソール接続が必要なのでしょうか?

Alibaba CloudコンソールからVNC接続します。

今度はコントロールパネルから”NVIDIAコントロールパネル”を開くことが出来ました。 

しかし、使用モードが”コンピューティングニーズ専用です”とあります。 Maxwell以降、Compute ModeとGraphic Modeがあるのですが、どうやらCompute Modeとして構成されているようです。 これではグラフィックスカードとしては利用出来ないわけです。

本当は上記のNVIDIAコントロールパネルで以下の3Dモデルがクルクルと回るところを確認したかったのです。

従量課金の自動リリースまで残り数分。nvidia-smiからモードを変更しようとしましたが”cannot be changed”と断られました。(コマンド実行書式もこれで正しいかは怪しい)

ここで時間切れです。 Alibaba Cloudのドキュメントセンターをざっと見る限り明確な記載はないのですがgn5の用途は以下のとおり紹介されています。

以下に適しています:

ディープラーニング
流体力学、金融工学、ゲノミクス、および環境分析などの科学計算
高性能コンピューティング、レンダリング、マルチメディアのコーディングとデコーディング、その他サーバーサイド GPU 計算の負荷

https://jp.alibabacloud.com/help/doc-detail/25378.htm?spm=a21mg.p38356.a3.5.30281cc8H7Vawq#gn5

ディープラーニングや科学計算は確かにCompute モードで使用するのですが、レンダリングやGPU計算の負荷などはGraphicモードとも思えます。

まだあきらめず再チャレンジします。  続編の記事はこちら

以上