无尘阁日记

无尘阁日记

同样的显卡,跑 AI 只有一半速度?NVIDIA 自己锁的,有人做了个补丁(1.9 万星)
silcano

github监控器 · 2026-11-10 · 约 3124 字 · Zagitta/gpu-unlock

 

你买了张 GeForce 跑模型,参数一样、显存一样,就是比别人的专业卡慢一半。不是你的卡不行,是 NVIDIA 把它锁了。

NVIDIA 给 GeForce 的 FP16 / BF16 / TF32 张量核心做了半速限制(这三样恰好是几乎所有 AI 训练和未量化推理用的精度)。同一片硅做成 RTX A 系列或专业卡,就是全速。

gpu-unlock 干的事:在官方驱动加载之前,把这个限制去掉。 1.9 万星,每天涨 775 星。下面讲支持哪些卡、怎么装、怎么验证真的生效了。

一、先说结论:这是硬件锁,不是驱动锁

这点必须先搞清楚,因为它决定了方案的稳定性。

很多人以为限速是驱动里的一行判断,改驱动就行。不是。限制在硬件初始化阶段就写进去了——显卡启动时由 vBIOS 和驱动共同设定。

所以常见方案有两种,都有毛病:


方案
做法
问题
改驱动
打补丁重编 NVIDIA 驱动
每次驱动更新都要重做
刷 vBIOS
改显卡固件
风险高,刷坏就砖

gpu-unlock 走的是第三条:在驱动加载之前介入。

README 的原话是"removes that cap at boot, before the stock NVIDIA driver loads"。这意味着:不用改驱动,不用刷固件,NVIDIA 发新驱动也不用重做。

gpu-unlock 数据卡

二、能拿到多少:官方给的数字

它自己列的收益:


场景
提升
FP16 / BF16 / TF32 张量吞吐
最多 2 倍
LLM prefill(预填充)
+25% ~ 55%
微调
+25% ~ 50%
图像生成
+30% ~ 55%

注意"最多 2 倍"是理论上限,实际提升取决于你的负载是不是吃满张量核心。

prefill 和 decode 的差别在这里体现得很清楚:prefill 是矩阵运算密集,吃张量核心,收益大;decode 是访存密集,收益小。

所以"我跑推理能快一倍吗"——生成阶段不会,预填充阶段会。

三、支持哪些卡

README 有 Supported GPUs 表,按代际分。已知覆盖的是 Ampere(RTX 30 系列)以及后续几代,具体型号以 README 表里标"支持"的为准。

装之前必须先查两件事:

  1. 你的卡在不在支持列表里。 不在就别折腾;
  2. 你是 Linux。 它是启动阶段介入,走的是 Linux 的驱动加载流程,Windows 不在支持范围。

第二条卡掉了一大半人。这是个 Linux 工具,Windows 用户看到这里可以关了。

四、装:三种方式,按发行版选

从源码编:

git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install

make install 会自动识别发行版并选对应的安装器。你也可以强制指定:

make install # 自动检测发行版并选择安装器
make install-arch # makepkg -sif
make install-deb # apt-get build-dep + dpkg-buildpackage + apt-get install
make install-rpm # dnf builddep + rpmbuild + dnf install

四条命令对应四类系统。不确定就用第一条,它会自己判断。

注意 install-deb 那行里的 apt-get build-dep——它要装编译依赖,所以第一次跑会拉一堆包。别在流量紧张的时候做。

五、配:只对哪些卡生效

装完之后,你可以精确控制它作用在哪些卡上。参数是内核启动参数 gpu_unlock.targets:

# 所有支持的卡都解
gpu_unlock.targets=all

# 只解指定的卡(用 PCI 地址)
gpu_unlock.targets=0000:21:00.0

# 多张卡,逗号分隔
gpu_unlock.targets=0000:21:00.0,0000:22:00.0

这个设计很实用:多卡机器上,你可能只想解其中一张。

PCI 地址怎么查?

lspci -nnk -s 0000:[ID]:00.0

或者直接 lspci | grep -i vga 先看总线号。

README 里的说明

六、验证:三步确认真的生效

这一步很多人跳过,然后"感觉快了"就当成功了。别这样。

第一步:看内核日志。

