
GitHubで公開された「gpu-unlock」というオープンソースのツールが海外で大きな話題になっています。GeForce RTX 30シリーズで、AI処理に使うBF16/FP16の行列演算が最大でほぼ2倍に速くなるという触れ込みで、公開から短期間でGitHubのスターは6,800を突破。WccftechやNotebookcheckといった海外の大手テックメディアも相次いで記事にしています。
この記事では、gpu-unlockとは何なのか、どんな仕組みで速くなるのか、そして試す前に知っておきたい注意点をまとめます。
gpu-unlockとは
gpu-unlockは、開発者Zagitta氏が公開したLinux用のカーネルモジュールで、対象はAmpere世代(GA102/GA103/GA104/GA106)のRTX 30シリーズとなっています。
RTX 30シリーズのGeForceは、同じチップを使うプロ向けカード(RTX A6000など)と比べて、TensorコアでのFP16/BF16演算(FP32での累積)の命令発行レートが半分に絞られています。ハードウェアとしては同じ能力を持っているのに、製品として制限がかかっているわけです。gpu-unlockはこの制限を外し、プロ向けカードと同じ発行レートで動かせるようにします。
VBIOSの書き換えやハードウェアの改造は不要で、NVIDIAのドライバも公式のものをそのまま使えます。ドライバを更新するたびにパッチを当て直す必要がないのも、このツールが支持されている理由のひとつです。
仕組み:ドライバより先に動く
プロジェクトのベースになっているのは、マイニング向けCMPカードの制限を解除する「CMP unlocker」で見つかった手法です。gpu-unlockはそれを、NVIDIAドライバが読み込まれる前のブート直後に実行する形にまとめ直しました。
具体的には、モジュールをinitramfsに組み込んでおき、起動の早い段階でGPU内部の「speed selector」と呼ばれる設定値を書き換えます。その後、Function Level Reset(FLR)でカードをリセットし、普通のNVIDIAドライバにカードを引き渡します。ドライバから見ると、最初から制限のないカードがつながっているように見えるわけです。
ドライバが一度カードを掴んでしまうと、もう切り替えることはできず、起動した後からモジュールを手動で読み込んでも効果がないのはこのためです。
どれくらい速くなるのか
理論上は、FP16/BF16の行列演算がほぼ2倍になります。READMEやコミュニティからは、次のようなベンチマーク結果が報告されています。
|
カード |
演算 |
解除前(TFLOPS) |
解除後(TFLOPS) |
|---|---|---|---|
|
RTX 3090 Ti(450W) |
BF16 |
87.5 |
157.4 |
|
RTX 3090 |
BF16 |
77.5 |
129.6 |
|
RTX 3090 |
TF32 |
40.2 |
69.8 |
ただし、実際のアプリでの伸びはもう少し控えめです。READMEによると、密行列のGEMMで+25〜80%程度という報告が多いようです。電力制限の影響も大きく、225Wに絞られたカードでは伸びが最も小さかったそうです。
効果が出やすいのは、行列演算が中心の処理で、ComfyUI Wikiの検証では、RTX 3090 Tiでの画像生成が最大60%ほど速くなったと報告されています。ローカルLLMでも、プロンプトを読み込むprefillの部分やFlashAttentionは速くなります。
一方、LLMがトークンを生成するdecodeの部分は、ほとんど変わりません。decodeは演算性能よりもメモリ帯域がボトルネックになるためです。INT8の処理も対象外です。なお、解除の前後で計算結果がビッ
試す前に知っておきたい注意点
試す前に知っておきたい注意点として、本家のツールはLinux専用であるということがあります。Windows向けの実験的な移植版も存在しますが、特定の1台で起動できたという段階です。
また、画面出力に使っているカードでは、リセットからnvidia-drmが立ち上がるまで、画面が真っ暗になります。スリープら復帰すると解除状態が戻るため復帰まで1秒ほど時間がかかり、ハイバネーションには対応していません。
GPUの内部設定を直接書き換える非公式のハックで、試すのは自己責任となります。
導入の流れ
対応しているディストリビューションは、Arch系(CachyOS含む)、Debian/Ubuntu系、Fedora/RHEL系です。ブートローダはGRUBとsystemd-bootに対応しています。
インストールするには、リポジトリをクローンしてmake installを実行します。ビルド中にファームウェアをダウンロードするのでネット接続が必要です。
git clone https://github.com/Zagitta/gpu-unlock cd gpu-unlock make install
インストールしただけでは有効にならず、カーネルパラメータにgpu_unlock.targets=allを追加して初めて動きます。特定のカードだけを対象にしたい場合は、lspci-Dで調べたPCIアドレスを指定できます。
- GRUB (Debian/Ubuntu/Mint): add it inside GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub, then run sudo update-grub.
- GRUB (Arch/CachyOS): same edit, then run sudo grub-mkconfig -o /boot/grub/grub.cfg.
- Fedora/RHEL: run sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all".
- systemd-boot: append it to the options line in your boot entry (bootctl status shows its location).
- UKI / generated entries: add it to /etc/kernel/cmdline and regenerate
再起動後にjournalctl-k-b | grep gpu_unlockでログを確認し、解除できたかを確かめます。元に戻したいときは、このパラメータを消すだけです。
RTX 3090/3090 Ti/3080/3070/3060 12GBでは解除できたという報告があります。一方、OEM版のRTX 3080 Ti 20GBでは、処理は通ったものの半速のままだったそうです。
まとめ
gpu-unlockは、発売から数年たったRTX 30シリーズに眠っていた演算性能を引き出すツールです。ドライバを改造せず、起動直後に設定を書き換えるだけという手軽さもあって、一気に注目を集めました。
ただし、恩恵を受けられるのは、Linuxで画像生成や学習、LLMのprefillなど行列演算中心の処理を回す人です。ゲームやLLMのチャット用途では、体感できるほどの変化は期待しにくそうです。手元にRTX 30シリーズがあってLinux環境を用意できるなら、サブマシンで試してみる価値はありそうです。
