StorageReview.com

Proxmox vGPU ガイド: GPU にはパススルー以上の機能が必要です

Enterprise  ◇  ソフトウェア

Proxmox Server Solutions は最近、仮想環境 (VE) ハイパーバイザー向けの NVIDIA vGPU サポートを発表しました。これにより、レンダリング、VDI、AI、およびその他のアプリケーション向けの GPU アクセラレーションのまったく新しい世界が実現します。ハイパーバイザーの新機能セットをレビューして説明し、そのパフォーマンスを評価します。ぜひご参加ください。

vGPU サポートの何がすごいのでしょうか?

NVIDIA の vGPU ソフトウェアについてご存じない方のために説明すると、このソフトウェアは GPU のコンピューティング リソースとメモリ リソースを複数の仮想マシン (VM) に分割して分散することを可能にします。この設定では、VM は GPU の処理能力を交互に使用し、必要に応じてカードのメモリの一部を割り当てます。このアプローチにより、ゲスト VM のワークロードの強度が変化しても、GPU はピーク使用率を維持できます。

Proxmox vGPU L40S インストール

始める前に…(前提条件)

Proxmox VE (PVE) で GPU 仮想化環境を構築するには、いくつかの準備が必要です。多くのデータセンター向け製品と同様に、NVIDIA の vGPU ソフトウェアは無料ではありません。仮想 GPU ソフトウェアを購入するか、評価版に登録し、NVIDIA Enterprise アカウントを作成する必要があります。次に、 vGPU 対応カードを入手し、ライセンス ポータルから適切なドライバをダウンロードする必要があります。最新バージョンの「Linux KVM」ドライバを入手してください。少なくとも、以下のドライバをダウンロードしてください。

  • vGPU ソフトウェア: 18.0
  • ホストドライバー: 570.124.03
  • Linux ゲスト ドライバー: 570.124.06
  • Windows ゲスト ドライバー: 572.60

このプロジェクトでは、NVIDIA L40S と Dell PowerEdge R760 を活用しました。

Proxmox vGPU NVIDIA GPU

さらに、ゲストOS上でvGPU機能を有効にするには、専用ライセンスサーバー(DLS)またはクラウドライセンスサーバー(CLS)が必要です。クイックスタートガイドはこちらをクリックしてください。

次に、サーバーのUEFI(BIOS)設定で適切な仮想化機能が有効になっていることを確認してください。VT -dまたはAMD-v、SR-IOV、4G以上のデコード、サイズ変更可能なバー、および代替ルーティングID解釈(ARI)の設定を探し、すべて有効になっていることを確認してください。

注: UEFIメニューにはこれらの機能がすべて表示されるとは限りません。一部の機能はユーザーに公開されていない場合があります。

最後に、適切なバージョンの Proxmox VE を使用していることを確認します。vGPU 機能には、少なくとも pve-manager バージョン 8.3.4、カーネル 6.18.12-8-pve 以降が必要です。以下に示すように、目的のサーバーの [概要] タブに移動して、PVE ノードのソフトウェア バージョンを確認できます。

Proxmox vGPU VE インターフェース 1

最も優れたホスト (Proxmox ホスト vGPU セットアップ)

これで準備はすべて整いました。次は Proxmox VE サーバーの設定です。Proxmox VE サーバーの Web インターフェイスで、画面の左側にあるサーバー名をクリックし、「シェル」タブを選択します。表示されるコンソール ウィンドウに次のコマンドを入力し、完了したら Enter キーを押します。

apt をインストール pve-nvidia-vgpu-helper

これにより、vGPU セットアップ ツールがサーバーにインストールされ、Proxmox vGPU サポートの準備が整います。サーバーがスクリプトのインストールを完了するか、すでに存在していることを通知したら、もう 1 つのコマンドを実行してツールを実行します。

pve-nvidia-vgpu-helper セットアップ

すべての質問に「Y」と答え、コンソール ウィンドウが戻ってスクリプトが終了するまで続行します。サーバーの「概要」タブに移動して「再起動」ボタンを押すか、「シェル」タブのコンソールに再起動コマンドを入力して Enter キーを押すことで、サーバーのクイック再起動を実行します。

