Azure Virtual Desktop 用グラフィックス処理装置 (GPU) アクセラレーションを構成する
重要
この内容は、Azure Resource Manager Azure Virtual Desktop オブジェクトを含む Azure Virtual Desktop に適用されます。 Azure Resource Manager オブジェクトを含まない Azure Virtual Desktop (クラシック) を使用している場合は、こちらの記事を参照してください。
Azure Virtual Desktop は、アプリのパフォーマンスとスケーラビリティを向上させるために、GPU アクセラレーションを使用したレンダリングとエンコードをサポートしています。 GPU アクセラレーションは、グラフィックスを集中的に使用するアプリにとって特に重要であり、次のオペレーティング システムでサポートされています。
- Windows 10 バージョン 1511 以降
- Windows Server 2016 以降
注意
Windows のマルチセッション バージョンは特に記載されていませんが、NV シリーズの Azure 仮想マシンの各 GPU には、25 人の同時ユーザーをサポートする GRID ライセンスが付属しています。 詳細については、「NV シリーズ」を参照してください。
この記事で説明するようにして、GPU で最適化された Azure 仮想マシンを作成し、それをホスト プールに追加して、レンダリングとエンコードに GPU アクセラレーションを使うように構成します。 この記事では、ホスト プールとアプリケーション グループが既に作成されていることを前提としています。
GPU で最適化する Azure 仮想マシンの適切なサイズを選択する
セッション ホストとして使用する Azure の NV シリーズ、NVv3 シリーズ、NVv4 シリーズ、NVadsA10 v5 シリーズ、または NCasT4_v3 シリーズの VM サイズのいずれかを選びます。 これらは、アプリとデスクトップの仮想化に合わせて調整され、ほとんどのアプリと Windows ユーザー インターフェイスで GPU アクセラレーションを有効にすることができます。 実際のホスト プールに適した選択は、特定のアプリ ワークロード、ユーザー エクスペリエンスの望ましい品質、コストなど、さまざまなの要因に依存します。 一般に、GPU が大きくて高機能であるほど、特定のユーザー密度でのユーザー エクスペリエンスは向上しますが、GPU サイズが小さく、分割されている場合は、コストと品質をよりきめ細やかに制御することができます。 NV シリーズの VM は提供終了が予定されていることに注意してください。 詳細については、NV の提供終了に関する記事を参照してください。
注意
Azure の NC、NCv2、NCv3、ND、NDv2 シリーズの VM は通常、Azure Virtual Desktop のセッション ホストには適していません。 これらの VM は、NVIDIA CUDA を使用して構築されたものなど、特殊な高パフォーマンスのコンピューティング ツールまたは機械学習ツール向けに設計されています。 ほとんどのアプリまたは Windows ユーザー インターフェイスでは、GPU アクセラレーションはサポートされていません。
サポートされているグラフィック ドライバーを仮想マシンにインストールする
Azure Virtual Desktop 内で Azure N シリーズ VM の GPU 機能を利用するには、適切なグラフィック ドライバーをインストールする必要があります。 「サポートされているオペレーティング システムとドライバー」の手順に従って、ドライバーをインストールします。 サポートされているのは、Azure によって配布されたドライバーのみです。
- Azure NV シリーズ、NVv3 シリーズ、または NCasT4_v3 シリーズの VM の場合、NVIDIA CUDA ドライバーではなく NVIDIA GRID ドライバーでのみ、ほとんどのアプリと Windows ユーザー インターフェイスの GPU アクセラレータがサポートされます。 ドライバーを手動でインストールする場合は、必ず GRID ドライバーをインストールしてください。 Azure VM 拡張機能を使用してドライバーをインストールすることを選択した場合は、これらの VM サイズに応じて、GRID ドライバーが自動的にインストールされます。
- Azure NVv4 シリーズ VM の場合は、Azure によって提供される AMD ドライバーをインストールします。 Azure VM 拡張機能を使用して自動的にインストールすることも、手動でインストールすることもできます。
ドライバーをインストールした後は、VM を再起動する必要があります。 上記の説明の検証手順を使って、グラフィック ドライバーが正常にインストールされたことを確認します。
GPU アクセラレーションを使用するアプリ レンダリングを構成する
既定では、Windows Server で実行されるアプリとデスクトップは CPU でレンダリングされ、使用可能な GPU はレンダリングに利用されません。 セッション ホストのグループ ポリシーを構成して、GPU アクセラレーションを使用するレンダリングを有効にします。
- ローカル管理者特権を持つアカウントを使って、VM のデスクトップに接続します。
- [スタート] メニューを開き、「gpedit.msc」と入力して、グループ ポリシー エディターを開きます。
- ツリーで、 [コンピューターの構成]>[管理用テンプレート]>[Windows コンポーネント]>[リモート デスクトップ サービス]>[リモート デスクトップ セッション ホスト]>[リモート セッション環境] に移動します。
- ポリシー [Use hardware graphics adapters for all Remote Desktop Services sessions] (すべてのリモート デスクトップ サービス セッションにハードウェアのグラフィックス アダプターを使用する) を選択し、このポリシーを [有効] に設定して、リモート セッションでの GPU レンダリングを有効にします。
GPU アクセラレーションを使用するフレーム エンコードを構成する
リモート デスクトップでは、リモート デスクトップ クライアントへの送信用にアプリとデスクトップでレンダリングされるすべてのグラフィックスが (GPU または CPU のどちらでレンダリングされるかに関係なく) エンコードされます。 画面の一部が頻繁に更新される場合、画面のこの部分はビデオ コーデック (H.264/AVC) を使用してエンコードされます。 既定では、リモート デスクトップによるこのエンコードに、使用可能な GPU は利用されません。 セッション ホストのグループ ポリシーを構成して、GPU アクセラレーションを使用するフレーム エンコードを有効にします。 上記の手順に続けて次のようにします。
注意
GPU アクセラレーションを使用するフレーム エンコードは、NVv4 シリーズの VM では使用できません。
ポリシー [リモート デスクトップ接続用に H.264/AVC ハードウェア エンコードを構成する] を選択し、このポリシーを [有効] に設定して、リモート セッションで AVC/H.264 に対するハードウェア エンコードを有効にします。
注意
Windows Server 2016 では、 [AVC ハードウェア エンコードを優先] オプションを [常に試行] に設定します。
グループ ポリシーを編集したので、強制的にグループ ポリシーを更新します。 コマンド プロンプトを開き、次のように入力します。
gpupdate.exe /force
リモート デスクトップ セッションからサインアウトします。
全画面表示のビデオ エンコードを構成する
注意
GPU が存在しない場合でも、全画面ビデオ エンコードを有効にできます。
3D モデリング、CAD/CAM、ビデオ アプリケーションなどの高フレーム レートのコンテンツを生成するアプリケーションを頻繁に使用する場合は、リモート セッションに対して全画面表示のビデオ エンコードを有効にすることを選択できます。 全画面表示のビデオ プロファイルでは、ネットワーク帯域幅と、セッション ホストとクライアント リソースの両方を犠牲にして、このようなアプリケーション用の高フレーム レートとより良いユーザー エクスペリエンスが提供されます。 全画面表示のビデオ エンコードには、GPU アクセラレーションを使用するフレーム エンコードの使用をお勧めします。 全画面表示のビデオ エンコードを有効にするセッション ホストのグループ ポリシーを構成します。 上記の手順に続けて次のようにします。
ポリシー [リモート デスクトップ接続で H.264/AVC 444 グラフィック モードを優先する] を選択し、このポリシーを [有効] に設定して、リモート セッションで H.264/AVC 444 コーデックを強制的に行います。
グループ ポリシーを編集したので、強制的にグループ ポリシーを更新します。 コマンド プロンプトを開き、次のように入力します。
gpupdate.exe /force
リモート デスクトップ セッションからサインアウトします。
GPU アクセラレーションを使用するアプリ レンダリングを検証する
アプリでレンダリングに GPU が使われていることを確認するには、次のいずれかを試します。
- NVIDIA GPU を搭載した Azure VM の場合は、「ドライバーのインストールの確認」の説明に従って
nvidia-smi
ユーティリティを使用して、アプリ実行時の GPU 使用率を確認します。 - サポートされているオペレーティング システムのバージョンでは、タスク マネージャーを使って GPU の利用を確認できます。 [パフォーマンス] タブで GPU を選択し、アプリで GPU が利用されているかどうかを確認します。
GPU アクセラレーションを使用するフレーム エンコードを検証する
リモート デスクトップで GPU アクセラレーションを使用するエンコードが使われていることを検証するには:
- Azure Virtual Desktop クライアントを使って VM のデスクトップに接続します。
- イベント ビューアーを起動し、次のノードに移動します。 [アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[RemoteDesktopServices RdpCoreCDV]>[Operational]
- GPU アクセラレーションを使用するエンコードが使われているかどうかを確認するには、イベント ID 170 を探します。 [AVC ハードウェア エンコーダーが有効になりました: 1] と表示される場合は、GPU エンコードが使われています。
ヒント
GPU アクセラレーションをテストするために Azure Virtual Desktop の外部のセッション ホストに接続している場合、ログは代わりに、イベント ビューアーの [アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[RemoteDesktopServices-RdpCoreTs]>[Operational] に保存されます。
全画面表示のビデオ エンコードを確認する
リモート デスクトップで全画面表示のビデオ エンコードが使用されていることを検証するには:
- Azure Virtual Desktop クライアントを使って VM のデスクトップに接続します。
- イベント ビューアーを起動し、次のノードに移動します。 [アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[RemoteDesktopServices RdpCoreCDV]>[Operational]
- 全画面表示のビデオ エンコードが使用されているかどうかを確認するには、イベント ID 162 を探します。 [AVC 対応: 1、初期プロファイル: 2048] と表示される場合は、AVC 444 が使われています。
ヒント
GPU アクセラレーションをテストするために Azure Virtual Desktop の外部のセッション ホストに接続している場合、ログは代わりに、イベント ビューアーの [アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[RemoteDesktopServices-RdpCoreTs]>[Operational] に保存されます。
次のステップ
これらの手順により、1 つのセッション ホスト (1 つの VM) で GPU アクセラレーションが稼働状態になるはずです。 さらに大きなホスト プールで GPU アクセラレーションを有効にするには、いくつか追加の考慮事項があります。
- 多数の VM でのドライバーのインストールと更新を簡素化するには、VM 拡張機能を使用することを検討してください。 NVIDIA GPU が搭載された VM には NVIDIA GPU ドライバー拡張機能を使用し、AMD GPU が搭載された VM には AMD GPU ドライバー拡張機能を使用します。
- 多数の VM でのグループ ポリシーの構成を簡素化するには、Active Directory グループ ポリシーを使うことを検討します。 Active Directory ドメインでのグループ ポリシーのデプロイについては、「Working with Group Policy Objects (グループ ポリシー オブジェクトの操作)」をご覧ください。