本文へスキップ

GPUパススルーとは何ですか?

GPUパススルー

GPUパススルーとは、物理的なグラフィックス ユニット(GPU)を単一の仮想マシン(VM)に直接割り当てることを可能にする仮想化技術です。これにより、VMはあたかもベアメタルハードウェア上で動作しているかのように、GPUの全機能を利用できるようになります。GPUパススルーはハイパーバイザーの抽象化レイヤーをバイパスし、グラフィックス計算負荷の高いワークロードに対して、ネイティブに近いパフォーマンスを提供します。

この機能は、仮想デスクトップインフラストラクチャ(VDI)、人工知能(AI)、機械学習(ML)、ハイパフォーマンス (HPC)など、最適なパフォーマンスを得るためにGPUアクセラレーションが必要なユースケースにおいて極めて重要です。共有またはエミュレートされたGPUリソースとは異なり、パススルーではGPU全体を1つのVMに専有させるため、最大のスループットと最小限のレイテンシを実現します。

GPUパススルーは、KVM(Kernel-based Virtual Machine)、VMware ESXi、Citrix Hypervisorなどの仮想化プラットフォームを用いて実装されることが一般的であり、多くの場合、最新の中央処理装置(CPU)やマザーボードに搭載されているIOMMU(Input-Outputメモリー Unit)技術と組み合わせて利用されます。

GPUパススルーの仕組みについて

GPUパススルーは、ハードウェアおよびソフトウェアレベルの仮想化サポート、具体的にはIOMMU技術を用いたPCI Express(PCIe)デバイスのパススルーを組み合わせることで実現されます。これにより、物理GPUをホストシステムの制御をバイパスしてゲストVMに直接マッピングすることができ、VMがGPUに対して直接かつ低遅延でアクセスできるようになります。

ハードウェア構成

GPUパススルーを機能させるには、サーバーがIOMMU(Input-Outputメモリー Unit)に対応している必要があります。IOMMUは、PCIe デバイスの分離とメモリー 再マッピングを可能にする機能です。Intelプラットフォームでは、この機能はIntel VT-dと呼ばれ、AMD AMDと呼ばれます。いずれも、CPU、マザーボードのチップセット、およびファームウェアによってサポートされている必要があります。

IOMMUを有効にするには、システムBIOSまたはUEFIの設定で有効にする必要があります。通常、これには仮想化拡張機能(AMD)を有効にし、プラットフォームが対応PCIe (アクセス制御サービス)が有効になっていることを確認することが含まれます。また、完全なパススルー機能を利用するために、Secure BootやFast Bootなどの機能を無効にする必要があるシステムもあります。

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

GPUが仮想マシンに割り当てられた後、ゲストオペレーティングシステム(OS)には、NVIDIAなどのベンダー固有の適切なドライバーをインストールする必要があります。 AMDまたはIntelのGPUドライバなど、適切なベンダー固有のドライバと共にゲストOSをインストールする必要があります。これらのドライバにより、ゲストOSは物理GPUの全機能を認識し、活用できるようになります。これには、3Dアクセラレーション、並列計算用のCUDAコア、およびハードウェアアクセラレーションされたレンダリングパイプラインなどが含まれます。

場合によっては、ドライバ間の競合を防ぐため、ゲスト環境内でハイパーバイザーレベルのグラフィックス 無効にし、パススルーGPUのみが利用されるようにする必要がある場合があります。

ハイパーバイザーの設定

IOMMUが有効になったら、次のPCIe ハイパーバイザーを設定することです。一般的な選択肢としては、KVM/QEMU、VMware ESXi、Citrix Hypervisor(旧XenServer)などが挙げられます。これらのプラットフォームは、低レベルの仮想化ドライバーやAPIを利用して、PCIe 直接PCIe を実現しています。

例えば、KVM環境では、デバイスパススルーはvfio-pciカーネルモジュールを使用して設定され、これにより安全かつ分離されたデバイスアクセスが保証されます。VMware ESXiはDirectPath I/Oを利用し、GPUを仮想マシンに直接公開します。これにより、仮想化オーバーヘッドを最小限に抑えながら、ネイティブに近いパフォーマンスを実現します。

デバイスバインディング

GPUパススルーにおける重要な手順は、ホストシステムからGPUを切り離し、VMにバインドすることです。これを行うには、PCIe デフォルトのホストドライバから解除し、vfio-pciなどのパススルードライバにバインドします。

