扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

Google 6倍压缩KV缓存还不损失精度的原理是什么?

03/30 09:29
223
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

兄弟们,大模型上下文窗口越做越大,几十万token随便整,但你跑的时候是不是经常遇到两个问题:

要么直接OOM显存炸了,要么就是能跑但慢得像蜗牛,半天出一个token?

其实这锅得KV缓存背。

今天咱们聊的Google新出的 TurboQuant,直接从数学根子上把这问题给解决了。

1. 先说结论:这算法真的牛

平均6倍KV显存压缩,原来装不下的长上下文现在直接能跑

8倍注意力计算加速,推理延迟直接砍没了

零精度损失,"大海捞针"测试100%召回率,跟没压缩一样

即插即用,不需要训练,不需要校准,任何Transformer模型直接用

就问你香不香?

2. 先搞懂:KV缓存到底为什么这么费显存?

玩过Transformer的都知道,自注意力机制里,每来一个token,都得算出来对应的 Key 和 Value 两个高维向量,存在显存里供后面用。

这么设计本来是为了快 —— 不然你每次都重算所有历史token,复杂度直接从 O(n) 干回 O(n²),那更慢。

但是现在问题来了,上下文窗口干到几十万token了:

1. 显存直接炸了:KV缓存占了70%以上的GPU显存,一不小心就OOM给你看

2. 速度直接跪了:长序列推理瓶颈根本不是算力,是显存带宽,你KV频繁读写直接把带宽耗干了,延迟不飙升才怪

3. 那之前的量化方案为啥不行?

行业早就想到用压缩量化解决问题啊,把高精度浮点数压成低比特整数不就行了?

但是传统方案有两个解决不了的悖论:

第一个悖论:误差累积

传统量化把高精度转低比特,肯定有误差啊。这误差还会随着序列长度不断累积,到最后注意力算出来全是错的,幻觉、上下文乱串、"大海捞针"直接凉了,召回率暴跌。

第二个悖论:元数据抵消收益

你压缩完了,总得存点参数用来解压吧?scale、zero-point这些元数据,每个数据块都得存,算下来反而多了1-2bit/元素的额外开销。

结果就是:压缩完显存反而更大了

玩呢?

所以行业一直追求的「极致压缩+零精度损失+无额外开销」,这就是个不可能三角。

直到Google搞出来TurboQuant。

4. 硬核拆解:TurboQuant两阶段怎么玩的?

TurboQuant思路非常清晰:主体极致压缩 + 残差无偏校正,两阶段各司其职,直接闭环。

第一阶段:PolarQuant极坐标量化,干掉元数据开销

这一步是TurboQuant最核心的创新,直接换了个坐标系思考问题

传统量化都用笛卡尔坐标系,每个分量分布都不一样,你不给每个向量单独存量化参数根本不行,这就是元数据开销的来源。

PolarQuant怎么干的?

把K/V向量转成极坐标表示

半径r:就是向量的L2模长,承载了向量的核心能量

角度参数:决定向量在高维空间的方向

然后关键来了:随机正交旋转

不管你原来是什么分布,转完之后角度分量都会收敛到同一个固定分布。

这是高维几何的统计规律,不是猜的,数学上证明了。

那这意味着什么?

所有向量都用同一套全局量化网格就行,不需要每个单独存参数了

逐块元数据开销直接消失了!

完整流程四步走:

1. 随机正交旋转:让角度分布收敛到可预测的固定分布

2. 坐标转换:笛卡尔转极坐标,分解出半径和角度

3. 半径量化:半径承载核心能量,用2-3bit全局量化就行,不需要逐块缩放因子

4. 角度量化:直接映射到预定义好的全局网格,1-2bit/维度就搞定,完全没额外开销

就这一步,直接把传统量化最大的一块开销给抹掉了,压缩收益真的落地了。

第二阶段:1-bit QJL变换,彻底解决误差累积

