KV 缓存压到 2.26 比特性能不掉:腾讯把「压缩算法教科书」搬进了大模型推理

0 阅读1分钟

氛围图

💡 一句话总结:KV 缓存是长上下文推理的内存黑洞,传统量化压到 2 比特精度就崩。腾讯的 D-Quant 换了个思路:KV 的数值分布高度不均匀——大部分值挤在中间、很少的值在尾部——熵编码按「常见值短码、稀有值长码」分配位数,2.26 比特就能保住近 BF16 精度,内存降 7 倍、吞吐升 3.5 倍,还免校准。推理基建的教科书级工作。

导语:KV 缓存的两座大山

让模型读 10 万 token 的上下文,KV 缓存就要吃掉几十 GB 显存——容量是一座山;每生成一个 token 都要把整块 KV 从显存读一遍——带宽是另一座山。上下文越长,这两座山越压得推理服务喘不过气。

量化(把 KV 从 BF16 压到低位宽)是最实用的方案,但它有个数学天花板:b 比特只能表达 2^b 个值。8 比特有 256 级很富余,2 比特只剩 4 级——精度雪崩。

腾讯团队注意到一个被浪费的事实:KV 的数值分布极不均匀。旋转和归一化之后,值近似正态分布——绝大多数挤在中心,尾部只有零星几个。可固定宽度量化给「天天出现」和「百年一遇」的值分配同样的位数——这就像字典里给「的」和「魑魅魍魉」各分配一行。

想看原文?

它的思路是什么?

  • 📚 熵编码接管分配:压缩算法教科书里的经典答案——常见值给短码、稀有值给长码,平均码长直逼信息论下限。而且因为 KV 近正态分布,概率模型可以直接用标准正态——不用校准数据,部署零负担
  • 🧊 drift 容器:骗过 GPU 的定长执念:熵编码的输出是变长的,而 GPU 的注意力算子需要固定步长的内存访问。D-Quant 用漂移机制把每个 token 的码流装进固定大小的容器——空间换正则性,并行反量化照常跑
  • 🎛️ 位预算解耦:不再受「2 的幂」位宽和固定组大小约束,想压多狠、给多少预算,自由配置

效果到底怎么样?

  • 💾 2.26 比特/元素,性能近 BF16:跨模型、跨长上下文基准一致超越现有量化基线——压到传统方法崩盘的区间还能站稳
  • 📉 KV 内存最多降 7×:128K 上下文的显存账直接改写
  • ⚡ 解码吞吐升 3.5×:带宽是解码瓶颈,KV 变小直接换速度

为什么你要关心?

  • 💰 长上下文服务的成本公式变了:KV 内存降 7 倍意味着同样显存能服务更长的上下文、更大的 batch——单位 token 成本结构性下降
  • 📖 老算法 + 新场景 = 论文:熵编码是 1948 年香农时代的技术,「把经典工具搬进新硬件约束」是被低估的研究路线
  • 🔧 免校准是部署友好度天花板:不用校准集、不用重训练,新模型上线当天就能用

理性看待

冷静看三点:熵编解码本身有计算开销,编排解在 CPU/GPU 之间的协同调度是工程细节;定长容器会有一点点填充浪费;注意力 kernel 的定制集成有门槛,开箱即用还要等工程化。但它重新定义了 KV 压缩的位宽下限——原来 2 比特出头不是极限,是固定宽度思维的极限。