バインドされると、ホストOSからはGPUに一切アクセスできなくなり、割り当てられたVMのみがGPUを使用できるようになります。これにより競合が防止され、GPUへの排他的なアクセスが保証されます。これは、リアルタイムレンダリング、シミュレーション、ディープラーニングモデルのトレーニングなど、レイテンシに敏感なワークロードにとって不可欠な要件です。

GPUパススルーの利点と課題

GPUパススルーにより、仮想マシンは物理GPUに直接アクセスできるようになり、ハイパーバイザーの抽象化レイヤーをバイパスすることで、ネイティブに近いパフォーマンスを実現します。これにより、トレーニング、CAD(コンピュータ支援設計)のレンダリング、リアルタイムシミュレーションなど、計算負荷の高いワークロードに最適です。また、仮想マシンに専用GPUを割り当てることで、分離性とパフォーマンスの一貫性も向上し、これは本番環境において不可欠な要素となります。

パストルーは、単なるパフォーマンス向上にとどまらず、仮想デスクトップ、リモートワークステーション、コンテナ化されたアプリケーションにおけるGPUアクセラレーションを可能にすることで、仮想化機能を拡張します。これにより、企業は物理サーバーの台数を減らしつつ、仮想マシンごとの高いパフォーマンスを維持したワークロードの統合を実現でき、ハードウェアの活用率向上と運用効率の改善につながります。

しかし、GPUパススルーには技術的な課題があります。これには、CPUおよびマザーボードレベルでのIOMMUサポート、適切なBIOSまたはUEFIの設定、そしてパススルーに対応したGPUが必要です。多くの一般向けGPUは完全な仮想化機能をサポートしていないため、ゲストOS内での互換性の制限やドライバの問題が生じる可能性があります。

設定の複雑さもまた要因の一つであり、カーネルの変更、正確なデバイスバインディング、ハイパーバイザーレベルの調整が必要となることが多々あります。トラブルシューティングには時間がかかることが多く、特にヘッドレスサーバーでは顕著です。また、パススルーGPUのホットプラグサポートが限定的または利用できないため、変更には通常再起動が必要となります。

GPUパススルーのハードウェア要件

GPUパススルーを実装するには、IntelAMDOMMU仮想化機能をサポートするサーバーハードウェアに加え、適切なBIOSまたはUEFIの設定が必要です。CPU、マザーボードのチップセット、およびファームウェアはすべて互換性がある必要があり、GPUはパススルー機能をサポートしている必要があります。この機能は、通常、NVIDIAAMD MIシリーズなどのエンタープライズクラスのグラフィックカードに搭載されています。

さらに、システムにはフルサイズGPUをサポートするのに十分なPCIe 電力供給能力が備わっている必要があります。適切に管理されたデータセンター環境において効率的なパススルー構成を実現するには、高密度GPUワークロード向けに最適化されたサーバープラットフォームが必要です。こうしたプラットフォームは、通常、高度なPCIe 、堅牢な冷却アーキテクチャ、およびファームウェアレベルのパススルーサポートを備えています。

よくあるご質問

  1. GPUパススルーを有効にするにはどうすればよいですか?
    GPUパススルーを有効にするには、システムBIOSまたはUEFIでIOMMUサポート(AMD)を有効にし、その後、ハイパーバイザー(KVMやVMware ESXiなど)を設定して、GPUを仮想マシンに直接割り当てる必要があります。また、ホストドライバーからGPUのバインドを解除し、ゲストVMに適切なGPUドライバーをインストールする必要があります。
  2. GPUパススルーには2つのGPUが必要ですか?
    厳密には必須ではありませんが、2つのGPUの使用が推奨されます。1つはホストシステム専用に、もう1つは仮想マシン専用に割り当てるべきです。これにより、パススルーGPUが仮想マシンに完全に分離されている間も、ホストシステムはディスプレイ出力とシステム安定性を維持できます。
  3. GPUパススルーはコンテナ環境で動作しますか?
    はい、GPUパススルーは、直接GPUアクセス権を持つ仮想マシン内で設定されている場合、コンテナ環境でもご利用いただけます。あるいは、NVIDIA DockerやGPUオペレーターフレームワークといったコンテナ専用のソリューションにより、Kubernetes環境内でのGPUアクセスを実現することも可能です。