跳到主内容
@wquguru
精选90r/LocalLLaMA(Reddit)技巧与观点

解析NVIDIA消费级GPU性能限制及Blackwell无法解锁原因

GPU unlocks (FP32 accumulation): Why can it be unlocked on Turing (RTX 20), Ampere (RTX 30) and Ada (RTX 40) but no consumer Blackwell (RTX 50) and some misconceptions.

原文
发到 X
推荐理由

本地部署玩家必读,彻底讲清了消费卡AI算力被阉割的原理以及为何RTX 50系列暂时无法像前代那样解锁,技术细节扎实。

Hello guys, hoping you're doing fine. Wall of text next I know, but I want to get this info out of my chest, all hand written lol.

大家好,希望你们一切都好。接下来是一大段文字,我知道,但我想把这些信息从心里掏出来,全是手写的哈哈。

I wanted to make this post explaining some things about GPU unlocks that have been going on lately.

我想发这篇帖子,解释一下最近一直在进行的 GPU 解锁的一些事情。

What are these GPU unlocks doing?

这些 GPU 解锁在做什么?

NVIDIA on purpose neuters tensor core performance when using FP32 accumulation (FP16, BF16, FP8 and TF32 inputs accumulating in FP32, which is what most AI/LLM/ML tasks use), for market segmentation. Normal FP32 on the CUDA cores (no tensor cores) is NOT affected.

NVIDIA 出于市场细分的目的,故意削弱了在使用 FP32 累加(FP16、BF16、FP8 和 TF32 输入累加到 FP32,这也是大多数 AI/LLM/ML 任务所使用的)时张量核心的性能。CUDA 核心上的普通 FP32(无张量核心)不受影响。

Consumer and prosumer GPUs use the exact same die (like GB202 between the 5090 and 6000 PRO, AD102 between the 4090 and 6000 Ada, or even literally 1:1 with the 3090 Ti vs A6000, both with the same core amounts and 84 SMs).

消费级和专业级 GPU 使用完全相同的芯片(例如 5090 和 6000 PRO 之间的 GB202,4090 和 6000 Ada 之间的 AD102,或者甚至与 3090 Ti 和 A6000 完全 1:1 对应,两者具有相同的核心数量和 84 个 SM)。

How it works: the speed of each kind of tensor operation is set by fuses burned at the factory. On consumer cards, the fuse for "FP16/BF16 with FP32 accumulation" says HALF_SPEED, on the pro cards it says FULL_SPEED. These fuses don't cut any circuit, the GPU just reads them at boot and runs at that speed. The GPU also has an override register that can set them back to FULL_SPEED, but it's locked so only NVIDIA's most privileged firmware can write to it, not your PC.

工作原理:每种张量操作的速度由工厂烧录的熔丝设定。在消费级显卡上,“FP16/BF16 带 FP32 累加”的熔丝设置为 HALF_SPEED(半速),而在专业卡上则设置为 FULL_SPEED(全速)。这些熔丝不会切断任何电路,GPU 只是在启动时读取它们并以该速度运行。GPU 还有一个覆盖寄存器,可以将其恢复为 FULL_SPEED,但该寄存器被锁定,只有 NVIDIA 最高权限的固件才能写入它,而不是你的 PC。

The unlocks open that lock and write FULL_SPEED on the override. With that, the consumer cards gain all the neutered performance imposed by NVIDIA. It doesn't give you more SMs, VRAM or anything like that, a 4090 is still a 4090, it just runs those instructions at the same rate a pro card does.

解锁操作会打开这个锁并在覆盖寄存器中写入 FULL_SPEED。这样一来,消费级显卡就获得了 NVIDIA 强加的所有限制性能。它不会给你更多的 SM、VRAM 或类似的东西,4090 仍然是 4090,它只是以与专业卡相同的速率运行这些指令。

Why can Turing, Ampere and Ada be unlocked? And what is unlocked on these cards?

为什么 Turing、Ampere 和 Ada 可以被解锁?在这些卡上解锁了什么?

On these generations, the NVIDIA driver itself loads a small NVIDIA-signed firmware called the "Booter" onto a security microcontroller inside the GPU (SEC2, a "Falcon"), to start the GSP. The Booter runs in the highest privilege mode of the GPU (Heavy Secure, HS), which is exactly the one allowed to open the lock.

