前言
Google于2026/03/25 04:00在推上介绍了自家最新的压缩算法TurboQuant,简单来说,该算法将LLM KV缓存减少为原来1/6,计算速度提升到原来8x以上,而且没有精度丢失!

关于KV cache看可以看看这篇文章从MHA、MQA、GQA到MLA
目前面临的问题
随着上下文不断膨胀,从 8K 到 128K 再到百万级,KV Cache 的内存占用也跟着线性膨胀。到了一定程度,GPU 的显存就不够用了,要么缩短上下文,要么加更多显卡。
这就是为什么之前对于 1M token 的上下文模型,比如说 Claude 的模型,它会在超过一定窗口之后,要收取更高价格。因为费卡啊!
所以 KV Cache 压缩,一直是业界的刚需。
传统方案
传统的做法是向量量化,把 32 位的浮点数压成更少的位数。但这里有个尴尬的地方:量化本身需要存储一些「校准常数」,这些常数得用全精度保存,每个数字额外占 1 到 2 bit。
而TurboQuant用两个改动把这个额外开销干到了零。PolarQuant + QJL
PolarQuant(极坐标量化)
传统量化在笛卡尔坐标系下工作,也就是我们熟悉的X、Y、Z轴。PolarQuant做了一件事:把向量从笛卡尔坐标系转换到极坐标系
谷歌团队发现,转换后角度的分布非常集中且可预测,根本不需要额外存储归一化常数。
就像把“往东走3个路口,往北走4个路口”压缩成”朝37度方向走5个路口”。
信息量不变,描述更紧凑,还省掉了坐标系本身的开销。
QJL(Quantized Johnson-Lindenstrauss)
关于JL,做一个扩展了解: Johnson-Lindenstrauss 引理(JL 引理) 是数学与计算机科学中关于高维数据降维的核心理论,它证明了:任意高维欧氏空间中的点集,可通过随机线性投影映射到低维空间,且几乎保持所有点对的距离。 核心数学表述 给定:任意 n 个点$ x1,…,xn∈Rd$(高维,d 很大) 失真容忍度$ ϵ∈(0,1)$ 则存在线性映射$ f:Rd→Rk$,其中$k=O(ϵ2logn)$使得对所有 i,j: $(1−ϵ)∥xi−xj∥2≤∥f(xi)−f(xj)∥2≤(1+ϵ)∥xi−xj∥2$
前面提到PolarQuant用来压缩数据同时保留关键信息,但是压缩之后总会有残余误差,所以QJL的思路是:用 Johnson-Lindenstrauss 变换来处理残余误差向量,然后把每个值压缩到……1 个 bit。
最终实现32bit → 3bit的压缩量化。
8倍加速
Google 的团队在五个长上下文基准测试上做了验证:LongBench、Needle In A Haystack(大海捞针)、ZeroSCROLLS、RULER、L-Eval,用的模型是开源的 Gemma 和 Mistral。
结果是:所有基准测试上,压缩后的模型和未压缩版本得分完全一致。
在 NVIDIA H100 GPU 上,4-bit 的 TurboQuant 在计算 attention logits 时比 32-bit 未量化的 key 快了 8 倍。
而在向量搜索任务上,TurboQuant 也打败了现有最好的方法(Product Quantization 和 RabbiQ),在 GloVe 数据集上的召回率更高,同时内存占用更少。