打破 Tensor 核心的性能限制
一系列开源项目揭示了 NVIDIA GeForce 显卡(RTX 20、30 和 40 系列)中存在刻意的软件限制,即在执行某些依赖 FP32 精度累加的计算操作时,Tensor 核心仅以其最大速度的一半运行。这一限制由 NVIDIA 通过软件手段施加,旨在将游戏显卡与专业工作站显卡区分开来,从而限制了显卡在人工智能模型训练和推理任务中的效率。
这些修改是如何工作的?
该倡议始于一位名为 Zagitta 的 GitHub 用户,他开发了一个名为 gpu-unlock 的 Linux 内核模块(Linux kernel module)。该工具在加载 NVIDIA 官方驱动程序之前运行,通过重写并重置显卡的频率选择寄存器来发挥作用。由于修改是在内核级别进行的,因此不需要修改 VBIOS 或对驱动程序进行永久性更改。
在 RTX 3090 Ti 显卡上的测试显示,矩阵处理性能显著提升,BF16 处理速度从 87.5 TFLOPS 提高到 157.4 TFLOPS,同时 TF32 性能几乎翻倍。这些解决方案也已适配其他代际,例如针对 RTX 40 系列的 gpu-unlock-ada 和针对 RTX 20 系列的 turing-unlock。
对用户而言,实际发生了什么变化?
- 性能提升:用户主要在图像生成(Image Generation)任务和模型微调(Fine-tuning)过程中受益,因为这些任务高度依赖 FP32-accumulate 计算。
- 对游戏的益处有限:玩家不会注意到任何性能差异,因为游戏并不依赖于这种针对 Tensor 核心的高强度计算操作。
- 聊天应用:文本生成速度(Token speed)不会有显著提升,因为这主要受限于内存带宽(Memory Bandwidth),而非原始计算能力。
重要注意事项与风险
尽管开发人员指出显卡的散热和功耗保护机制仍然有效,但也有警告称,让 Tensor 核心全速运行可能会导致高功耗,从而引发对硬件长期稳定性的担忧。此外,目前的支持几乎完全限于 Linux 环境,在 Windows 上的尝试非常有限。