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

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

Windows Server 2016からNVIDIA P100をグラフィックカードとして利用できることを確認しました。ECSインスタンスの購入からドライバのインストール、ライセンスの割り当て、そしてGPUの効果の確認までの一通りの手順を具体的に紹介します。

Alibaba CloudのドキュメントセンターではLinux(CentOS&Ubuntu)の手順しか公開されていません。 WindowsでGPU仮想化を利用したい場合は是非参考にしてみてください。

1. NVIDIA GRIDドライバのダウンロード

前回申請した試用ライセンスのアカウントからNVIDIA Enterpriseにログインし、必要なモジュールをダウンロードします。

1.1. NVIDIA Enterpriseへのログイン

前回、90日の試用版ライセンスを申し込みました。 アカウントが発行されたのでNVIDIA Enterpriseにログインします。

URLはこちら

”Redeem Product Activation Keys”からアカウント発行時のメールに記載のあるKeysを登録します。  Chromeからは画面が崩れ、何回実行しても成功しませんでした。 Internet Explorerから実行し登録出来ました。ただ、Internet Explorerからも画面が崩れ、また何度か失敗しています。 とりあえず、登録出来たので原因は究明しません。

Keysの登録が完了しました。 ”Product Information”にアクセスします。

こちらからモジュールをダウンロードします。大きく2種類のモジュールが提供されています。

  • NVIDIA GRID
  • NVIDIA Virtual GPU Software
    • Version 7.2
    • Version 6.4
    • Version 5.4

1.2. NVIDIA GRIDのダウンロード

まず、”NVIDIA GRID”はP100を利用したいゲストOSにインストールするものではありません。NVIDIAのカードを搭載した物理ホストのハイパーバイザー側にインストーするするモジュールになります。 また、Maxwell以降に必要になったライセンス認証のためのライセンスサーバもこちらでモジュールを取得出来ます。

まずは”NVIDIA GRID”をクリックします。Termの確認画面が来ますので一読し、承諾します。 NVIDIA GRIDのモジュールダウンロード画面が表示されました。

以下のドキュメントないしモジュールが取得できます

  • Quick Start Guide
    • ホームページへのリンク
  • NVIDIA GRID software
    • GRID for vSphere 6.5
    • GRID for vSphere 6.0
    • GRID for vSphere 5.5
    • GRID for XenServer 7.1
    • GRID for XenServer 7.0
    • GRID for Windows
    • GRID for RHEL KVM
    • GRID for UVP
  • GPU Mode Change Utility
  • NVIDIA License Manager

Alibaba Cloud ECSでのNVIDIA P100利用で必要となるのは”NVIDIA License Manager”です。 一応、Alibaba Cloudが提供しているライセンスサーバを利用出来るかも試してはみる予定です。 

また、ライセンスサーバについて以下の説明があります。 ライセンスサーバを構築する場合は、インストール後に表示されるMAC IDをNVIDIA ENTERPRISEに登録し、そのあとにライセンスフィルがダウンロード可能になるとのこと。

”After you install the license server, read the MAC ID displayed on it. Use this MAC ID to map required number of licenses and download license file by clicking on “Register License Server” in the left side panel.”

1.3. NVIDIA Virtual GPU Softwareのダウンロード

こちらの”NVIDIA Virtual GPU Software”がNVIDIA P100を利用するゲストOS側に必要なモジュールとなります。

NVIDIA vGPU sortware packageはゲストOSを起動させるハイパーバイザーを選びます。 additional softwareは”NVIDIA GRID”でダウンロードできるLicense ManagerとGPU Mode Change Utilityと同じもののようです。もうひとつVMwareのvRealize用のモジュールがありますがこちらは今回は不要です。

  • NVIDIA vGPU sortware package
    • NVIDIA vGPU for vSphere 6.5
    • NVIDIA vGPU for vSphere 6.7
    • NVIDIA vGPU for XenServer 7.0
    • NVIDIA vGPU for XenServer 7.1
    • NVIDIA vGPU for XenServer 7.6
    • NVIDIA vGPU for Windows
    • NVIDIA vGPU for RHEL KVM 7.5
    • NVIDIA vGPU for RHEL KVM 7.6
    • NVIDIA vGPU for AHV
  • additional software
    • License Manager
      • License Manager for Windows
      • License Manager for Linux
    • GPUMode Change Utility
      • for Tesla M60 and M6 GPUs
    • NVIDIA Virtual GPU Management Pack for vRealize Operations

Alibaba Cloud ECSのHyperVisorはKVMベースです。 RHEL KVMを利用することにします。 動くかどうかは試してみるまでわかりません。

2. ECSインスタンスの作成

