実行プログラムと拡張機能

RTX 3090 BF16アンロック:変わるものと変わらないもの

開くのはBF16・FP16の行列演算で、24GBのVRAMと帯域幅はそのままです。

2026年10月18日に公開されたgpu-unlockは、NVIDIAドライバーがカードを掴む前に速度セレクターを書き込み、RTX 3090のBF161演算率を開くLinuxカーネルモジュールです。リポジトリが動作を確認したのは3090の1台で、3090 Tiの測定値は別フォークによるものです。VRAM2が増えたりデコード3が速くなる道具ではなく、コールドブートと元に戻す手順が前提です。

実行条件と要点
  • gpu-unlockはドライバーパッチではなく、ドライバーのバインド前にSS0セレクターを書き込むカーネルモジュールです。
  • 3090 Tiの測定ではBF16が87.50から157.41 TFLOPSへ増えましたが、3090自体の公開表はまだありません。
  • VRAM・帯域幅・トークン生成速度は変わらず、検証済み環境は1台・1ディストリビューションです。

10月18日に公開されたカーネルモジュールです

gpu-unlockは、RTX 3090で塞がれていたBF16演算率を開くLinuxカーネルモジュールです。UEFIアプリでもパッチ済みNVIDIAドライバーでもなく、ドライバーがカードを掴む前に速度セレクターを書き込む方式です。モジュールはGPL-2.0で、生成されるファームウェアはCMPアンロックの参考資料に由来します。

リポジトリの説明では、SS0に0x88888888を書いてBF16のフルレートを選び、4ビットのSS1 0x8も書き込みますが、その効果は未検証です。カードはコールドブート状態である必要があり、ウォームリブートは非対応です。

ケースに取り付けたRTX 3090、色のバーと流れ図が表示されたモニター、机の上のノートと虫めがね、観葉植物
カードと画面の演算経路を分けて見ると、アンロックが変える箇所がはっきりします。

開くのはBF16・FP16の行列演算です

メンテナーは「BF16/F16演算が約40%速くなる」と答えています。実数値が公開されたのは3090 Tiを試した別フォークです。450W、dense 8192³ GEMM、FP324累積、5回中央値の条件で、BF16は87.50から157.41 TFLOPS、FP165は87.46から118.39、TF32は42.58から82.61へ増えました。

この表は3090 Tiの値で、試験環境もUbuntuカーネル7.0.0-38、修正ドライバー610.43.02、別のinitramfsフックでした。3090でも同方向の変化が報告されていますが、3090のGEMM表はまだ公開されていません。

3090 Tiの公開測定値(450W、dense 8192³ GEMM、FP32累積、5回中央値)
入力前後
FP1687.46 TFLOPS118.39 TFLOPS
BF1687.50 TFLOPS157.41 TFLOPS
TF3242.58 TFLOPS82.61 TFLOPS

VRAMと帯域幅は変わりません

このアンロックは演算経路だけに触れます。RTX 3090の24GB GDDR6X、936GB/sの帯域幅、電力上限はそのままです。48GB改造のようにメモリチップを替える作業とは別物で、大きなモデルを多く載せられるようにもなりません。

1トークン6ずつ生成するデコード段階は、メモリから重みを読む速度に縛られます。そのためBF16演算率が上がっても、1リクエストのtok/sが同じ比率で上がるわけではありません。

検証済みの環境は1台だけです

リポジトリが確認したのは、CachyOS 7.2.8-1カーネル、NVIDIA 615.71.09、PCIアドレス0000:21:00.0のRTX 3090 1台です。同じ機材の別カードは未改造の対照群でした。同じGA102でも製品IDが異なればモジュールは拒否するため、対象は3090と別フォークが扱う3090 Tiに限られます。

6.15以下のカーネルではドライバー読み込み前に電源状態が上がらず、アンロックが失敗する報告があります。回避パッチがイシューとして上がっています。3090 Tiは別フォークのみの対応で、他のGA102製品IDは拒否されます。

RTX 3090を挿したケース、色のブロックがコンベヤーで棚へ運ばれ、ネットワーク図のカードが置かれた作業空間
精度ごとに処理量は違いますが、保存容量はアンロックでは増えません。

コールドブートと元に戻すことが前提です

モジュールはカーネルコマンドラインにgpu_unlock.targets=が必要です。たとえばgpu_unlock.targets=0000:21:00.0のようにPCIアドレスを指定するか、allを使います。initramfsでnvidiaより先に読み込ませ、完全に電源を切ってから起動します。

元に戻すにはカーネルコマンドラインからオプションを消し、パッケージを削除します。ファームウェアが停止しない場合、モジュールは次の電源断までDMAバッファを保持するため、再試行前に必ず電源を切ってください。画面が出ない場合はブートローダーの編集画面でオプションを消して起動します。

試す価値があるのは誰か

プリフィル7、同時リクエスト、LoRA8ファインチューニングのように行列演算がボトルネックの作業を3090で回す人には意味があります。逆に1件ずつ短い回答を得る用途では利得は小さいです。業務機ではなく試験用PCで、基準線を記録してから試してください。

試験では電力上限とモデルを固定し、プリフィル時間と同時リクエストの処理量をあわせて記録してください。行列演算だけを見るならGEMM、体感を確かめるならllama-benchを使います。

RTX 3090を搭載したケースの横にチェック印があり、開いたノートに流れ図が描かれた机
作業後に同じ条件でもう一度測って初めて、実際の利得を確認できます。

用語の注釈

  1. BF16 — モデルの数値に使う16ビット浮動小数点形式です。指数部はFP32と同じ幅で、同程度に広い値の範囲を表せます。

    本文に戻る
  2. VRAM — グラフィックカードのGPUが使うメモリです。モデルの重みや計算途中の値を保存します。

    本文に戻る
  3. トークンのデコード — 入力とそれまでの回答をもとに、次の出力トークンを順に生成する段階です。

    本文に戻る
  4. FP32 — 32ビット浮動小数点形式です。BF16より値あたりのメモリを多く使い、数値をより細かく表現できます。

    本文に戻る
  5. FP16 — 16ビット浮動小数点形式です。BF16とビット幅は同じですが、指数部と仮数部の配分が異なります。

    本文に戻る
  6. トークン — モデルが入力や出力を分けて処理する単位です。

    本文に戻る
  7. プリフィル — LLMが入力プロンプトを読み、各トークンの内部表現を計算する段階です。プロンプトが長いほど処理するトークンが増えます。

    本文に戻る
  8. LoRA — 基本モデルの動作を調整する小さな追加の重みを学習・適用する方法です。基本モデルとアダプターを組み合わせ、画風の調整や少ないステップでの生成などに使います。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
2026年10月18日に公開されたgpu-unlockは、NVIDIAドライバーがカードを掴む前に速度セレクターを書き込み、RTX 3090のBF16演算率を開くLinuxカーネルモジュールです。リポジトリが動作を確認したのは3090の1台で、3090 Tiの測定値は別フォークによるものです。VRAMが増えたりデコードが速くなる道具ではなく、コールドブートと元に戻す手順が前提です。
必要なメモリはどのくらいですか?
このアンロックは演算経路だけに触れます。RTX 3090の24GB GDDR6X、936GB/sの帯域幅、電力上限はそのままです。48GB改造のようにメモリチップを替える作業とは別物で、大きなモデルを多く載せられるようにもなりません。