PolarQuant已经把误差压得很低了,但多少还有点残差对吧?不处理的话,累积起来还是会出事。

TurboQuant第二招更绝:用1-bit量化做残差的无偏校正

核心保证:压缩完的K/V向量,和Query做点积,结果的统计期望跟原始高精度版本完全一样。

说白了就是:期望不差,模型精度就不差,数学上给你兜住底。

它怎么做到的?

用了Johnson-Lindenstrauss引理,这玩意简单说就是:随机投影能保持向量之间的相对关系不变。

实现三步:

1. 先生成一个全局固定的随机符号矩阵R,每个元素要么+1要么-1,概率各50%

2. 残差向量乘这个矩阵,只保留符号位得到ê,就压缩成了1-bit

3. 数学证明了:这个ê就是原始残差的零偏估计器,期望完全一致,没有系统性偏差

优势太明显了:

就1bit/元素,额外开销极小

矩阵R全局固定,推理直接用,没逐块元数据

彻底消灭误差累积,长上下文精度跟原版一模一样

5. TurboQuant到底牛在哪几个点?

1️⃣ 真正的即插即用

所有参数都是全局固定的,基于通用数学规律,不需要针对模型微调校准,也不需要训练数据,拿过来直接用,任何Transformer架构通吃。

Llama、Mistral、Gemma、Qwen,不管开源闭源,直接适配。

2️⃣ 理论保证真无损

传统量化误差是有偏累积的,TurboQuant两阶段闭环:第一阶段最小化误差+消元开销,第二阶段无偏残差校正。

实测:6倍压缩率下,大海捞针测试100%召回率,跟没压缩一模一样。

3️⃣ 真真实实提性能

为啥能快8倍?

两个原因:

显存带宽压力降了6倍,读写数据少了,自然不卡了

低比特整数运算能跑满GPU张量核心,算力利用率上去了

6. 跟传统量化比,到底强在哪?

核心特性 传统线性量化/乘积量化(PQ) TurboQuant
量化坐标体系 笛卡尔坐标系 极坐标体系+随机投影
元数据开销 极高,需逐块存储scale/zero-point,1-2bit/元素 极低,仅需全局固定参数,无逐块元数据
量化误差特性 有偏误差,随序列长度累积,易导致精度下降 无偏误差,两阶段设计保证注意力计算统计等价,无累积效应
训练/数据依赖 多数需要校准/微调训练,强数据相关 完全训练无关、数据无关,即插即用
实际压缩收益 元数据抵消大部分收益,长序列下收益骤降 平均6倍以上压缩率,收益完全落地,长序列下表现稳定

7. 最后唠两句:这个方向真的值得关注

现在大模型都在拼上下文窗口,从几万到几十万甚至上百万,但拼到最后你会发现:显存带宽才是真瓶颈

TurboQuant厉害就厉害在,它不是工程trick,是从数学底层重新思考了量化问题,换坐标系直接把老问题给干没了。

而且纯软件实现,训练无关,即插即用,这意味着你现在就能拿去给自己的模型用上,不需要任何额外成本。

以后同样的GPU,能跑更大的模型更长的上下文了,体验只会越来越好。

谷歌

谷歌

谷歌公司(Google Inc.)成立于1998年9月4日,由拉里·佩奇和谢尔盖·布林共同创建,被公认为全球最大的搜索引擎公司。谷歌是一家位于美国的跨国科技企业,业务包括互联网搜索、云计算、广告技术等,同时开发并提供大量基于互联网的产品与服务,其主要利润来自于关键词广告等服务。

谷歌公司(Google Inc.)成立于1998年9月4日,由拉里·佩奇和谢尔盖·布林共同创建,被公认为全球最大的搜索引擎公司。谷歌是一家位于美国的跨国科技企业,业务包括互联网搜索、云计算、广告技术等,同时开发并提供大量基于互联网的产品与服务,其主要利润来自于关键词广告等服务。收起

查看更多

相关推荐