具体的な手順は省略します。以下の構成で購入しています。

  • 従量課金
  • インスタンスタイプファミリー ”ecs.gn5-c4g1.xlarge”
  • 東京リージョン
  • Windows Server 2016

出来上がりました。

この時点でドライバはインストールしていません。デバイスマネージャで確認しますが、NVIDIA P100はOSからは認識されていません。(正しい動作)

3. ドライバのインストール

2つのドライバをインストールします。 P100のドライバとGRIDドライバの2つです。

3.1. NVIDIA P100ドライバのダウンロード

公式サイトからドライバをダウンロードします。

URLはこちら

ダウンロードします。

3.2. NVIDIA P100 ドライバのインストール

ダウンロードしたインストーラを起動します。

使用許諾に同意します。

インストールオプションは”高速”を指定し、次へをクリックします。

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

デバイスマネージャーから”NVIDIA Tesla P100-PCIE-16GB”が認識されたことが確認できます。

3.3. GRIDドライバのインストール

手順1.3でダウンロードしたRHEL用のモジュールを展開します。

”370.35_grid_win10_server2016_64bit_international”を起動します。

”互換性のあるグラフィックスハードウェアが見つかりません”ということでインストーラが起動できません。

Alibaba Cloudのドキュメントセンターの手順では”NVIDIA-Linux-x86_64-390.57-grid.run”でした。 

URLはこちら

先ほどインストールが失敗したモジュール群のフォルダにあるLinux向けのモジュールは”NVIDIA-Linux-x86_64-367.130-grid.run”です。 バージョンが異なります(マニュアルは390、こちらが実施したのは367)。 つまり、ホストサーバ側の環境よりもゲストOS側が古いため互換性チェックでNGとなりました。

確認したところ単純な間違いで古いモジュールを起動していました。最新のモジュールで再実行します。

先ほどチェックでNGとなったシステムチェックは問題なくPassしました。”同意して続行する”をクリックします。

既定の高速でインストールします。 (画面はカスタムになっていますが画面キャプチャを間違えてしまいました)

インストール中です。

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

3.4. nvidia-smiコマンドからの確認

GPUが認識されたかどうかをnvidia-smiコマンドから確認します。

コマンドプロンプトから”C:\Program Files\NVIDIA Corporation\NVSMI”に移動し、コマンド”nvidia-smi.exe”を実行します。

ProcessesにGPUが確認出来ました。

この時点でマニュアルに従い、ゲストOSを再起動します。 再起動後に再度nvidia-smiで確認します。 GPUを利用しているプロセス名も表示され、GPUが正常に認識出来ています。

3.5. NVIDIAコントロールパネルからの確認

次に、コントロールパネルの”NVIDIA コントロールパネル”を確認します。赤枠の部分が回転しています。 問題ないようです。

3D設定を確認します。

下までスクロールした画面です。

3.5. ライセンスの割り当て

次は取得した検証ライセンスを割り当てます。

Alibaba Cloudの公式ドキュメントの手順ではLinuxのみについて言及されていました。 WindowsについてはNVIDIAの公式マニュアルを確認しながら作業を進めていきます。

URLはこちら

まずは現在の状態を確認します。 NVIDIA コントロールパネルから”ライセンスの管理”をクリックします。

”お使いのシステムは GRID Virtual Applications 向けに設定されています”とメッセージが確認出来ます。

NVIDIAのマニュアルでは3つのライセンス種別を確認出来ます。

簡単にまとめます。

ライセンス対象ユーザ
GRID
Virtual Applications
・PCレベルのアプリケーション
・CitrixやVMwareのSBCソリューション
GRID
Virtual PC
・ 優れたユーザエクスペリエンスが必要な ビジネス用途
・高解像度ビデオ
Quadro
vDWS
・ミッドレンジ及びハイエンドのワークステーションユーザ

機能ベースでは以下の資料のマトリックスの方がわかりやすいです。

URLはこちら

試しにAlibaba Cloudのドキュメントセンターで紹介されていたライセンスサーバの情報を指定します。”ライセンスの取得に失敗しました”とのことでNGでした。

当初の予定通りに、ライセンスサーバを構築します。

3.6. ライセンスサーバの構築

NVIDIA GRIDのライセンスサーバを構築します。 同じECSインスタンスにインストールします。  実環境でGPUを割り当てたゲストOSが複数ある場合や頻繁にイメージの入れ替えなどを行う場合は専用のインスタンスにライセンスサーバを構築しましょう。

インストーラを実行する前にJavaの実行環境をインストールしておきます。 32ビット版が必要となることに注意しましょう。

インストーラを起動します。 ”Next”をクリックします。

NVIDIAのライセンスサーバに関するLicense Agreementを確認します。

