开源项目 gpu-unlock 解锁 RTX 20/30/40 系列显卡的 AI 算力限制
Modders unlock hidden AI power on Nvidia RTX 20, 30, and 40 series GPUs, nearly doubling some benchmarks
GitHub 用户 Zagitta 发布 gpu-unlock,在 Nvidia 驱动加载前改写 GPU 的速度选择寄存器,解除 GeForce 显卡 FP32 累加张量运算的半速限制,无需刷 VBIOS 或改驱动。在 450W 的 RTX 3090 Ti 上,BF16 吞吐从 87.5 提升到 157.4 TFLOPS,TF32 接近翻倍,FP16 提升 35%;适配 Ada 的 gpu-unlock-ada 把 RTX 4090 的 FP16 指令速率从 165.6 提到 331.6 TFLOPS,但独立测试者实测真实矩阵负载增益为 12% 到 34%。turing-unlock 面向 RTX 2080 Ti,FP16 矩阵运算快 36% 到 64%。目前主要支持 Linux,游戏和聊天机器人 token 速度基本不受影响,提示词处理快 14% 到 36%,图像生成和微调受益最大。
正文 · AI 翻译
发声:一块二手的 RTX 3090 已成为在家运行 AI 模型的首选显卡,主要是因为 24GB 显存在游戏卡上的价格远低于工作站卡。不过,这个便宜是有代价的,而且 Nvidia 在自己的规格表中就写明了这一点。在 GeForce 显卡上,最常见的一类 AI 数学运算只能以恰好一半的速度运行。如今已有几个开源项目声称能在 RTX 20、30 和 40 系列显卡上解除这一限制。
这一限制存在于张量核心中。当它们相乘 FP16 或 BF16 数值并以更高精度的 FP32 累加结果时,GeForce 显卡执行这些指令的速率只有 FP16 累加模式的一半。而 FP32 模式正是大多数训练以及大量推理实际依赖的模式。Nvidia 基于相同芯片打造的工作站卡——例如 RTX A6000——则以全速运行该模式。
第一个修复方案来自 GitHub 用户 Zagitta,他为 RTX 30 系列显卡发布了“gpu-unlock”。这是一个 Linux 内核模块,会在 Nvidia 驱动加载之前介入。此时它会改写 GPU 上的两个速度选择寄存器并重置显卡。随后 Nvidia 的常规驱动照常接管,因此无需刷写 VBIOS,也无需修改驱动。
在一块功耗上限为 450W 的 RTX 3090 Ti 上,开发者的矩阵乘法测试显示 BF16 吞吐量从 87.5 提升到 157.4 TFLOPS。TF32 也几乎翻倍。FP16 的增益较小,为 35%。
此后,其他开发者将该模块适配到了其余两代产品。一个名为 gpu-unlock-ada 的版本将 RTX 4090 的 FP16 指令速率从 165.6 翻倍至 331.6 TFLOPS。不过这只是一个原始发射速率——README 对此直言不讳——因此在一张由独立用户测试的显卡上,真实矩阵工作负载的增益较小,为 12% 到 34%。
在较老的一侧,turing-unlock 面向 RTX 2080 Ti,并在一张深受预算型 AI 玩家欢迎的 22GB 显存改装卡上进行了测试。其开发者测得 FP16 矩阵数学运算快了 36% 到 64%,具体取决于矩阵大小。BF16 在此并不适用,因为 Turing 从未具备支持它的硬件。
遗憾的是,游戏玩家并不会真正察觉到任何差异,因为游戏几乎不会涉及这类数学运算。聊天机器人的 token 速度也几乎不变,主要是因为生成文本受限于显存带宽而非原始算力。不过据报道,提示词处理速度提升了 14% 到 36%。图像生成和微调应该受益最大,因为两者都严重依赖 FP32 累加的张量数学运算。
目前,除少数在特定硬件上验证过的实验性 Windows 移植版外,支持范围基本仅限于 Linux。
Zagitta 认为硬件损坏的可能性非常小,并指出显卡通常的降频和电源管理机制仍然有效。turing-unlock 的 README 则更为谨慎,警告称张量核心功耗很高,满负荷运行可能会损坏硬件。