新しいLinuxカーネルモジュールである`gpu-unlock`により、ユーザーはNvidia Ampere(3000シリーズ)およびAda Lovelace(4000シリーズ)のコンシューマー向けグラフィックスカードにおけるハードウェアレベルの制限をバイパスできるようになります。具体的には、このモジュールはFP16およびBF16演算の命令発行レートを解放します。これらの演算は、通常、プロフェッショナル向けの同等製品と比較してコンシューマー向けハードウェアでは制限(スロットル)がかかっています。このアンロックを適用することで、ユーザーはこれらの特定のデータ型に対するTensorスループットが倍増したと報告しており、Large Language Model(LLM)のプリフィル、拡散モデル、FlashAttentionなど、行列演算を多用するワークロードを大幅に加速させます。
この画像は、Nvidia AmpereおよびAda Lovelaceカードのハードウェアレベルの制限をバイパスすることを可能にするgpu-unlockプロジェクトを表しています。
この仕組みは、Nvidiaのブートプロセスの高度なエクスプロイトに基づいています。初期化中、GPUのSecurity Engine 2(SEC2)は、GPU System Processor(GSP)ファームウェアを認証してロードするために、署名済みの「booter」ファームウェアを実行します。研究者は、このbooterファームウェアに古典的なバッファオーバーフローの脆弱性があることを発見しました。既存のファームウェアコードの断片、すなわち「ガジェット」を連結させる技術であるReturn Oriented Programming(ROP)を使用することで、このモジュールは「heavy-secure」モードで任意のコードを実行できます。これにより、公式のNVIDIAドライバがカードにバインドされる前に、モジュールがGPUのレジスタに特定のスピードセレクター(SS0およびSS1)を書き込むことが可能になります。このモジュールはinitramfs内の初期カーネルモジュール(kmod)として動作するため、標準的なドライバがハードウェアを初期化する前に、これらの書き込みとPCIe Function Level Reset(FLR)を実行します。
このビジュアルは、記事で議論されているアンロック機構におけるRTX 4000シリーズカード向けの特定の実装を表しています。
Tensor演算を多用するタスクにおいて性能向上は非常に大きいものの、このアンロックには実用的およびハードウェア的なトレードオフが伴います。例えば、RTX 3090 Tiで報告されている最大級の利点を得るには、消費電力制限を450Wまで引き上げる必要があり、これは標準のクーラーの熱設計を超えるため、追加の冷却が必要になります。さらに、この性能向上は命令発行レートに特有のものであり、LLMのデコーディングやINT8演算など、メモリ帯域によって制限されるワークロードでは大幅な改善は見られません。このモジュールは再起動を跨いで永続するように設計されており、「suspend to RAM」状態でも維持されますが、ハードウェアにアンロックを再適用するため、レジュームプロセスに約1秒の時間が追加されます。