本文へ
ハクソク

世界を動かす技術を、日本語で。

GPUアンロック:Nvidia 3000シリーズカードにおけるFP/BF16命令の発行率

元記事: 原文(github.com)

概要

GPU unlock 1.0.0 は、Nvidia 3000シリーズのGeForceカードで FP/BF16命令発行速度 をプロ向けモデルと同等に引き上げるLinuxカーネルモジュール。 UEFIやドライバ改変を不要 とし、公式ドライバの更新にも強い設計。 GEMM性能が最大2倍近く向上 し、LLM・ディフュージョンなどの用途で大幅な速度改善。 導入は カーネルコマンドライン編集とmake install のみで完了。 サスペンド・再開時にも自動で再アンロック し、複数GPU環境にも対応。

GPU unlock 1.0.0:Nvidia 3000シリーズGeForceカードのFP/BF16命令高速化

  • FP/BF16命令発行速度 をプロフェッショナルモデル(A6000等)相当にアンロックするLinuxカーネルモジュール
  • CMP unlockerのV67/PLM技術 と UEFIアプローチの事前タイミング を組み合わせた手法
  • UEFIアプリケーションやNVIDIAドライバのパッチ不要、カーネル初期化時にアンロックを実行
  • 速度セレクタ(SS0/SS1)書き込み と FLR(Function Level Reset) を自動実施
  • 公式NVIDIAドライバのバージョンアップに強い、毎回パッチ作業不要

性能向上の具体例(3090 Ti, 450W, 8192³ GEMM, FP32集約時)

  • FP16: 87.46 → 118.39 TFLOPS
  • BF16: 87.50 → 157.41 TFLOPS
  • TF32: 42.58 → 82.61 TFLOPS

対応カードと報告例

  • GA102 RTX 3090 Ti: +68–80%向上
  • GA102 RTX 3090: +25–67%向上
  • GA104 RTX 3070: +73–81%向上
  • GA106 RTX 3060: 約+80%向上
  • 複数カード構成、VMパススルーにも対応

利点・影響範囲

  • GEMM性能(行列演算)を大幅改善、特にLLMプリフィル・FlashAttention・ディフュージョン用途で効果大
  • LLMデコードやINT8演算など、メモリ帯域依存の処理は変化なし
  • 出力のビット一致 (アンロック前後で計算結果は同一)

インストール手順

  • git clone https://github.com/Zagitta/gpu-unlock

  • cd gpu-unlock && make install

  • カーネルコマンドライン にgpu_unlock.targets=allを追記(GRUB, systemd-boot, Fedora等で編集方法あり)

    • 例: GRUB (Debian/Ubuntu): /etc/default/grubのGRUB_CMDLINE_LINUX_DEFAULTに追加、sudo update-grub
  • make install コマンドで自動的にディストリビューションを判別し、依存関係の解決とパッケージインストールを実行

  • ローカルビルド やパッケージ生成にも対応(Arch, Debian, RPM系)

起動フローとオプトイン方式

  • initramfs内でgpu_unlockをロード し、nvidiaドライバがバインドする前にアンロックを実行
  • MODULES順序 (mkinitcpio等)により、ディスプレイカードのブラックアウト時間を最小化
  • カーネルコマンドラインで対象GPU指定可能 (例: gpu_unlock.targets=0000:21:00.0)
  • 既にバインド済み/電源オフのカードはスキップ
  • サスペンドからの復帰時も自動で再アンロック (resume=0で無効化可)

アンロック状態の確認・解除

  • journalctl -k -b | grep gpu_unlock でログ確認
  • lspci -nnk -s [PCIアドレス] でカード情報確認
  • gpu_unlock.targets= をコマンドラインから外すことでアンロック解除
  • パッケージ削除でモジュール・設定も削除

ライセンス・注意事項

  • カーネルモジュール・ローカルパッケージはGPL-2.0-only
  • NVIDIAファームウェアは独自ライセンス下で配布
  • 詳細はfirmware/NOTICE.mdやlicenses/を参照

サポート・寄付先

  • 開発者支援リンク: https://buymeacoffee.com/zagitta
  • ETH, BTC, SOLアドレス 記載

