RTX 30シリーズのBF16アンロックでComfyUIが最大60%高速化

ComfyUI Wikinews

オープンソースのLinuxカーネルモジュールがRTX 30カードのFP/BF16発行レートを復元します。ある3090 TiではComfyUIのBF16グラフが31〜60%高速化し、INT8はほぼ変化しません。

<code>Zagitta/gpu-unlock</code> は、NVIDIAがGeForce RTX 30カードで制限しているFP16およびBF16の命令発行レートを復元します。公式ドライバがGPUをバインドする前に実行されるLinuxカーネルモジュールであるため、ドライバを更新しても元に戻りません。リポジトリは2026年10月18日に公開され、1週間で2,800スターを超えました。

このカードファミリーは何年も前からソフトウェアによる制限を抱えています。コンシューマー向けのGA102、GA103、GA104、GA106チップは、同じシリコンでありながら、FP/BF16の融合積和演算をFP32へ発行するレートがプロ向けの兄弟製品の半分に抑えられています。gpu-unlock は nvidia がロードされる前にその上限を引き上げる速度セレクタを書き込むため、残りのスタックは未改造のまま動作します。

モジュールが変更する内容

このプロジェクトは2つの以前のアプローチを組み合わせています。CMPアンロッカーのV67/PLM手法と、UEFI方式のドライバ読み込み前のタイミングです。具体的には、NVIDIAドライバがカードをバインドする前に、モジュールは完全なBF16レートを選択する速度セレクタSS0 0x88888888 と、IMLA4用の4ビットSS1 0x8 を書き込み、その後FLRを実行して終了します。UEFIアプリケーションでもパッチ適用済みドライバでもなく、作者が強調するのはまさにこの性質です。NVIDIAが新しいドライババージョンを出すたびにやり直すパッチは存在しません。

READMEにはその効果が明記されています。これらの4つのチップファミリーにおいて、FP/BF16のFMAからFP32への命令発行レートを2倍にします。このモジュールは、カーネルコマンドラインで gpu_unlock.targets= を指定してオプトインしない限り何も行いません。指定は all かPCIアドレスのリストで、カードが何枚あっても約1秒で並行してアンロックされます。

数値の実態

プロジェクト自身の参照測定は、450 WのRTX 3090 Tiで実行した密な8192³ GEMMで、FP32累積による5サンプルの中央値です。

アンロック前後のRTX 3090 Tiにおける密なGEMMスループット

BF16は87.5から157.4 TFLOP/sへ、TF32は42.6から82.6へとほぼ倍増する一方、FP16の伸びは87.5から118.4と小さめです。READMEはこの変化を、データ型ごとの内訳を示さずにFP/BF16のFMAからFP32への発行レートが2倍になると説明しているため、公開されている表がこの内訳に関する唯一の測定値です。

リポジトリのREADMEにまとめられたユーザーによる互換性報告は、残りのスタックもカバーしています。

カード結果BF16 GEMMの向上率
RTX 3090 Tiアンロック成功+68〜80%
RTX 3090アンロック成功+25〜67%
RTX 3080 10 GBアンロック成功+70〜73%
RTX 3080 20 GBアンロック成功+56〜59%
RTX 3070アンロック成功+73〜81%
RTX 3060 12 GBアンロック成功約+80%
RTX 3080 Ti 20 GB (OEM)アンロックは完了するがBF16は半分のレートのままなし
RTX 3070 Tiこのモジュールでのテストなしなし
カードごとに報告されたBF16 GEMMの向上率

READMEは、これらの数値が各報告独自のベンチマークに由来するものであり、直接比較はできないと明言しています。主な交絡要因は電力上限です。最も低い3090での+25%は、225 Wに制限されたカードによるものです。

ComfyUIでの測定

このサイトにとって有用なテストはGEMMではなく生成です。RTX 3090 Tiの独立したオーナーであるu/under-_-null氏は、標準ドライバとアンロック済みドライバで同じグラフを実行し、画像またはクリップあたりの中央時間を公開しました。BF16パイプラインでは最大60%高速化し、INT8ではほぼ変化しませんでした。