在这些架构世代中,NVIDIA 驱动程序本身会将一个小型的 NVIDIA 签名的固件称为“Booter”加载到 GPU 内部的 security microcontroller(SEC2,一个“Falcon”)上,以启动 GSP。Booter 在 GPU 的最高特权模式(Heavy Secure, HS)下运行,这正是允许打开锁的模式。

In June 2026, Jon Pry published a paper ("A Canary in the Crypto Mine") showing that the Booter of the newer drivers has a buffer overflow: it copies its "signature" data using a length that you control, so you can overflow its stack (including the stack canary that is supposed to stop exactly this) and take control of the Booter while it is running in HS mode. The signature check still passes, because it is NVIDIA's own signed code running, the bug is inside it.

2026 年 6 月,Jon Pry 发表了一篇论文(《矿坑中的金丝雀》),显示较新驱动程序的 Booter 存在缓冲区溢出漏洞:它使用你控制的长度来复制其“签名”数据,因此你可以溢出它的栈(包括旨在阻止这种情况的栈保护哨兵),并在 Booter 以 HS 模式运行时夺取控制权。签名检查仍然通过,因为这是 NVIDIA 自己的签名代码在运行,漏洞就在其中。

With that, the unlock reuses instructions from NVIDIA's own Booter to open the lock, writes FULL_SPEED on the override, resets the card and lets the normal NVIDIA driver load. The unlock survives resets and driver reloads, but it's lost when you power off, which is why it runs on every boot before the NVIDIA driver loads.

至此,解锁过程复用了 NVIDIA 自身 Booter 中的指令来打开锁,在覆盖寄存器中写入 FULL_SPEED,重置显卡并让正常的 NVIDIA 驱动程序加载。该解锁状态在重置和驱动重载后依然保留,但在断电时会丢失,因此它会在每次启动时、NVIDIA 驱动程序加载之前运行。

This was first done on mining cards (CMP 170HX: FP32 from 1/32 to full speed, and 10GB to 80GB of VRAM), and then ported to GeForce:

这一操作最初是在挖矿卡上完成的(CMP 170HX:FP32 性能从 1/32 提升至全速,显存从 10GB 扩容至 80GB),随后移植到了 GeForce 系列:

  • Turing: https://github.com/haohervchb/Turing-unlock (UEFI, Linux)
  • Ampere: https://github.com/Zagitta/gpu-unlock (Linux kernel module)
  • Ada: https://github.com/JustAResearcher/gpu-unlock-ada (Linux with kernel module)

What gets unlocked:

解锁的内容包括:

  • FP16 with FP32 accumulation (Turing, Ampere, Ada)
  • BF16 with FP32 accumulation (Ampere, Ada; Turing has no BF16)
  • TF32 (Ampere, Ada)
  • FP8 with FP32 accumulation (Ada; Turing and Ampere have no FP8)
  • 带 FP32 累加的 FP16(Turing, Ampere, Ada)
  • 带 FP32 累加的 BF16(Ampere, Ada;Turing 不支持 BF16)
  • TF32(Ampere, Ada)
  • 带 FP32 累加的 FP8(Ada;Turing 和 Ampere 不支持 FP8)

Some numbers from those repos: 4090 FP16/BF16 with FP32 acc goes from 165 to 331 TFLOPS (raw instruction rate), 3090 Ti BF16 GEMM from 87 to 157 TFLOPS, 2080 Ti FP16 with FP32 acc from 47 to 94 TFLOPS. Real-world GEMMs gain less than 2x because the cards then hit their power limit (more on that below).

来自上述仓库的一些数据:4090 的 FP16/BF16 配合 FP32 累加,原始指令速率从 165 TFLOPS 提升至 331 TFLOPS;3090 Ti 的 BF16 GEMM 从 87 TFLOPS 提升至 157 TFLOPS;2080 Ti 的 FP16 配合 FP32 累加从 47 TFLOPS 提升至 94 TFLOPS。实际 GEMM 性能提升不到 2 倍,因为此时显卡会触及功耗限制(详见下文)。

Why can't consumer Blackwell be unlocked?

为什么消费级 Blackwell 无法解锁?

The funny part is that on Blackwell the limitation is EXACTLY the same thing: same fuses, same override registers. I checked on my own cards: the 5090/5080/5070 Ti have the FP32 accumulation fuses set, and the 6000 PRO/4000 PRO don't. So it's not a hardware difference there either.