journalctl -k -b | grep gpu_unlock

有输出说明它在启动阶段介入了。没有输出 = 没生效。

第二步:看设备信息。

lspci -nnk -s 0000:[ID]:00.0

确认驱动绑定正常。如果这里显示异常,说明解锁影响了驱动加载,要回退。

第三步:跑基准。 用你自己的负载跑一遍前后对比。别看"感觉",看数字——prefill 吞吐、微调一步的耗时、出图时间。

三步缺一不可。第一步证明"它跑了",第二步证明"系统没坏",第三步证明"确实有用"。只做第一步的人,经常在第二步发现问题时已经晚了。

七、六个坑

  • Windows 用户。 不支持,别试;
  • 卡不在列表里。 装了也没效果,白折腾;
  • 没验证就上生产。 解锁影响驱动加载,出问题可能开不了机(有回退手段但要会);
  • 驱动更新后不检查。 它号称"驱动更新不用重做",但更新后仍要跑一遍第一步验证;
  • 以为 decode 也快一倍。 不会,收益主要在 prefill 和训练;
  • 多卡机器全局开。 有些卡可能是你不想动的(比如接显示器的输出卡),用 targets 精确指定。

第三条要认真对待。这是启动阶段干预,最坏情况是进不了图形界面。装之前确保你会进 recovery 模式改内核参数。

八、合法性和保修:必须说清的部分

这类工具都有同一个问题:它改的是厂商的产品分级策略。


问题
事实
违反许可协议吗
大概率违反 NVIDIA 的驱动/产品使用条款
影响保修吗
不改硬件,通常不影响,但厂商可以说"非标准使用"
会烧卡吗
不会,它没改电压/频率,改的是功能开关
企业环境能用吗
不建议,合规风险大于收益

第三行是技术判断:解锁的是"被禁用的功能",不是"超频"。所以它不会让卡更热、更费电——只是让它把本来就有的算力用出来。

第四行是现实判断:公司机器上装这个,法务那边过不去。

九、为什么会有这种锁

这不是阴谋,是标准的产品分级。同一片晶圆,按测试结果和功能开关分成不同价位卖——这是半导体行业的常规做法。

GeForce 锁半速张量核心,是为了让"要跑 AI 的人"去买更贵的卡。逻辑上无可指摘,对买了 GeForce 又想跑 AI 的人就很难受。

gpu-unlock 这类项目,本质是在厂商的分级线上凿了一个洞。它不会消失,因为需求一直在。

十、谁该用


你是谁
建议
Linux + Ampere 及以后 + 要跑训练/微调
值得试,收益最明显
Linux + 只做推理生成
收益有限,可以试但别期待
Windows 用户
用不了
公司生产环境
别用,合规风险
就想学 GPU 启动流程
读它的源码,比装更有价值

十一、先测再装:一个便宜的判断方法

不确定值不值得折腾?先花十分钟做这件事:

  1. 在你现在的环境下,跑一次 prefill 密集的负载(长 prompt、短输出),记下吞吐;
  2. 再跑一次 decode 密集的负载(短 prompt、长输出),记下吞吐;
  3. 对比两者。如果 prefill 占比高,解锁收益就大;反之可以跳过。

这个判断不用装任何东西,只要你会看自己的耗时分布。

十二、版本与地址


用途
地址
仓库
github.com/Zagitta/gpu-unlock
安装
git clone 后 make install
验证
journalctl -k -b \| grep gpu_unlock
配置
内核参数 gpu_unlock.targets
许可
仓库未声明 SPDX(使用前自己判断)
形态: Linux 内核模块 / 启动阶段干预
平台: 仅 Linux
支持: Ampere(RTX 30)及后续代际,具体见 README
收益: 最多 2× 张量吞吐;prefill +25~55%
风险: 启动阶段干预,需会回退

最后一句:这个项目最值得学的地方不是"白嫖算力",而是它示范了一件事——当你把"性能从哪来"追到启动流程,很多"硬件限制"其实是开关。

 

关于作者 · 江天(楠哥)
AI 实战导师 / 企业 AI 落地顾问 / 智能体工程师,17 年跨界、15,000+ 小时 AI 实操、20+ 套已交付工作流。 看完整履历海报 → skills 实验室 →