2020 年底,英伟达先后发布了用于游戏的 RTX 30 系列显卡和用于专业计算的 RTX A6000。
很快有人注意到,虽然 RTX 30 系列和 RTX A6000 的核心都是 GA102 芯片,但相对于 RTX A6000,RTX 30 系列的混合精度模式的峰值吞吐被砍掉了一半。
英伟达的 GA102 架构技术白皮书里明确指出:RTX 3090 在 FP16 输入下,累加精度从 FP16 改为 FP32 时,稠密 Tensor Core 峰值吞吐从 142 TFLOPS 降为 71 TFLOPS,稀疏计算的对应吞吐也从 284 降为 142 TFLOPS。但是 RTX A6000 在这两种模式下都是 154.8 TFLOPS,保持不变。
混合精度模式常用于 AI 训练和推理中的矩阵乘法、全连接层和卷积,但对游戏性能影响较小。所以英伟达对 RTX 30 系列砍上一刀,确保游戏卡只用来打游戏,也是可以理解的。
之后有人对比分析了 RTX A6000 和 RTX 30 系列显卡,发现对混合精度模式的限制是通过熔丝 FUSE_SS_FMLA32 实现的,设为 1 就会限制,设为 0 就不限制。
你们还记得几个月前我在《用缓冲区溢出漏洞把矿卡变成 A100》(网页链接)中提到的矿卡 CMP 17HX 吗?那也是这样被限制的。
于是,硬件社区基于之前对 CMP 17HX 的破解研究,终于也实现了对 RTX 30 系列卡的性能解锁:github.com/Zagitta/gpu-unlock。这个项目同样使用 SEC2 Booter 签名 DMA 溢出漏洞,把 RTX 30 系列显卡的混合精度的吞吐性能恢复到了全速。
在对 RTX 3090 Ti 的性能测试中,解锁前后都采用 450W 功耗上限,做大矩阵乘法并使用 FP32 累加:BF16 输入的算力从 87.50 提高到 157.41 TFLOPS,增加约 80%;TF32 从 42.58 提高到 82.61 TFLOPS,增加约 94%;FP16 也增加了约 35%。
考虑到本来 RTX 3090 就能改成 48G,现在又解锁了性能,就很接近 RTX A6000了。
不过,对于模型推理来说,单并发解码性能的瓶颈是显存的速度,所以 RTX 30 系列显卡即使解锁了性能,在单并发下解码的 tok/s 能也没太大变化,但预填充和多并发的总吞吐则能有约 30% 的提升。