有趣的是,Blackwell 上的限制完全相同:相同的熔丝、相同的覆盖寄存器。我检查了自己的显卡:5090/5080/5070 Ti 设置了 FP32 累加熔丝,而 6000 PRO/4000 PRO 没有设置。因此这里也不是硬件差异导致的。

What changed is the door. Starting with Hopper, and consumer Blackwell too, the root of trust of the GPU is the FSP (Foundation Security Processor), a RISC-V core that boots from its own ROM as soon as the GPU powers on, before the driver even loads. On Blackwell:

发生变化的是“门”。从 Hopper 开始,以及消费级 Blackwell 也是如此,GPU 的信任根是 FSP(Foundation Security Processor,基础安全处理器),这是一个 RISC-V 核心,在 GPU 通电后立即从其自身的 ROM 启动,甚至在驱动程序加载之前。在 Blackwell 上:

  • There's no Booter to abuse. The driver just sends the FSP a message with a hash + RSA-3K signature of the next firmware, and the FSP verifies and boots it. The Linux kernel docs literally say: "There is no SEC2 involvement, no Booter ucode, and no FWSEC-FRTS stage". I also checked it myself: in NVIDIA's 615 driver source the Booter only exists for Turing, Ampere and Ada (TU102, TU116, GA100, GA102, AD102), and the RTX 50 VBIOSes don't carry the Falcon firmware (FWSEC) that older cards did.
  • The firmware the driver ships for Blackwell is encrypted, and the debug and production images are the exact same encrypted bytes. The Ada payload was built from analysis of the decrypted debug Booter, on Blackwell there's no such shortcut.
  • NVIDIA has said it uses SPARK (a formally verifiable programming language) to prove its most critical RISC-V firmware free of runtime errors, and a buffer overflow like the one used on the older cards is exactly that kind of error.
  • 没有可供利用的 Booter。驱动程序只是向 FSP 发送一条消息,包含下一个固件的哈希值和 RSA-3K 签名,由 FSP 进行验证并启动。Linux 内核文档明确指出:“没有 SEC2 参与,没有 Booter ucode,也没有 FWSEC-FRTS 阶段。”我自己也进行了检查:在 NVIDIA 615 驱动程序的源代码中,Booter 仅存在于 Turing、Ampere 和 Ada 架构中(TU102, TU116, GA100, GA102, AD102),而 RTX 50 系列的 VBIOS 并不携带旧款显卡所具有的 Falcon 固件(FWSEC)。
  • 驱动程序为Blackwell提供的固件是加密的,调试版本和生产版本的镜像包含完全相同的加密字节。Ada的有效载荷是基于对解密后的调试Booter的分析构建的,而在Blackwell上则没有这种捷径。
  • NVIDIA表示它使用SPARK(一种形式化验证编程语言)来证明其最关键RISC-V固件不存在运行时错误,而像旧显卡上使用的那种缓冲区溢出正是这类错误。

So, with what is known today, it can't be done. It isn't "impossible forever", but someone would need a brand new vulnerability in a way harder target. And if someone ever gets there, the unlock itself would very likely be the same couple of register writes.

因此,基于目前所知的情况,这是做不到的。这并非“永远不可能”,但有人需要在一个更难的目标中找到全新的漏洞。而且如果有人真的做到了,解锁本身很可能也只是那几行寄存器写入操作。

FP4 is not affected, but all the rest is (FP16/BF16/FP8/TF32 with FP32 accumulation).

FP4不受影响,但其余所有格式都受影响(包括带有FP32累加的FP16/BF16/FP8/TF32)。

In which tasks is the unlock has most of the effect?

在哪些任务中,解锁效果最显著?

I will put some examples on my 6000 PRO vs 5090s, former using 400W and latter 600W, at how much is the impact in performance because the NVIDIA neutering.