次に、NVIDIAのvGPUホストドライバをサーバーにロードする必要があります。サーバーの再起動が完了したら、WinSCPなどのSSHまたはSCP転送ツールを使用して、ホストドライバをノードにコピーします。

注:すべてのドライバーを圧縮(.zip)フォルダーとしてまとめてダウンロードした場合は、まずその内容を解凍し、「Host_Drivers」フォルダーから「.run」ファイルを選択する必要がある場合があります。

ファイルをサーバーの「/home」ディレクトリに配置し、次のコマンドでインストーラーを実行する準備をします。

cd /home chown root NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run chmod +X NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run ./NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run --dkms

注:「NVIDIA-Linux-x86_64-570.124.03-vgpu-kvm.run」を、ダウンロードしたドライバの実際のファイル名に置き換えてください。「/home」ディレクトリにファイルを配置した後、「ls」コマンドを使用してファイル名を表示できます。

ドライバーがサーバーにインストールされたので、Proxmox vGPU 構成のホスト側が完了するまであと数ステップです。仮想マシン間で分割できるデバイスとして GPU をマークする前に、シングル ルート I/O 仮想化 (SR-IOV) を有効にする必要があります。 NVIDIAはこの機能を定義している 「…物理 PCIe デバイスが PCIe バスを介して複数回存在できるようにするテクノロジ。このテクノロジにより、個別のリソースを持つデバイスの複数の仮想インスタンスが可能になります。」SR-IOV は、最新の GPU の基本的な vGPU 機能に必要な重要なテクノロジであるため、次のコマンドを使用して起動時にオンになるように設定します。

systemctl enable --now pve-nvidia-sriov@ALL.service

最後に、GPU のリソースをマッピングして、VM 間できれいに分割することができます。Proxmox VE サーバーの Web インターフェイスで、左上隅の「データセンター」をクリックし、下にスクロールして「リソース マッピング」タブを選択します。

ページの「PCI デバイス」セクションの下にある「追加」ボタンをクリックし、次のウィンドウの「名前:」フィールドに、マッピングする GPU を表す名前を入力します。

次に、「仲介デバイスで使用」というラベルの付いたボックスをチェックし、「ノード上のマッピング」ドロップダウン メニューに、マップされている GPU を持つサーバーが含まれていることを確認します。デバイスのリストを下にスクロールし、すべてのデバイス ID の「ベンダー」列に「NVIDIA Corporation」が含まれていることを確認します。これが当てはまる場合は、表の左上にあるチェックボックスをクリックしてすべてのデバイスを選択します。それ以外の場合は、ベンダーが「NVIDIA Corporation」であるデバイスのみを選択します。

注:システムに複数のGPUがインストールされている場合は、目的のサーバーの「シェル」タブで「lspci」コマンドを使用して、各カードに対応するIDを特定できます。

デバイスの選択が完了したら、ポップアップ ウィンドウの右下にある [作成] ボタンをクリックして選択を確定します。これで、NVIDIA GPU を Proxmox VE サーバーのゲスト用の vGPU にスライスする準備が整いました。

ゲストへのサービス提供(仮想マシンへの vGPU の割り当て)

仮想マシンに vGPU を割り当てて使用するための準備がすべて整いました。まず、通常どおり新しい仮想マシンを作成するか、既存の VM を使用します。このデモでは、Windows Server 2025 仮想マシンを使用します。

Proxmox VE サーバーの Web インターフェイスで、適切な方法 (noVNC コンソール、ゲストの電源メニューなど) を使用して仮想マシンをシャットダウンし、ゲストの「ハードウェア」タブをクリックします。

「追加」ボタンをクリックした後に表示されるドロップダウン メニューで、「PCI デバイス」を選択します。

ポップアップの「追加: PCI デバイス」ウィンドウで、「デバイス:」フィールドでリソース マップされた GPU に割り当てた名前を選択します。

