GPUパススルーとは何ですか?
GPUパススルーは、物理的なグラフィックスユニット(GPU)を単一の仮想マシン(VM)に直接割り当てることができる仮想化技術です。これにより、VMはベアメタルハードウェア上で実行されているかのようにGPUの全機能にアクセスできます。GPUパススルーはハイパーバイザの抽象化レイヤーをバイパスし、ネイティブに近いパフォーマンスを提供します。グラフィックス-集中的なワークロードまたは計算負荷の高いワークロード。
この機能は、仮想デスクトップインフラストラクチャ(VDI)、人工知能(AI)、機械学習(ML)、ハイパフォーマンスコンピューティング(HPC)など、最適なパフォーマンスを実現するためにGPUアクセラレーションが必要なユースケースにおいて非常に重要です。共有またはエミュレートされたGPUリソースとは異なり、パススルーはGPU全体を1つのVMに割り当てるため、最大のスループットと最小限のレイテンシを実現します。
GPUパススルーは、KVM(カーネルベース仮想マシン)、VMware ESXi、Citrix Hypervisorなどの仮想化プラットフォームを使用して一般的に実装され、多くの場合IOMMU(入出力マルチレベルメモリ)と組み合わせて使用されます。メモリー 管理ユニット)技術は、最新の中央処理装置(CPU)やマザーボードで利用可能です。
GPUパススルーの仕組み
GPU パススルーは、ハードウェアとソフトウェアレベルの仮想化サポート、具体的には PCI Express ( PCIe IOMMUテクノロジーを使用したデバイスパススルー。これにより、物理GPUをゲストVMに直接マッピングすることができ、ホストシステムの制御をバイパスして、VMがGPUに直接かつ低遅延でアクセスできるようになります。
ハードウェア構成
GPU パススルーが機能するには、サーバーが IOMMU (Input-Output) をサポートしている必要があります。メモリー デバイスの分離と管理ユニットを可能にするメモリー アドレス再マッピングPCIe デバイス。Intel プラットフォームでは、この機能は Intel VT-d として知られています。 AMD システムでは、 AMD -Vi. 両方とも、CPU、マザーボードのチップセット、およびファームウェアによってサポートされている必要があります。
IOMMU を有効にするには、システム BIOS または UEFI 設定で有効にする必要があります。通常、これには仮想化拡張機能 (VT-d または UEFI) を有効にすることが含まれます。 AMD -Vi) を確実にし、 PCIe プラットフォームがACS(アクセス制御サービス)をサポートしている場合、ACSは有効になります。システムによっては、完全なパススルー機能を利用するために、セキュアブートやファストブートなどの機能を無効にする必要がある場合もあります。
ドライバーのインストール
GPUが仮想マシンに割り当てられた後、ゲストOSにはNVIDIA 、 AMD 、 Intelなどのベンダー固有の適切なGPUドライバをインストールする必要があります。これらのドライバにより、ゲストOSは3Dアクセラレーション、並列処理用のCUDAコア、ハードウェアアクセラレーションによるレンダリングパイプラインなど、物理GPUのすべての機能を認識して利用できるようになります。
場合によっては、ハイパーバイザーレベルグラフィックス ドライバの競合を防ぎ、パススルーGPUのみが使用されるようにするために、ゲストOS内でインターフェースを無効にする必要がある場合があります。
ハイパーバイザーの設定
IOMMUがアクティブになったら、次のステップは、それをサポートするハイパーバイザーを構成することです。 PCIe パススルー。一般的な選択肢としては、KVM/QEMU、VMware ESXi、Citrix Hypervisor(旧XenServer)などがあります。これらのプラットフォームは、低レベルの仮想化ドライバとAPIを使用して直接パススルーを実現します。 PCIe ゲストVMへのデバイス割り当て。
例えば、KVM環境では、vfio-pciカーネルモジュールを使用してデバイスパススルーが設定され、安全かつ隔離されたデバイスアクセスが保証されます。VMware ESXiはDirectPath I/Oを使用してGPUをVMに直接公開することで、仮想化のオーバーヘッドを最小限に抑えつつ、ネイティブに近いパフォーマンスを実現します。
デバイスバインディング
GPU パススルーの重要なステップは、GPU をホスト システムから切り離し、VM にバインドすることです。これは、GPU のバインドを解除することによって行われます。 PCIe デフォルトのホストドライバからアドレスを取得し、vfio-pciなどのパススルードライバにバインドします。
バインドされると、GPUはホストOSから完全にアクセスできなくなり、割り当てられたVMのみが使用できるようになります。これにより競合が防止され、排他的なGPUアクセスが保証されます。これは、リアルタイムレンダリング、シミュレーション、ディープラーニングモデルなどのレイテンシに敏感なワークロードにとって不可欠です。トレーニング。
GPUパススルーの利点と課題
GPUパススルーにより、仮想マシンは物理GPUに直接アクセスできるようになり、ハイパーバイザの抽象化レイヤーをバイパスすることでネイティブに近いパフォーマンスを実現します。そのため、AIなどの計算負荷の高いワークロードに最適です。トレーニングコンピュータ支援設計(CAD)レンダリングやリアルタイムシミュレーションなどにも利用できます。VMに専用のGPUを割り当てることで、分離性とパフォーマンスの一貫性が向上し、これは本番環境で不可欠です。
パススルー機能は、単なるパフォーマンス向上にとどまらず、仮想デスクトップ、リモートワークステーション、コンテナ化されたアプリケーションにおけるGPUアクセラレーションを可能にすることで、仮想化機能を拡張します。これにより、企業は仮想マシン(VM)あたりの高いパフォーマンスを維持しながら、ワークロードをより少ない物理サーバーに集約できるため、ハードウェア利用率の向上と運用効率の改善につながります。
しかし、GPUパススルーには技術的な課題が伴います。CPUとマザーボードレベルでのIOMMUサポート、適切なBIOSまたはUEFI構成、そしてパススルーに対応したGPUが必要です。多くのコンシューマー向けGPUは完全な仮想化サポートを備えていないため、ゲストOSとの互換性が制限されたり、ドライバの問題が発生したりする可能性があります。
セットアップの複雑さも問題の一つで、カーネルの変更、正確なデバイスバインディング、ハイパーバイザーレベルのチューニングが必要となる場合が多い。特にヘッドレスサーバーではトラブルシューティングに時間がかかり、パススルーGPUのホットプラグサポートが制限されているか利用できないため、変更には通常再起動が必要となる。
GPUパススルーのハードウェア要件
GPU パススルーを実装するには、Intel VT-d や 1000 などの IOMMU 仮想化機能をサポートするサーバー ハードウェアが必要です。 AMD -Vi と適切な BIOS または UEFI 構成が必要です。CPU、マザーボードのチップセット、ファームウェアはすべて互換性があり、GPU はパススルー機能をサポートしている必要があります。これは通常、NVIDIA A100 などのエンタープライズクラスのカードに搭載されています。 AMD インスティンクトMIシリーズ。
さらに、システムは十分なPCIe フルサイズのGPUをサポートするレーンと電力供給。高密度GPUワークロード向けに最適化されたサーバープラットフォームで、通常は高度な機能を備えています。 PCIe 適切に管理されたデータセンター環境において効率的なパススルー構成を実現するには、トポロジー、堅牢な冷却アーキテクチャ、およびファームウェアレベルのパススルーサポートが必要です。
よくある質問
- GPUパススルーを有効にするにはどうすればよいですか?
GPU パススルーは、IOMMU サポート (VT-d またはAMDシステムBIOSまたはUEFIで-Vi)を実行し、ハイパーバイザー(KVMやVMware ESXiなど)を設定して、GPUを仮想マシンに直接割り当てます。また、ホストドライバからGPUのバインドを解除し、ゲストVMに適切なGPUドライバをインストールする必要があります。 - GPUパススルーには2つのGPUが必要ですか?
必須ではありませんが、GPUを2つ搭載することをお勧めします。1つはホストシステム専用、もう1つは仮想マシン専用にしてください。これにより、ホストシステムはディスプレイ出力とシステムの安定性を維持しつつ、パススルーGPUは仮想マシン専用に完全に分離されます。 - コンテナ環境でGPUパススルーは機能しますか?
はい、GPUパススルーは、GPUに直接アクセスできるVM内で構成すれば、コンテナでも使用できます。あるいは、NVIDIA DockerやGPUオペレーターフレームワークなどのコンテナ固有のソリューションを使用すれば、Kubernetes環境でGPUにアクセスできます。