Azure の次世代 GPU 搭載 VM NVv4 を試す

## 概要

Azure では 2019 年の夏ごろに NVv4 という次世代の GPU 搭載仮想マシンが登場しており、現在プレビューが実施されています。

- [GPU 視覚化ワークロード用の NVv4 Azure 仮想マシンの概要
](https://azure.microsoft.com/ja-jp/blog/introducing-nvv4-azure-virtual-machines-for-gpu-visualization-workloads/)

このアナウンス時から申請していたプレビューアクセスが最近になってようやく認められましたので、試してみた結果と感想をまとめました。

**2020/06/24 追記: NVv4 のプレビュー期間は終了して GA (Generally Available) となりましたので、プレビューの申し込みをすることなく[対応リージョン](https://azure.microsoft.com/ja-jp/global-infrastructure/services/?products=virtual-machines&regions=all)で利用可能です。また東日本リージョンでも NVv4 が使えるようになりました！詳しくは記事最後の追記をご覧ください。**

## NVv4 の紹介

基本的なことは [NVv4 シリース (プレビュー) のドキュメント](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/sizes-gpu#nvv4-series-preview--sup1sup) を参照してください。

「NV って名前なのに NVIDIA じゃなくて AMD の GPU なんですか？」といった素朴な疑問については [Microsoft Ignite 2019 イベント開催時の AMD のブログ投稿](https://community.amd.com/community/radeon-instinct-accelerators/blog/2019/11/04/amd-technology-enables-microsoft-azure-at-ignite-2019)が言及しています。

> Wondering what does NVv4 stands for? “**N**” = GPU Accelerated VM family in Azure “**V**” = Visualization “**4**” = Generation 4 – which means the NVv4 is the latest generation of GPU enabled virtual desktops services from Azure.


[NVv4 シリーズの価格表](https://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/linux/#nvv4-series)を見ると、米国中南部リージョンで開始価格が 11,446円/月〜と、従来世代の GPU 搭載 VM と比べ非常に安くなっています (ただしこれはプレビュー価格であり、GA すると 2 倍くらいになると思います)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61759/a813728a-4427-41a2-0912-831a3a49c7ec.png)

この価格は [AMD Radeon Instinct MI25](https://www.amd.com/ja/products/professional-graphics/instinct-mi25) という仮想化対応 GPU を最大で 8 分割することで実現しているため、性能も値段相応になるものと思われます。なお CPU には AMD EPYC 7V12 (Rome) を使用しています。

NVv4 の想定用途としてはモダンな Web ブラウザやオフィスアプリなどを利用する VDI があげられていますが、Unreal や Unity といったゲームエンジンのツールを多用するようになったゲーム開発分野でも同様に役立ちそうです。クラウドで GPU は使いたいけど月 10 万円以上するモンスタースペック GPU VM は不要という用途は数多くあり、NVv4 の提供する性能・価格ゾーンはこれにマッチしていると思います。

## NVv4 プレビューに申し込む

ということでぜひ試してみたい NVv4 ですが、それには[こちらの申請フォーム](https://aka.ms/NVv4Signup)を提出してプレビューアクセスを申し込む必要があります。

なお自分は申請後かなり待たされました。プレビューのアナウンス後に申請フォームを合計で 3 回くらい提出しましたが、申請を受け付けたといったような連絡もなく、まったく状況がわかりませんでしたので、Microsoft の営業の方にもお願いしたところ 2019 年末にようやくプレビューの案内のメールが来て NVv4 が使えるようになりました。

NVv4 プレビューは米国中南部または西ヨーロッパのリージョンで実施されています。実際に利用可能なリージョンと個数 (vCPU クオータ) はプレビュー開始時に案内メールの中で通知されます。自分の場合は米国中南部で 8 コアまででした。

## NVv4 VM を使ってみる

NV_v4 VM 自体は Azure Portal や CLI などを使って普通に作ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61759/fb416c58-1f0b-206e-2eff-2ab466883b28.png)

GPU を利用するにはドライバのインストールが必要です。いまのところサポートされているのは Windows VM のみです。

### Windows

[こちらのドキュメント](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/n-series-amd-driver-setup)に説明があるとおり、ドライバ [Radeon-Pro-Software-for-Enterprise-19.Q4.1-Technical-Preview.exe](https://download.microsoft.com/download/7/e/5/7e558ac0-3fff-413d-af62-800285a2fc53/Radeon-Pro-Software-for-Enterprise-19.Q4.1-Technical-Preview.exe) をダウンロードしてインストールします。インストールが完了すると Radeon Instinct MI25 MxGPU というディスプレイアダプタが現れ、すぐに利用可能になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61759/d13e6844-0cfe-fcdd-f3d5-a5137512a62d.png)

ディスプレイアダプタはデバイスマネージャーより無効化・有効化することができます。 GPU の有無は即時反映され、再起動は必要ありません (自分はこれにちょっと驚きました)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61759/7b61da66-bf10-6c28-8024-0ec433f9c098.png)

Standard_NV4as_v4 の Windows VM で DxDiag を実行した結果を Gist に貼っておきました。

- [DxDiag output on Azure Standard_NV4as_v4
](https://gist.github.com/yaegashi/c2fe2e3c85a2be50b4038943099c2c14)

### Linux

Microsoft からは Linux 用のドライバは提供されていません。次のような場所で見つかるソフトウェアを使うとなにか動くかもしれないですが、まだ試せていません。

- https://support.lenovo.com/jp/ja/downloads/ds502777

Standard_NV4as_v4 の Linux VM で lscpu や lspci してみた結果は次のとおりでした。

- [lscpu and lspci output on Azure Standard_NV4as_v4
](https://gist.github.com/yaegashi/44eda39ed1d47fd09e308221bdb85ab2)

CPU は 2 コア 4 スレッドのようです。

## NVv4 の感想

自分はもっぱら macOS の [Microsoft Remote Desktop 10](https://apps.apple.com/jp/app/microsoft-remote-desktop-10/id1295203466?mt=12) アプリで、東京から米国中南部リージョンの Standard_NV4as_v4 の Windows Server 2019 Datacenter 1809 の VM に接続して試しています。いくつかテストした結果や感想を書いておきます。

- traceroute で計測したところ、ホップ数は 17 くらい、遅延は 150〜160ms 程度でした。
- リモートデスクトップの操作感自体は、ネットワーク的な距離や遅延から想像されるほど悪くはない感じでした。 Chrome も VSCode も若干のひっかかりはありますが、普通に使うことができます。
- ゲームエンジンや 3D CG ツール類の作業環境として常用するのはやはりちょっと厳しいですが、ビルドやレンダリング前の確認・調整には十分使えるパフォーマンスがあります。東日本リージョンで動くようになれば常用も可能になるかもしれません。
- Unity: GPU のない VM ではカクカク動作だった Editor のシーンプレビューが、 NVv4 で GPU を有効にするとスルスルと動くようになりました。 [Angry Bots 2](https://github.com/UnityTechnologies/AngryBots2) から出力した Windows64 Player は 1FPS 動作だったものが 45FPS 程度まで向上しました。
- Unreal: GPU のない VM では `DX11 feature level 10.0 is required to run the engine.` と出て Editor がそもそも起動しませんでしたが、 NVv4 では普通に起動するようになりました。いくつかの Marketplace のサンプルプロジェクトも動作しました。
- Blender: GPU のない VM では `A graphics card and driver with support for OpenGL 3.3 or higher is required.` と出て起動しませんでしたが、NVv4 では普通に起動します。 [Blender のデモ](https://www.blender.org/download/demo-files/) からダウンロードできるサンプルプロジェクトを開いて編集・レンダリングができました。

…動作確認レベルの情報やふんわりとした感想しかなくて申しわけありません。

本来ならスコアが出るベンチマークプログラムでも走らせるべきところですが、リモートデスクトップ環境だと普通のゲーム系のベンチマークアプリを試したところ軒並み悲惨なスコアしか出ず、本来の CPU・GPU の性能が計測できていないように感じました。

オフスクリーンのレンダリング性能を計測しようと [Blender Benchmark](https://opendata.blender.org/) を走らせてみましたが、 `Radeon Instinct MI25 MxGPU (OPENCL)` を使おうとすると、どのシーンを選んでも Loading scece ... から先に進行しませんでした。なにかバグとかスペック不足とかがあるのかもしれませんが、詳しくは調べてはいません。

自分が特に関心があるのは Unity のアセットビルドや Unreal のクックの所要時間のような、ゲームプロジェクトの CI/CD の観点での性能なので、今後はなにか手頃なサイズのベンチマーク用プロジェクトを用意して時間を計ってみたいと思っています。

## まとめ

Azure の新しい GPU 搭載 VM である NVv4 が試せるようになったので、とりあえず試した結果をまとめてみました。

これまでクラウドの GPU といえば重い機械学習やムービーレンダリング用途の性能お化けばかりでしたが、 NVv4 はそれよりずっと軽い性能と低い価格の領域をカバーしています。 Azure 以外のクラウドベンダには NVv4 に相当するプロダクトはまだなく、ポテンシャルを感じます。

早くプレビューが終わって東日本リージョンでも使えるようになることを願っていますが、こればかりは需要で決まるものなので、日本のどこかの企業が [Windows Virtual Desktop](https://azure.microsoft.com/ja-jp/services/virtual-desktop/) などで大口利用してくれないかなあと思っています。またゲーム業界でも、クラウドの GPU を活用した開発や CI/CD をやっていこうという人が増えるとよいですね。

## 2020/06/24 追記: 東日本で使えるようになりました！

本日なにげなく確認したところ NVv4 が東日本リージョンでも使えるようになっていました！

プレビューが終わり GA になってからは Windows でなければ NVv4 の VM は作れないようになったようです。

東日本の DevTest サブスクリプション価格 (OS 代を除いた正味の VM 価格) は 4 コアの NV4as_v4 が 27,645円/月で、想定内ではありますが US 価格に比べるとちょっと高いという印象です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61759/b99b1588-a20e-3942-b10e-ec780917bd9e.png)


コロナ騒ぎにより、リモートデスクトップサービスなどに GPU が活かせる NVv4 はより重要性が増した VM シリーズだと思います。これからぜひ検証・活用していきたいです。