-
Hyper-V GPU パストスルーとは?
-
Hyper-V GPU パストスルーの前提条件
-
Windows ServerでDDAを使用してGPUパススルーを有効にする方法
-
Windows 10/11のホストでGPU-Pを使用してGPUパススルーを有効にする方法
-
信頼性の高いHyper-V GPUパススルー導入のベストプラクティス
-
Hyper-V GPUパススルーのよくある問題のトラブルシューティング
-
Vinchin バックアップとリカバリーでHyper-Vの仮想マシンを保護
-
Hyper-V GPU パストゥルーのFAQ
-
結論
Hyper-V GPUパススルーは、組織が要求の高いワークロードを Hyper-V 仮想環境で実行する方法を変えています。VMに物理GPUに直接アクセスさせたり、効率的に共有させたりすることで、AIトレーニングや3Dレンダリングといった新しいユースケースを可能にします。しかも、Hyper-Vインフラストラクチャの利便性を損なうことなく実現できます。しかし、これは一体どのように動作するのでしょうか?また、どのような落とし穴があるのでしょうか?ここでは、Hyper-V GPUパススルーについての基礎知識から高度な展開方法まで、必要な情報をすべて解説します。
Hyper-V GPU パストスルーとは?
Hyper-V GPU パストスルーは、ホストサーバーに接続された物理的なGPUを仮想マシンに直接割り当てることを可能にし、仮想マシンがエミュレートされたグラフィックではなく実際のGPU性能を使用できるようにします。これは、機械学習、CADモデリング、ビデオエンコーディング、または科学技術計算といったリソースを多く使用するタスクにおいて重要です。
Hyper-V GPU パストスルーの前提条件
Hyper-V GPU パストスルーを設定する前に、ハードウェアおよびソフトウェアの要件を注意深く確認してください。たとえ1つの詳細を欠いても、イライラするようなエラーが発生する可能性があります。
ハードウェア/ソフトウェア検証チェックリスト
個別デバイス割り当て(DDA)の場合:
OS: Hyper-Vロールが有効なWindows Server 2016以降のバージョン
GPU: 対応PCIe GPU(例: NVIDIA Tesla、Quadro、AMD Radeon Pro/FirePro)
VMの種類: ジェネレーション 2 VM のみ
設定: 動的メモリおよびチェックポイントは無効です
GPU使用状況: 対象のGPUはホストまたは他の仮想マシンによって使用されていない必要があります
ファームウェア: BIOSで“4G以上デコード”が有効なUEFI
オプション: SR-IOV サポート(一部のGPUで推奨)
GPUパーティショニング(GPU-P)の場合:
OS:Windows 10/11 Pro または Enterprise(ビルド 1903+)
GPU: パーティショニング機能をサポートする最新のGPU
VM の種類: ジェネレーション 2 VM のみ
PowerShell: ドライバーのインジェクションに必要
オプション: パフォーマンス向上のため、BIOSでResizable BARを有効にしてください
セキュリティ: 問題が発生した場合は、仮想化ベースのセキュリティ機能(例:コア分離)を無効にします
注意:WSL2 を Hyper-V および GPU-P が有効な VM と共に使用すると、WSL2 が特定の GPU への排他アクセスを要求するため、リソースの競合が発生する可能性があります。
Windows ServerでDDAを使用してGPUパススルーを有効にする方法
ディスクリートデバイス割り当て(DDA)は、1台の物理的なグラフィックカードを1つの仮想マシンだけに専用に割り当て、生のパフォーマンスを得たい場合に最適です。例えば、ディープラーニング用サーバーやハイエンドのレンダリングノードなどが該当します。
段階的なセットアップ:
まず最初に: ハードウェア割り当てを含む構成変更を行う前に、ターゲットVMの電源をオフにしてください。
1. 自動チェックポイントと動的メモリを無効にする:
これらはオフにする必要があり、ダイレクトデバイスマッピングに干渉するものを何も許可しません。
Set-VM -Name <VMName> -AutomaticStopAction TurnOff Set-VM -Name <VMName> -DynamicMemoryEnabled $false
2. メモリマップドI/O領域の確保:
ゲストOSがカードによって公開されるすべてのVRAM/ファームウェア領域を認識できるように、十分なアドレス空間を確保しておく必要があります。
Set-VM -Name <VMName> -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 3072 -HighMemoryMappedIoSpace 33280
値の単位はメガバイトです。ここでは、約3GBのローMMIO領域と約32GBのハイMMIO領域を確保しています。
3. 物理GPUの位置パスを確認する:
「デバイスマネージャー」を開き、次に「ディスプレイ アダプター」を展開します。目的のグラフィックカードを右クリックし、「プロパティ」を選択します。「詳細」タブに移動し、プロパティのドロップダウンから「場所のパス」を選択し、次に「PCIROOT...」で始まる値をコピーします。
またはPowerShell経由で:
Get-PnpDevice | Where {$_.Class -eq "Display"} | Select Name,InstanceId“Display” の下に何も表示されない場合は、ベンダー名で検索してみてください (Where {$_.FriendlyName -like 'NVIDIA'})。
4. ホストからデバイスを取り外す:
このコマンドを使用してください—–force を使用すると、ホスト制御から即座に削除されることに注意してください! これは、統合グラフィックスでコンソール出力が可能なヘッドレスサーバーではなく、デスクトップシステムの主要なディスプレイアダプターである場合、ローカルディスプレイを失う可能性があります。
Dismount-VmHostAssignableDevice -LocationPath "<YourLocationPath>" -force
デバイスをアンマウントできない場合は、まずデバイスマネージャー内で一時的に無効にする必要があります。
5. ターゲットVMにデバイスを直接割り当て:
Add-VMAssignableDevice -VMName <VMName> -LocationPath "<YourLocationPath>"
6. 仮想マシンの起動とドライバーのインストール:
ゲストOSを起動します。次に表示アダプターのデバイスマネージャーを開くと、「Microsoft Hyper-V ビデオ」と、実際に使用する専用グラフィックカードの2つが表示されています。必要に応じて、ゲストOSに合った最新のドライバー(NVIDIA、AMDなど)をインストールしてください。ホスト側のドライバーではありません!
7. 後でカードを削除/再取得:
ゲストからホストプールに戻すには:
Remove-VMAssignableDevice -VMName <VMName> -LocationPath "<YourLocationPath>" Mount-VMHostAssignableDevice -LocationPath "<YourLocationPath>"
成功の確認
セットアップが完了し、ゲストのデバイスマネージャー内でエラーアイコンが表示されずにドライバーがロードされた後、または簡易なベンチマークアプリを実行した後であれば準備完了です!ここではアプリコードとハードウェアの間に仮想化オーバーヘッドがないため、ほぼ金属に近い速度が期待できます。
Windows 10/11のホストでGPU-Pを使用してGPUパススルーを有効にする方法
最大速度よりも柔軟性が重要である場合(たとえば、複数のユーザーが同時にそれぞれ中程度のアクセラレーションを必要とする場合など)、Microsoftが新たに導入したGPUパーティショニング(GPU-P)を通じて、一つの大きなGPUカードを多数の小さなジョブに分割して割り当てることを検討してください。
段階的なセットアップ
1. カードがパーティショニングをサポートしていることを確認してください:
最近のWindowsビルドでは:
Get-VMPartitionableGpu # Win10以上 Get-VMHostPartitionableGpu # Win11以上
結果に互換性のあるデバイスが表示されている場合は、問題ありません!
2. ターゲットVMにGpuPartitionアダプターを追加:
続行する前にターゲットVMがシャットダウンしていることを確認してください!
Add‑VMGpuPartitionAdapter ‑VMName <VMName>
3. スクリプトを使用してホスト ドライバーをゲストにコピー:
人気のスクリプトEasy-GPU-PVはドライバのインジェクションを自動化します(GitHubプロジェクトリンクは要請により提供)。ホストシステムにダウンロード/解凍してから、以下を実行します:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force .\Update-VMGpuPartitionDriver.ps1 -VMName
これは起動後にアプリケーションが正しく割り当てられたvGPUパーティションを認識できるように、現在動作しているドライバーをゲストイメージにコピーします。公式インストーラーが仮想環境内でのインストールをブロックしていても動作します。
4. ゲストアクセス用に十分なMMIO領域を確保する:
再度確認しますが、以下に示す数値はギガバイトではなくメガバイトです!
Set-VM -Vmname <Vmname> -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1024 -HighMemoryMappedIoSpace 32768
大容量メモリカード(>24GB VRAM)を使用する場合は、値をより高く調整してください。
5. (オプション) パーティションごとにリソース配分を微調整する (Windows 11のみ):
アダプター インスタンスごとに最小/最大のVRAMを設定できます:
Set-VMGpuPartitionAdapter –Vmname <Vmname> –MinPartitionVRAMBytes <min_bytes> –MaxPartitionVRAMBytes <max_bytes>
例: パーティションごとに約800MB~1GBを割り当て、ワークロードの必要に応じて調整。
6. (重要)WSLまたは他のサービスとの競合を避けてください:
WSL2が同時にインストール/実行されている場合、同じ基盤ハードウェアに対して排他的ロックを取得する可能性があり、ゲスト内の起動や割り当て試行中にエラーが発生する原因となることがあります。問題が継続する場合はWSLを一時的に無効にしてください(Microsoftのガイドラインを参照)。
成功の確認
ターゲットのゲストOSを起動します。表示アダプターの下で自身のデバイスマネージャーを開くと、「仮想レンダーデバイス」などとラベル付けされた新規エントリーが、既定のビデオ出力と共に表示されるはずです。Blender CyclesレンダラーやTensorFlowのトレーニングジョブなどのテストアプリを実行してください。これらのアプリはそれぞれのAPIを通じてマッピングされた利用可能なCUDA/OpenCLリソースを報告します。
信頼性の高いHyper-V GPUパススルー導入のベストプラクティス
Hyper-V GPUパススルーをスムーズに導入するためには、以下のベストプラクティスに従ってください:
可能であれば、HOST と GUEST のドライバーを常に一緒に更新してください。
密集ラックマウントシャーシでは、温度とファン速度を監視してください。
本番環境のサーバーでは、コンソール/KMS の作業専用に、少なくとも 1 つのオンボード/統合型アダプターを割り当ててください。
ベンダーが明示的に仮想化機能をサポートしている場合を除き、コンシューマー向けゲーミングカードとデータセンターのワークロードを混在させないようにしてください。
より良いUEFIサポートと改良された分離・セキュリティ境界を実現するため、Generation Two VMsのみを使用してください。
最初の導入前に、BIOS/ファームウェアのメニューでSR-IOVおよびAbove4GDecodingオプションを有効にします。
Hyper-V GPUパススルーのよくある問題のトラブルシューティング
ベテランの管理者でさえ問題に直面します!以下はよくある問題とその解決策です:
ドライバインストール後のゲストOSでのCode43エラー:これは通常、間違ったドライババージョンまたは他のプロセスの残り物のロックを示しています。標準のインストーラーを介さずに、ゲスト内に正しいドライバパッケージをアンインストール/再インストールしてください。
"起動に失敗" またはブート時のブラック画面: ライフサイクル全体を通して動的メモリ/チェックポイントがOFFになっていることを確認し、クラスタノード間で同一のPCIeデバイスIDに対するロックを他のプロセスが保持していないことを確認してください。
割り当て成功後のパフォーマンス低下: CPU/RAMのボトルネックを確認し、ストレージ/ネットワークサブシステム間の十分な帯域幅を確保してください。
WSL/GPUリソースの競合: WSL2 を使用している場合、VMまたはコンテナーでGPU負荷の高いジョブを実行する際には、一時的にそれを無効にしてください。
Vinchin バックアップとリカバリーでHyper-Vの仮想マシンを保護
Hyper-VでGPUパススルーを設定し、Hyper-V環境上で重要なワークロードを実行している場合、これらの資産をデータ損失やダウンタイムのリスクから保護することが不可欠です。その役割を果たすのがVinchin Backup & Recoveryです。これは、貴社のような仮想インフラストラクチャ向けに設計された企業レベルのバックアップソリューションです。
Vinchinは、VMware、Proxmox VE、oVirt、OLVM、RHV、XCP-ng、XenServer、OpenStack、ZStackを含む15以上の主要プラットフォームにまたがる仮想マシン向けに設計された、専門のバックアップおよびディザスタリカバリソリューションを専門としています。今日ご紹介する中でも特に、Microsoft Hyper-V環境への強力なサポートが特長です。
標準構成やパストスルーなどの高度な構成を問わず、Vinchin を使用すれば、効率的なバックアップ戦略、V2Vマイグレーション、柔軟な復元オプションにより、仮想マシンを保護できます。このソリューションは、自動スケジューリング、リテンションポリシー、使いやすいWebコンソールを提供します。
Vinchin Backup & Recoveryの操作は非常に簡単で、わずか数ステップだけで完了します。
1.ホスト上でHyper-V VMを選択するだけ

2. バックアップ先を選択します

3.戦略を選択

4.ジョブを最終的に送信する

Vinchinは、高度なパストスルー構成を含む、仮想マシンへの包括的な保護を提供します。世界中の数千の組織から信頼されているVinchinは、完全な機能を備えた60日間の無料トライアルを提供しており、投資の前にすべての機能をリスクフリーで試すことができます。
Hyper-V GPU パストゥルーのFAQ
Q1: WindowsのホームエディションでHyper-V GPUパストゥルーは使えますか?
A1:いいえ。Pro、Enterprise、またはEducationエディションが必要です。Homeエディションは必要な仮想化機能をサポートしていません。
Q2 : ホストをアップグレードした後、パススルー ドライバを更新するにはどうすればよいですか?
A2: 更新されたドライバースタックを対象に再度Easy-GPU-PVスクリプトを再実行し、その後影響を受けるゲストを再起動してください。
結論
Hyper‑V パススルーは要求の高いワークロードに可能性を開きますが、ハードウェアの互換性、ドライバー管理、および継続的な監視に関する慎重な計画が必要です。Vinchinを使用すれば、あらゆる重要なワークロードが複雑さに関係なく保護されることを安心して知ることができます。ぜひ無料トライアルをお試しください!
共有: