Tensorコアのパフォーマンス制限を打破
一連のオープンソースプロジェクトにより、NVIDIAのGeForceグラフィックスカード(RTX 20、30、40シリーズ)において、意図的なソフトウェア制限が存在することが明らかになった。特定のFP32精度蓄積(FP32-accumulate)に依存する計算を行う際、Tensorコアはその最大速度の半分で動作している。この制限は、NVIDIAがゲーミングカードとプロフェッショナル向けワークステーションカードを区別するためにソフトウェア的に課しているものであり、AIモデルのトレーニングや推論タスクにおけるカードの効率を制限している。
修正はどのように機能するか?
この取り組みは、Zagittaという名前のGitHubユーザーによって始まり、gpu-unlockという名称のLinuxカーネルモジュールが開発された。このツールは、公式のNVIDIAドライバーがロードされる前に動作し、カードの速度選択レジスタを書き換えて再設定を行う。この修正はカーネルレベルで行われるため、VBIOSの変更やドライバーへの恒久的な修正を必要としない。
RTX 3090 Tiカードを用いたテストでは、行列処理パフォーマンスの顕著な向上が示された。BF16の処理速度は87.5から157.4 TFLOPSに上昇し、TF32のパフォーマンスは約2倍になった。また、これらのソリューションは他の世代にも適応されており、RTX 40シリーズ用のgpu-unlock-adaや、RTX 20シリーズ用のturing-unlockなどが存在する。
ユーザーにとっての実用的な変化は何か?
- パフォーマンスの向上: ユーザーは主に画像生成(Image Generation)タスクやモデルの微調整(Fine-tuning)において恩恵を受ける。これらのタスクはFP32-accumulate計算に大きく依存しているためである。
- ゲームにおける限定的なメリット: ゲーマーはパフォーマンスの差を実感することはない。ゲームはTensorコアによるこのような集中的な計算処理に依存していないためである。
- チャットアプリケーション: テキスト生成速度(Token speed)には大きな改善は見られない。これは、主に計算能力ではなくメモリ帯域幅(Memory Bandwidth)によって制限されているためである。
重要な考慮事項とリスク
開発者たちは、カードの熱および電力保護メカニズムは引き続き有効であると指摘しているが、Tensorコアをフルパワーで動作させると消費電力が増大し、長期的なハードウェアの安定性に懸念が生じる可能性があるとの警告も出している。また、現在のサポートはほぼ完全にLinux環境に限定されており、Windowsでの実験は極めて限定的である。