我将以我的6000 PRO与5090为例,前者功耗400W,后者600W,展示由于NVIDIA的限制措施对性能造成的具体影响。

  • Training: Like LoRAs, finetuning, etc.
  • Example: Using the same batch size for 25GB VRAM to train a diffusion LoRA, my 6000 PRO is 70-90% faster than my 5090.
  • Diffusion: Models that do txt2img, txt2vid, img2img, img2vid, txt2aud, etc.
  • Example: My 6000 PRO not using fp16 accumulation is about 30-40% faster than my 5090. If using fp16 accumulation, it is 15% faster.
  • Prefill on LLMs: Heavily affected as well, since even when a model is marked as "int8" or "mixed precision" etc, the inference parts that the GPU uses include FP32 accumulation parts, except if explicitly set to not use them.
  • Example: My 6000 PRO on vLLM on a model that fits on a 5090 as well, it's 50-70% faster. On llamacpp, instead is about 30-40% faster.
  • TG with big batching: TG with a single batch is mostly bandwidth bound, and it uses FP32 acc instructions, but since it is so little in comparison with the need of bandwidth, it isn't a limitation. On the other hand, when you use batches with batch size 2, 4, 8, etc, compute again starts to being a bottleneck and then you have a performance impact.
  • Example: Same results as previous point.
  • 训练:如LoRA、微调等。
  • 示例:在使用相同批次大小且显存占用25GB的情况下训练扩散模型LoRA,我的6000 PRO比我的5090快70-90%。
  • 扩散模型:涉及文生图、文生视频、图生图、图生视频、文生音频等的模型。
  • 示例:我的6000 PRO在不使用fp16累加的情况下,比我的5090快约30-40%。如果使用fp16累加,则快15%。
  • LLM的前向填充(Prefill):也深受影响,因为即使模型标记为“int8”或“混合精度”等,GPU使用的推理部分仍包含FP32累加部分,除非明确设置不使用它们。
  • 示例:在vLLM上运行一个同样能在5090上运行的模型时,我的6000 PRO快50-70%。而在llamacpp上,则快约30-40%。
  • 大批次下的张量生成(TG):单批次的TG主要受带宽限制,并使用FP32累加指令,但由于相对于带宽需求而言这部分计算量极小,因此不构成瓶颈。另一方面,当使用批次大小为2、4、8等的批次时,计算再次成为瓶颈,从而产生性能影响。
  • 示例:结果与上一要点相同。

In which tasks the unlocks makes no difference:

在哪些任务中,解锁没有任何区别:

  • TG with batch size 1: almost entirely bandwidth bound.
  • CUDA compute without tensor cores (normal FP32).
  • INT4/INT8 tensor operations.
  • FP4 on Blackwell (not neutered to begin with).
  • GEMM operations with FP16 accumulation instead, but those aren't very used.
  • Gaming.
  • 批次大小为1的TG:几乎完全受带宽限制。
  • 不使用张量核心的CUDA计算(普通FP32)。
  • INT4/INT8张量运算。
  • Blackwell上的FP4(本身未被削弱)。
  • 改用FP16累加的GEMM运算,但这些并不常用。
  • 游戏。

Is there a risk by unlocking the cards, like burning the card, crashes, etc? Short answer: NO.

解锁显卡是否存在风险,比如烧毁显卡、崩溃等?简短回答:没有。

And again, NO. For the love of god guys, stop repeating this nonsense.

再次强调,没有。看在上帝的份上,大家别再重复这种无稽之谈了。

The cards are still limited by their max power limit. They won't magically use 200% of your power budget with an unlock, they will just use the cores more efficiently.

显卡仍然受限于其最大功耗限制。解锁并不会让显卡神奇地消耗超出你电源预算 200% 的电量,它只是会更高效地利用核心资源。

Let me explain: if you have a 3090 power limited at 300W, and without the unlock you were seeing only 250W in use, but after the unlock it uses 300W, it's not because the unlock did malicious things to your card. It's because the card can NOW stretch its legs and use the power to do more work. Real example from the Ada repo: an unlocked 4090 doing the same GEMMs peaked at 346W vs 313W stock, still under its 450W limit.

让我解释一下:假设你有一张功耗限制在 300W 的 RTX 3090,在未解锁时你只看到 250W 被使用,而解锁后它使用了 300W,这并不是因为解锁对显卡做了什么恶意操作。而是因为显卡现在能够“舒展手脚”,利用更多的电力来执行更多工作。来自 Ada 仓库的真实案例:一张解锁后的 RTX 4090 在执行相同的 GEMM 运算时,峰值功耗为 346W,而默认状态下为 313W,仍低于其 450W 的限制。

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

关联信息,但可能不是同一事件