OSSがRTX 30のBF16を解禁、演算性能は約8割増

Open source illustration: hands joining branches to a shared node tree

開発者Zagitta氏がGitHubで公開したオープンソースプロジェクト「gpu-unlock」は、1週間ほどで約8100のスターと850を超えるフォークを集めた。やっていることは具体的で、GeForce RTX 30シリーズのFP16/BF16 Tensor Core命令にかかっている速度制限を解除する。VBIOSの書き換えも、NVIDIAドライバーの改変も行わない。

GeForce版のAmpereカードは、半精度入力・FP32累積の行列積命令を半分の速度でしか実行しない。gpu-unlockはこの命令の発行レートを2倍にすることを目指しており、対象はGA102、GA103、GA104、GA106の4種類のコアだ。

仕組み

gpu-unlockはLinuxのカーネルモジュールだ。作者の説明では、CMPマイニングカード用アンロッカーのV67/PLM技術と、ドライバー読み込み前に処理を行う従来のUEFI方式のタイミングを組み合わせたものだという。モジュールはNVIDIAドライバーがGPUを掌握する前にアンロックを済ませ、速度セレクターに書き込んだうえで、ファンクションレベルリセット(FLR)を実行する。

この方式は保守の手間が小さい。UEFIプログラムでもパッチ済みドライバーでもないため、NVIDIAが新しいドライバーを出すたびにパッチを当て直す必要がない。

作者が示したRTX 3090 Tiの測定条件は、8192³の密GEMM、消費電力450 W、FP32累積で、5回測定の中央値を採用している。

入力精度アンロック前アンロック後
FP1687.46 TFLOPS118.39 TFLOPS
BF1687.50 TFLOPS157.41 TFLOPS
TF3242.58 TFLOPS82.61 TFLOPS

ユーザーから寄せられたBF16の向上幅はカードによって異なる。RTX 3070は73%から81%、3080 10GBは70%から73%、3060 12GBは約80%、3090は25%から67%で、最低値は電力上限225 Wのカードによるものだ。これらの数値は報告者それぞれのベンチマークに基づくため、そのまま横並びで比較することはできない。

実際の負荷での効果

行列演算が中心の処理は目に見えて速くなる。大規模言語モデル推論のプリフィル段階では14%から36%の向上が報告されており、拡散モデルやFlashAttentionも恩恵を受けられる。一方、トークンごとの生成はメモリ帯域に律速され、INT8負荷は別の経路を通るため、この2つはほとんど変わらない。出力を比較したユーザーによると、アンロック前後の計算結果はビット単位で一致しているという。

つまり「演算性能が8割増」は主に理論ピークの話だ。ローカルで大規模言語モデルとチャットする用途では、長いプロンプトの読み込みが速くなる点が最も体感しやすく、文字の出力速度はあまり変わらない。ゲームのフレームレートへの影響については、現時点で独立した検証はない。

中国の中古カードユーザーにとって

中国のローカル導入コミュニティでは、中古の3090やメモリ改造版の3080 20GBがコストパフォーマンスの良い選択肢として定着している。プロジェクトの互換表には「RTX 3080 20 GB(メモリ換装)」の行があり、56%から59%の向上が報告されている。改造カードでもこのアンロックの恩恵を受けられることを示している。

ハードルはOSだ。モジュールは現時点でLinuxのみ対応で、Arch系、Debian/Ubuntu系、Fedora系のパッケージが提供されている。カーネルの起動パラメーターで明示的に有効にする必要があり、起動後に手動で読み込んでも動作しない。Windowsユーザーはコミュニティ製のUEFI移植版を参照するしかなく、たとえば3070 Tiはいまのところその方式でしか動作確認されていない。

作者が挙げている制限も少なくない。

  • メモリへのサスペンド後は再度アンロックされ、約1秒余分にかかる。ハイバネーションは非対応。
  • アンロック時のリセットで、モニターを接続したカードは一瞬ブラックアウトする。
  • ファームウェアが停止しないカードでは、いったん電源を切ってから再試行する必要がある。
  • OEM版の3080 Tiはアンロック後もBF16が半速のままで、GA103については報告がない。

プロジェクトはGPL-2.0ライセンスで公開されている。カードの出荷時の速度制限を変更することが保証に影響するかどうかについて、READMEは触れておらず、NVIDIAも現時点で公式なコメントを出していない。メインマシンで試そうとするユーザーは、自分でリスクを判断する必要がある。

参考資料: gpu-unlockプロジェクトのREADME、GameApps.hk、CocoLoop。スター数とフォーク数はGitHubリポジトリのデータ、TFLOPSおよび各モデルの向上幅はREADMEのベンチマーク表で確認した。