RTX 3090 Tiにおける標準時とアンロック時のComfyUI画像・クリップあたりの中央時間
モデルと精度標準アンロック向上率
MOSS-Image SFT BF1671.98 s45.40 s+58.6%
Qwen-Image 2.1 Turbo BF168.51 s5.41 s+57.2%
Z-Image Turbo BF166.79 s4.35 s+56.1%
FLUX.1 dev FP8チェックポイント31.96 s20.66 s+54.6%
Krea 2 Turbo BF1615.65 s10.70 s+46.3%
MiniMax H3 BF16 (動画と音声)253.27 s158.05 s+60.2%
LTX-2.5 distilled BF16 (動画と音声)70.81 s60.63 s+16.8%
MOSS-Image SFT INT827.31 s27.23 s+0.3%
Qwen-Image 2.1 Turbo INT83.92 s3.75 s+4.6%
MiniMax H3 INT8 ConvRot155.07 s118.21 s+31.2%

注目すべき点は2つあります。向上は発行レートが重要なBF16の処理に集中しており、INT8量子化のパスはほぼ影響を受けません。したがって、すでにINT8 ConvRotチェックポイントを使っているユーザーが得られるのは数%であって60%ではありません。同じ報告の中で、INT8 ConvRotのMiniMax H3だけは31%と例外で、他のINT8の行を大きく上回っています。

出力の忠実性は維持されました。同じ報告では、アンロック時と標準時の静止画生成を150回ずつ照合し、デコード後のRGBピクセルが完全に一致したとしています。リポジトリ内の他の互換性報告も同様で、これは精度の変更ではなく発行レートの変更であることと整合します。

要件とリスク

これは署名されていないカーネルモジュールであり、公式ドライバがバインドする前にGPUファームウェアの挙動を変更します。Linux専用で、GA102/GA103/GA104/GA106のGeForceカードを対象とし、カーネルコマンドラインで明示的にオプトインしたうえでのコールドブートが必要です。失敗した場合の症状はカードが初期化されなくなることなので、実験的なものとして扱ってください。

試す前に押さえておくべき詳細は、すべてプロジェクトのドキュメントに記載されています。

  • Linux専用。 モジュールはインストール済みのカーネルヘッダーに対してビルドされ、mkinitcpio、initramfs-tools、dracutのいずれかでインストールされます。Arch、Debian、Fedora向けのパッケージターゲットがあります。
  • カードごとにオプトイン。 gpu_unlock.targets=all はバインドされていないすべてのGA10xカードをアンロックします。それ以外の場合は lspci -D が出力する形式でPCIアドレスを列挙します。すでにドライバに初期化されたカードは拒否されます。
  • コールドブート。 起動後に手動でモジュールをロードしても、nvidia がすでにバインドしたカードには効果がありません。
  • サスペンドの扱い。 速度セレクタは電源断でリセットされるため、gpu_unlock.resume=0 で無効化しない限り、モジュールはサスペンド通知を介してレジューム時に再アンロックします。ハイバネーションには対応していません。
  • ディスプレイ用カードでも動作します。リセットから nvidia-drm が引き継ぐまでの間、コンソールはブランクになります。
  • すべてのカードが反応するわけではありません。 OEMのRTX 3080 Ti 20 GBはアンロックが完了してもBF16は半分のレートのままで、GA103に関する報告はまだありません。

別のコミュニティプロジェクト impacifist/Windows-GPU-UNLOCK は、この手法をWindowsユーザー向けにUEFI方式へ移植したものです。オリジナルのプロジェクトの一部ではなく、ここでは検証していません。

入手方法

コメント

GitHubでサインインしてディスカッションに参加しましょう。

コメントを読み込み中…
RTX 30シリーズのBF16アンロックでComfyUIが最大60%高速化 | ComfyUI Wiki