GitHub 热门项目推荐:gpu-unlock(C|12372 Star)

这个项目有什么用

NVIDIA 在消费级 GeForce 显卡上把 tensor core 的 FP16、BF16、TF32(FP32 累加)算力限制到了大约一半,而同样的芯片做成 RTX A 系列或专业卡就以全速运行。gpu-unlock 在启动阶段、官方 NVIDIA 驱动加载之前移除这一限制,从而让 20/30/40 系列 GeForce 卡在 AI 训练与非量化推理中获得更高的张量吞吐。

它替代的是「刷修改版驱动」或「刷 VBIOS」这类老办法:不需要打补丁的驱动,不需要刷 VBIOS,NVIDIA 发布新驱动后也不用重做。README 给出的收益区间为:最高 2× 的 FP16 / BF16 / TF32 张量吞吐、+25–55% 的 LLM prefill、+25–50% 的微调速度、+30–55% 的图像生成速度。

典型使用场景

  • 在单张 GeForce 卡上跑大语言模型推理,prefill 阶段偏慢的情况。
  • 做模型微调,希望缩短每轮训练时间。
  • 跑 Stable Diffusion 一类的图像生成任务。

适合愿意折腾 Linux 启动配置的个人开发者和小团队;不适合只使用 Windows 的用户,也不适合 RTX 50(Blackwell)用户。

核心特性

  • 启动阶段解锁,不碰驱动:以内核模块形式在 initramfs 中加载,赶在未修改的 NVIDIA 驱动绑定显卡之前完成解锁,因此不依赖特定驱动版本,换驱动无需重做。
  • 输出结果不变,只变速度:README 明确说明解锁前后输出逐位一致(bit-identical),改变的只是速度。
  • 写入速率选择器并执行 FLR:启动时写入 SS0 0x88888888(选择完整 BF16 速率)与 4 位 SS1 0x8(IMLA4),随后执行一次 FLR。它既不是 UEFI 应用,也不是打过补丁的 NVIDIA 驱动。
  • 打包进 initramfs:安装包会把模块与固件放进 initramfs,并针对 mkinitcpio、initramfs-tools、dracut 分别提供配置片段,安装时自动重建镜像。
  • 多发行版安装目标:提供 Arch、Debian/Ubuntu、Fedora/RHEL/CentOS 的安装目标,make install 会读取 /etc/os-release 自动选择。

怎么安装

前提条件:仅支持 Linux;需要能编译内核模块(安装目标会自动处理构建依赖);构建过程会通过 HTTPS 下载 NVIDIA/CachyOS 的输入文件,因此需要联网。README 未说明具体的语言或内核版本要求。

  1. 克隆仓库并执行安装(会要求输入 sudo 密码):
    git clone https://github.com/Zagitta/gpu-unlock
    cd gpu-unlock
    make install
  2. 也可以按发行版显式选择安装目标:
    make install        # detect the distribution and select an installer
    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

    RPM 安装器需要 DNF;其他发行版请选择兼容的显式目标。

  3. 在内核命令行追加 gpu_unlock.targets=all,并保留已有选项。GRUB(Debian/Ubuntu/Mint)需写入 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT,然后执行:
    sudo update-grub
  4. GRUB(Arch/CachyOS)同样编辑后执行:
    sudo grub-mkconfig -o /boot/grub/grub.cfg
  5. Fedora/RHEL 使用 grubby:
    sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all"
  6. systemd-boot 用户把该参数追加到启动项(boot entry)的 options 行,位置可用 bootctl status 查看。
  7. 使用 UKI 或自动生成启动项的用户,把参数写入 /etc/kernel/cmdline 并重新生成启动镜像,例如 mkinitcpio 场景:
    sudo mkinitcpio -P

只想构建而不安装时,可用 make arch、make deb、make rpm,Debian 与 RPM 包输出到 build/deb 与 build/rpm。NVIDIA 输入会缓存在 ~/.cache/gpu-unlock/inputs(make inputs,可用 INPUTS= 覆盖)。在 sbuild、pbuilder 这类干净 chroot 中构建时,需要把 GPU_UNLOCK_INPUTS 指向该缓存。

怎么使用

安装并添加内核参数后重启即可,没有额外的运行时命令。README 未提供单独的使用示例,最基本的「用法」就是上面安装流程中的两次操作:

make install
gpu_unlock.targets=all

进阶配置方面,笔记本用户需要注意:只有当独显不被完全断电时解锁才会保持,很多笔记本空闲时会关闭独显,从而静默重置解锁。可以在 /etc/modprobe.d/ 中关闭运行时电源管理:

options nvidia NVreg_DynamicPowerManagement=0x00

README 说明这「对部分型号有帮助,但结果可能参差不齐」。另外,mkinitcpio 场景下模块顺序由 /etc/mkinitcpio.conf.d/zz-gpu-unlock.conf 控制,把 gpu_unlock 插在 nvidia 之前;若镜像使用 -c 或预设的 _config 构建,mkinitcpio 会忽略 drop-in,需要自行在对应配置的 MODULES 中把 gpu_unlock 放在 nvidia 前面。

适用场景与注意事项

  • 适合:Linux 上使用 20/30/40 系列 GeForce 卡做 FP16/BF16/TF32 矩阵运算的开发者;希望不刷驱动、不刷 VBIOS 就获得提升的人。
  • 不适合:Windows 用户(作者不维护 Windows,README 提到第三方移植 Windows-GPU-UNLOCK,效果自负);RTX 50(Blackwell)不受支持,且作者认为「不太可能实现」。
  • 收益取决于负载:实际提升取决于工作负载中 FP16/BF16/TF32 矩阵运算的占比,以及显卡是否有足够功耗余量。README 特别指出 RTX 4090 在默认功耗限制下会先撞功耗墙,大 GEMM 的收益远低于峰值速率所暗示的水平。
  • 笔记本结果不稳定:独显被断电会重置解锁,如上文所述可用 NVreg_DynamicPowerManagement=0x00 尝试缓解。
  • 关于安全性:作者认为对显卡造成损害的可能性很低,解锁后 GPU 可能略微发热,但标准降频与功耗管理机制完全保留。
  • 驱动版本:虽然能看到 610.43.03 被固定,但作者说明驱动只是被拉取来提取解锁所需的固件,并不依赖特定驱动版本。
  • 来源辨识:作者声明没有网站、代币或安装器,市面上流传的 Windows 安装器需格外谨慎。
  • 许可证:仓库信息中未提供开源协议,README 也未说明,使用前请自行确认授权情况。

项目地址

仓库地址:https://github.com/Zagitta/gpu-unlock
作者/组织:Zagitta
Star 数:12372,Fork 数:1216,主语言 C,最近更新 2026-10-28。

这是一个针对 NVIDIA 消费级显卡张量算力限制的 Linux 内核模块方案,思路清晰、不修改驱动,但实际收益高度依赖具体负载与显卡功耗余量,笔记本与 Windows 场景需谨慎评估。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享