注意:本モジュールの導入・利用は自己責任。NVIDIA公式サポート外となるため、十分な検証とバックアップを推奨。

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

自分で試してみたけど、結果は本物だよ。これ、すごい!ちょっとリスクはあるけどね(ファームウェアを利用するから)。 > 残念ながら、Nvidiaのブータは古典的なバッファオーバーフローに脆弱で、スタックに直接書き込むことができるから、Return Oriented Programming(ROP)を使ってコードを実行できるんだ。RTX 4090と4070 Ti Super用のリポジトリはこちら: https://github.com/JustAResearcher/gpu-unlock-ada

└

それらは動くけど、他のモッドとはうまくいかないね。TFAとは対照的に。ドライバーの特定のバージョンが必要なんだ。

これは本物だけど、いくつか注意点があるよ: - カードを普段よりも熱く動かす必要があるかも - 実際の効果(どうやら一部のカードで、スレッドを下に見てね)は最大出力を450Wに上げることが必要 - これは標準のクーラーが設計された範囲を超えてるから、もう少し冷却があった方がいいね。いいのは、このモッドをしばらく前からあるp2pモッドの上に(というか、下に、こっちが先に読み込まれる)重ねられること。お互いに干渉しないみたい。

└
  • カードを普段よりも熱く動かす必要があるかも これについて詳しく説明してもらえる?俺のGPUではパワーリミットを変更しなくても大丈夫だったんだけど。もちろん、カードは最大パワー使用の時間が長くなるかもしれないけど、リミット内には収まってるよ。
└

これらの数字は4070のロックされた消費電力240Wを主張してるよ: https://github.com/JustAResearcher/gpu-unlock-ada/releases/t...

└

かなり微妙な話だね。要するに、アンロックはNvidiaがプロフェッショナルやデータセンター用カードでフルレートにロックしている特定の命令をコアが発行できる頻度を半分にする2ビットを反転させるだけなんだ。もちろん、より多くの計算をするにはより多くの電力が必要だけど、やってることはカードを周波数カーブの下にシフトさせて、ワット数を抑えることなんだ。だから、ストックのパワーリミットではフル発行レートに達しないキャップがあるけど、正確なワークロードによってどれだけの電力が残るかに大きく依存するよ。周波数カーブは熱も考慮してるから、一般的にはちょっと熱くなったカードでパフォーマンスが向上するんだ。俺はこれを2台の3090で1ヶ月間問題なく動かしてるけど、水冷だからね :-)

これ、俺の仕事なんだけど、エクスプロイトとかは俺のアイデアじゃないよ。Nvidiaのドライバーをパッチするよりも、ずっと面倒くさくない形で全体をまとめる方法なんだ。元々、CMP90/50のWindowsアンロックからインスパイアを受けたんだ。スタンドアロンのUEFIモジュールとしてOSにチェーンロードするやつね。質問があれば喜んで答えるよ!

└

すごくよくできてるね。全てのモッドが君のアプローチを取ってくれたらいいのに。パッチドライバーは面倒だし、特に複数の種類のカードを持ってると余計にね。ありがとう。追記: 次は4090もやってね ;)

└

ありがとう!27bはお気に入りのモデルで、昨晩開発者がベンチマークを実行して133tks、約3.2倍を達成したんだ。これで経済的に変わるね。

└

これと同じようなことがGB10(DGX Spark)で起こっていて、同じような対処が必要か知ってる? 編集: あなたが提供した情報によると、たとえそうだとしても、中国が世界に恩恵をもたらさない限り、すぐには無理そうだね。

半分関連する話だけど、複数のカードを持ってる人向けのパッチがあるよ。このライブラリを使うと、消費者向けGPUでカード間の速度を約20%向上させられるんだ: https://github.com/aikitoria/open-gpu-kernel-modules ハードウェアは対応してるけど、Nvidiaが安いカードを検出すると無効にしちゃうんだよね。これでNvidiaのスローダウンを回避できる。

└

確かに、前に投稿したけど、これはトップレベルのコメントに値するね。

Hacker Newsで議論の続きを見る

同じ出典の記事