Apacheに関するLicense Agreementを確認します。

インストールフォルダーを指定します。

Firewallでオープンするポートを指定します。 8080は管理用通信となります。リモートアクセスが必要な場合にだけチェックボックスにチェックしましょう。

インストール構成を確認し、問題なければ”install”をクリックします。

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

netstatコマンドでListenポートを確認します。”7070”と”8080”の2つのポートを確認出来ます。

Webブラウザから管理画面にアクセスします。http://localhost:8080/licserver にアクセスします。

この後のライセンスファイルの取得で使用するHostidを確認します。 リストボックスで複数ある場合はIPアドレスが付与されているインターフェースのMACアドレスと同じものであることを確認しましょう。

次にNVIDIA Enterpriseにログインし、ライセンスサーバを登録します。

”Register License Server”画面にアクセスし、MAC addressにライセンスサーバのインターフェースのMACアドレスを記号無しで入力し、”Create”をクリックします。

“Map Add-Ons”をクリックします。

”Map Add-Ons”をクリックします。

”View Server”から”Download License File”をクリックし、ライセンスファイルをダウンロードします。

ライセンスサーバの管理画面に再度アクセスします。ライセンスファイルをアップロードします。 メニューやメッセージの変換が正常に行われていないようですが気にせず進めます。Java(JRE)のバージョンに起因するものかもしれません。

”success”とでました。 ライセンスファイルのアップロードが成功しました。

最後にゲストOSから構築したライセンスサーバを指定します。

NVIDIA コントロールパネルからライセンスサーバについて、localhostのポート7070を指定します。 ”お使いのシステムは Quadro Virtual Data Center Workstation向けにライセンスされています”と表示されました。 

4. テスト

Youtubeの動画を参照する簡単なテストを実施します。

4.1. Youtube

Youtubeに公開されている”Alibaba Cloud ET City Brain Helps The Firefighters in Hangzhou”をHD画質で閲覧した時のCPU使用率を確認します。

約10%で推移しています。 GPUに処理がオフロードされていますね。また、画質も良く、コマ落ちなどもありません。

5. イメージのバックアップ

テストで使用しているECSインスタンスは従量課金です。 次のテストまでいったんインスタンスをリリースするために今回構築した環境をバックアップします。

5.1. スナップショットの作成

ECSインスタンスの管理画面から”スナップショットの作成”をクリックします。

スナップショット名を入力し、OKをクリックします。

スナップショットの作成直後は進行度”0%”、ステータスは”作成中”です。 ”100%”になるまで待ちます。

ステータスが”成功”となりました。

5.2. カスタムイメージの作成

次にECSインスタンスを生成するために取得したスナップショットからカスタムイメージを作成します。

”カスタムイメージ作成”をクリックします。

イメージ名などを入力し、”作成”をクリックします。

5.3. カスタムイメージからのインスタンス生成

作成したカスタムイメージから問題なくECSインスタンスを生成できることを確認します。 

取得したカスタムイメージから”インスタンスの生成”をクリックします。

ECSインスタンスの購入画面でgn5を選択します。

無事作成出来ました。

6. まとめ

NVIDIAのGPUカードが搭載されるECS インスタンスについてGPUのグラフィック機能を有効化できることを確認しました。 Alibaba CloudのドキュメントセンターにはLinux版しか記載がなく、Windows環境について少し手間がかかりましたが無事に動きました。 Windowsでの利用を予定している場合は参考になると思います。

GPU仮想化技術が登場した2012~2013年頃はオンプレミスが前提でした。 PoCも手軽に出来るものではありませんでした。認定されたサーバ本体、NVIDIAのカードを揃え、Citrix XenDesktopやVMware Horizonの環境を構築し、お客様環境に接続して各種検証を行う必要があった為です。 個人での検証はほぼ不可能な状況でした。 現在はIaaSを提供する各社からNVIDIAのカードを搭載するサーバを従量課金で安価にかつ即座に利用可能です。 個人でも1,000円もかからないコストでPoCが出来るようになった訳です。凄い時代になったものです。  

次のテストはCitrixのVirtual Apps (旧名XenApp)かVMware HorizonでICAないしPCoIP/BlastでOpenGLを使ってみるところまでテストします。

最後にWindows環境で参考としたNVIDIAのオンラインマニュアルのリンクを紹介して終わりにします。

NVIDIA Virtual GPU Software Documentation v7.0 through 7.2

ゲストOSへのドライバインストールやライセンスサーバの作り方など。

https://docs.nvidia.com/grid/latest/index.html

Virtual GPU Client Licensing User Guide

ライセンスの割り当ての話はこちら。

https://docs.nvidia.com/grid/latest/grid-licensing-user-guide/index.html

以上