次に、「MDev タイプ:」フィールドをクリックして、表示される仲介デバイス タイプ オプションのリストを確認します。各選択肢には数字と文字の指定があることに気付くでしょう。数字はゲストに割り当てられた VRAM の量 (ギガバイト単位) を表し、「A」、「B」、「Q」は vGPU の使用例を示します。

  • Q – RTX エンタープライズ ドライバーを搭載した仮想ワークステーション (RTX vWS ライセンスが必要)
  • B – 仮想デスクトップ(NVIDIA Virtual PC ライセンスまたは RTX vWS ライセンスが必要)
  • A – アプリケーション ソリューション (NVIDIA 仮想アプリケーション ライセンスが必要)

注:さまざまなvGPUプロファイルとその必要なライセンスの詳細については、こちらをご覧ください。

このデモでは、「NVIDIA L40S-12Q」プロファイルを使用しました。希望する仲介デバイス タイプを選択したら、「PCI-Express」チェックボックスをオンにして、青い「追加」ボタンをクリックして終了します。

VM に vGPU が割り当てられましたが、動作させるにはゲスト ドライバーとライセンス トークンをインストールする必要があります。これで、仮想マシンの電源をオンにしてログインできます。

ログイン後、先ほど取得したNVIDIA vGPUゲストドライバーを ライセンスポータル 任意の方法(SMB、SCP、直接ダウンロードなど)でVMにダウンロードします。または、次のようなソフトウェアを使用して、ドライバを含む仮想CD-ROMファイル(.iso)を作成し、PVEサーバーのストレージにアップロードすることもできます。 ImgBurnを 多数の vGPU 対応ゲストを同時にデプロイします。

実行可能ファイルをダブルクリックしてドライバー インストーラー ファイルを実行し、表示されるインストール メニューの指示に従います。

「抽出パス:」フィールドのデフォルトの場所にドライバーを抽出し、プロンプトが表示されたら「高速」インストール オプションを選択します。

ドライバーのインストールが完了したら、「閉じる」ボタンをクリックしてメニューを終了します。

次に、ゲストでvGPUライセンスをアクティベートする必要があります。アクティベーション方法は、専用ライセンスサーバー(DLS)を選択するかクラウドライセンスサーバー(CLS)を選択するか、オペレーティングシステムによって大きく異なります。NVIDIAの ライセンス システム クイック スタート ガイド (NAIST) と クライアント ライセンス ユーザー ガイド 特定の設定でクライアントをアクティブ化する詳細な手順については、こちらをご覧ください。

クラウド ライセンス サーバーを使用し、アクティベーションのためにゲストに配置するトークン ファイルを受け取りました。このファイルをゲストに移動し、「C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken」フォルダーにコピーします。

次に、アクティベーション プロセスを完了するには、ゲストを再起動する必要があります。

ここで説明するホストとゲストの構成手順をすべて実行すると、GPU を必要とするプログラムやアプリケーションを実行できるようになります。再起動後にゲストにリモート デスクトップ プロトコル (RDP) を有効にするか、お気に入りのリモート デスクトップ ソフトウェアをインストールして、GPU アクセラレーションによるリモート ビューイングの素晴らしさを享受することを忘れないでください。

エンジンを始動する (Proxmox vGPU を試す)

仮想 GPU を備えた仮想サーバーがいくつかできたので、実際に試してみましょう。各 VM は、8 個の固定 Intel Xeon Platinum 8580 vCPU (ハイパースレッド コア 4 個)、32 ギガバイトの DDR5 4800 MT/s レジスタード ECC RAM、および 40 ギガバイトの VRAM を備えた NVIDIA L12S-12Q (仮想ワークステーション) vGPU プロファイルで構成されています。仮想マシンの完全なハードウェア構成は、以下で確認できます。

Cinebench 2024

Maxon の Cinema 4D モデリングおよびアニメーション ソフトウェアをベースにした Cinebench 2024 は、vGPU でのレンダリング パフォーマンスを興味深く客観的に評価します。40 台の仮想マシンで「48Q」(VRAM 48 ギガバイトすべて) プロファイルの L12S の性能をフルに発揮した場合と、「XNUMXQ」プロファイルで XNUMX 台の仮想マシンで実行した場合を比較してみましょう。

40 台の仮想マシンが L21,147S 全体を占有するのはあまり意味がありませんが、シングル パス GPU ベンチマークで 2,514 ポイントというパフォーマンスは印象的です。ただし、GPU を 2,567 分割すると、GPU の CUDA コアを共有する NVIDIA のタイム スライス アプローチの影響がわかります。ベンチマークをすべての VM で同時に実行した場合、個々のスコアは XNUMX から XNUMX の範囲になります。

「12Q」プロファイルの単一の仮想マシンでテストを再実行し、他の 15,133 つの仮想マシンをアイドル状態にすると、スコアは XNUMX に戻ります。完全な GPU のスコアに戻ったわけではありませんが、パーティション化された vGPU としては依然として立派なスコアです。

ブレンダーのベンチマーク

Blender でさらにいくつかのレンダリング ベンチマークを続けましょう。Cinebench 2024 と同様の傾向に従い、GPU を XNUMX 分割すると、同じプロファイルで同じワークロードを実行する単一の仮想マシンと比較すると、全体的なパフォーマンスが大幅に低下します。

Monster ベンチマークで実証されているように、GPU の計算能力を共有する VM が 8 台しかない場合、個々のレンダリング パフォーマンスは同じプロファイルを持つ単一の VM の 2.4% 程度にしかならない可能性があります。ただし、XNUMX 台の仮想マシンが他の仮想マシンに対してかなりのリードを獲得し、最もパフォーマンスの低い仮想マシンのスコアの最大 XNUMX 倍を獲得しているのが観察されました。

Junkshop と Classroom のベンチマークでも同様の結果が得られており、4 つの VM のうち 3 つでパフォーマンスが大幅に低下し、1 つのゲストが他のゲストよりもはるかに高いスコアを獲得しています。

 

興味深いことに、2025 台の仮想マシンの vGPU に高い優先度が与えられ、大幅にリードする瞬間が短時間あるようです。たとえば、Classroom ベンチマークでは、2025 台目の Windows Server 2 VM (WINXNUMX-XNUMX) は、同時に実行されていたにもかかわらず、他の VM の XNUMX 倍以上のパフォーマンスを達成しました。これが vGPU ソフトウェアのスケジュールによるものか、GPU 自体の性質によるものかは正確には判断できませんが、このカードでの NVIDIA のタイム スライスのみのアプローチに特有のパフォーマンスの異常が浮き彫りになっています。

結論

NVIDIA の vGPU ソフトウェアのセットアップとサポートは、他の競合プラットフォームほど洗練されていないかもしれません。それでも、Proxmox 仮想環境システムをすでに実行している組織やホームラボにとっては、エキサイティングで価値のある機能です。GPU リソースを分割するとパフォーマンスが大幅に低下しますが、多くの組織は依然として NVIDIA の vGPU テクノロジを活用しており、GPU を共有する方がこの欠点を上回ると判断しています。この姿勢は、多くのハイパースケーラーやスペースが限られたデータセンターで採用されており、できるだけ多くのテナント (この場合は、vGPU を備えた仮想マシン) を可能な限り小さなフットプリントに詰め込むことが、最も効率的で収益性の高いオプションです。

Proxmox Server Solutionsが最近、ソフトウェア定義ネットワーク、Linux 6.11カーネルのサポート、専用データセンター管理システムといった機能を急速に拡張していることは、目覚ましい進歩を示しており、ハイパーバイザー分野における有力な選択肢になりつつあることを証明しています。この分野における継続的な発展を期待するとともに、PVEに間もなく登場する魅力的なツールやテクノロジーについて、さらに詳しくお伝えできることを楽しみにしています。

nextmox

StorageReview と連携する

ニュースレター| YouTube | ポッドキャスト(iTunes / Spotify) | Instagram | Twitter | TikTok | RSSフィード

アンドリュー・ワーグ

Andrew Waag 氏は Linde plc の分散システム管理者で、サーバー ハードウェア、エンタープライズ ストレージ システム、ネットワーク機器などに興味を持っています。彼は常にホームラボで実行できる新しいことを模索し、仮想化とストレージ テクノロジの実験を行っています。