Google 的 TurboQuant 算法如何让AI更省内存?搞定向量量化难题


想象一下: 你手机里存了1000张照片,现在想让AI帮你快速找到"和猫咪有关的那几张"。

AI不是一张张看,而是把每张照片变成一串数字(这串数字就是"向量"),然后通过比较这些数字串来找到最相似的照片。

这个把照片变成数字串的过程,就叫向量量化——本质上就是把海量复杂的数据压缩成精简的数字表示,同时尽量保留原始信息的核心特征。


一、为什么这件事很重要?

现在的AI模型越来越强大,但代价是——太吃资源了,具体来说,就是显存和内存,这里统一就只当是内存了。

拿现在火热的Qwen、Claude这些大语言模型来说,它们回答你问题时,需要把之前对话的所有内容都记在脑子里(这就是KV缓存)。

你聊得越长,模型要记的东西就越多,内存占用就越大。等到上下文长到一定程度,内存直接爆掉。

那如果是多模态模型,就要处理的不止是处理文字,还要处理图片、视频。这些数据全部加起来,规模惊人。

所以问题来了:能不能把AI需要用的数据压缩一下,让它在尽量不太"变笨"的前提下,少占点内存?

这就是向量量化要解决的问题。


二、压缩的代价:失真

压缩嘛,总会有代价的。最常见的问题就是失真——本来想说"这只猫很可爱",结果压缩后变成了"这只哺乳动物还行"。意思差不多,但总感觉哪里不对。

对于AI来说,失真可能会导致:

  • 搜索结果不准确(找猫咪,结果给你推了狗)
  • 生成内容质量下降(回答变得含糊不清)
  • 关键信息被"误解"

所以压缩的关键指标有两个:

  1. 失真要小——压缩前后的向量要足够接近
  2. 内积要准——向量之间的比较结果要靠谱(这直接影响搜索质量)

之前的方法,要么压缩效果好但太慢(不适合实时AI),要么速度快但失真严重(效果差)。这是个两难的选择。


三、TurboQuant的思路

Google等机构的研究人员提出了TurboQuant,核心想法很巧妙:

第一步:随机旋转

把向量想象成一个高维空间里的点。研究人员先把这个点随机转一转——这一步看似简单,其实是为了让向量坐标的分布变得"规矩"。

在高维空间里,一个随机方向的向量,经过旋转后,每个坐标的数值分布会呈现出一种很规律的形态(数学上叫Beta分布)。这就给后续处理创造了有利条件。

第二步:独立量化

旋转之后,研究人员发现了一件神奇的事:不同坐标之间几乎互不干扰

你可以理解为:把这个点拆成多个方向的分量后,每个分量的行为是独立的,不需要放在一起考虑。这样就可以对每个坐标单独处理,大幅简化了计算。

于是TurboQuant对每个坐标独立进行最优量化——就像把一个复杂问题拆成1000个简单问题,每个只用1个比特来表示。

第三步:残差补偿

这里有个细节:单纯用MSE(均方误差)优化的量化器,在算内积时会有偏差。就像你量身高164cm,压缩后再还原,可能变成163.5cm——单个数字看起来差不多,但两个身高差了不到1cm,还原后这个差可能又变成0.8cm了,这就影响比较结果。

TurboQuant用了两阶段方案:先用标准方法压缩,对残差再用1比特的特殊方法处理一下,最终得到既省内存、又保证内积计算准确的结果。


四、效果怎么样?

研究人员做了大量实验验证:

大海捞针测试

这是一个经典的AI测试,用一个大模型,比如Llama-3.1-8B-Instruct,10万字的文章里,看AI能不能找出来藏起来的某句话。

图4: Llama-3.1-8B-Instruct模型在"大海捞针"测试上的评估,该测试要求模型从长上下文序列中检索隐藏的句子。尽管某些方法在召回率上表现不佳,但TurboQuant尽管经过超过4倍的量化压缩,仍能达到与未压缩基线完全相同的性能。

SnapKVPyramidKVKIVIPolarQuantFull-PrecisionTurboQuant

解读: 上图展示了六种不同方法的表现对比。可以看到TurboQuant(红色曲线)和Full-Precision(原始模型,绿色)几乎完全重叠——压缩了4倍多,效果居然一样好!

得分对比:

方法 得分
SnapKV 0.858
PyramidKV 0.895
KIVI 0.981
PolarQuant 0.995
Full-Precision 0.997
TurboQuant 0.997

理论验证:为什么TurboQuant这么稳?

为了让技术社区信服,研究人员首先做了理论分析,然后用实验验证。

图1: TurboQuant_prod和TurboQuant_mse在内积估计中的误差分布。

(a) TurboQuant_prod

Figure 1a

Figure 1a

(b) TurboQuant_mse

Figure 1b

Figure 1b

解读:

  • (a) TurboQuant_prod 的误差分布以0为中心,完全对称,说明它的估计是"无偏"的
  • (b) TurboQuant_mse 的误差分布明显偏向一边,意味着它的内积估计有"内在偏差"

图2: TurboQuant_prod的内积误差方差保持恒定,而TurboQuant_mse的方差随平均内积增加而增加。比特宽度为b=2。

(a) TurboQuant_prod

Figure 2a

Figure 2a

(b) TurboQuant_mse

Figure 2b

Figure 2b

解读:

  • (a) TurboQuant_prod 的误差方差恒定,稳定可靠
  • (b) TurboQuant_mse 的误差方差随内积增大而急剧上升

这就是为什么需要两阶段方案:TurboQuant_MSE虽然简单高效,但用它做内积估计会有偏差。添加QJL处理后,偏差被消除了。


图3: 不同比特宽度下,内积误差和MSE与理论界的对比。

(a) inner-prod error

Figure 3a

Figure 3a

(b) MSE

Figure 3b

Figure 3b

解读:

  • (a) 内积误差:TurboQuant(蓝色)紧贴理论下界
  • (b) MSE:TurboQuant同样接近理论最优

这解释了为什么TurboQuant效果好——它有严格的数学证明支撑,不是靠运气。

真实任务测试

在LongBench这种综合 benchmark 上,TurboQuant 表现同样亮眼:

方法 KV大小(比特) 综合得分
Full Cache (原始) 16 50.06
KIVI 3 48.50
KIVI 5 50.16
PolarQuant 3.9 49.78
TurboQuant 2.5 49.44
TurboQuant 3.5 50.06

关键解读:

  • 用2.5比特(压缩了6倍多),得分49.44,和KIVI的5比特版本相当
  • 用3.5比特,得分50.06,和原始16比特完全一样——完美!
  • Ministeral模型上,用2.5比特甚至拿到了49.62分,比原始的49.89分还略高(误差范围内)

搜索速度对比

在最近邻搜索任务中,TurboQuant的优势更明显:

方法 200维 1536维 3072维
乘积量化 (PQ) 37秒 240秒 494秒
RabitQ 597秒 2268秒 3957秒
TurboQuant 0.0007秒 0.0013秒 0.0021秒

关键解读:

  • PQ需要几十秒到几分钟
  • RabitQ更是需要几分钟到近一小时
  • TurboQuant只要0.001秒左右——快了上万倍!

而且别忘了,速度快的同时,下面的召回率实验还证明TurboQuant的搜索质量也更高。

图5: 不同数据集和不同嵌入维度下的召回率对比。

(a) GloVe - d=200

Figure 5a

Figure 5a

(b) OpenAI3 - d=1536

Figure 5b

Figure 5b

(c) OpenAI3 - d=3072

Figure 5c

Figure 5c

解读:

  • 三张图分别对应:GloVe 200维、OpenAI3 1536维、OpenAI3 3072维
  • 每张图中,TurboQuant(蓝线)在各个比特宽度下都明显高于其他两条线
  • 特别是在低比特宽度时(比如2-4比特),TurboQuant的优势更大

五、为什么TurboQuant能行?

在压缩领域,任何算法能达到的最佳效果都有一个下限。而TurboQuant的效果已经是非常接近最优了。

这就解释了为什么TurboQuant在各种场景下都表现稳定:因为是"理论上接近最优"的方案之一,不是靠运气或调参调出来的。

具体来说,TurboQuant 利用了高维空间的一个有趣性质:当维度很高时,坐标之间几乎相互独立。

这听起来反直觉,但可以这样理解:

想象你在抛1000枚硬币。每枚硬币之间是独立的,但你如果看所有硬币"正面朝上"的比例,这个比例总是接近50%,而且非常稳定。高维空间里的坐标也有类似性质。

利用这个特性,可以把一个复杂的高维问题,转化成了1000个简单的一维问题分别处理,然后组合结果,又快又准。


六、和普通人有什么关系?

这篇论文解决的问题和每个人息息相关:

你用模型处理长文档——TurboQuant让模型能记住更多内容,回答更准确

你用AI搜索图片——TurboQuant让搜索更快更准

未来在手机上跑大模型——TurboQuant让这成为可能(省内存就是省资源省计算)

实际上,现在很多AI应用的瓶颈就是内存。

TurboQuant这样的技术突破,意味着AI可以变得更普及、更高效、更便宜。

TurboQuant解决了一个看似不可能的问题:在大幅压缩数据的同时,居然还能保持原始效果

秘诀是利用了高维空间的数学特性,加上巧妙的两阶段处理,最终做到了又快又好。

效率提升,往往不单纯是靠硬件堆上去,而是靠算法层面的设计改进,后续应该还有很多工程上的改进空间。

预览时标签不可点

Close

更多

Name cleared

微信扫一扫赞赏作者

Like the AuthorOther Amount

赞赏后展示我的头像

作品

暂无作品

Like the Author

Other Amount

¥

最低赞赏 ¥0

OK

Back

Other Amount

更多

赞赏金额

¥

最低赞赏 ¥0

1

2

3

4

5

6

7

8

9

0

.

大语言模型 · 目录

大语言模型

上一篇谷歌 TurboQuant 论文中译:基于近最优扭曲率的高速在线向量量化算法下一篇利用超强的小模型 OmniCoder-9B 试试 TurboQuant 量化 KV Cache: 2-bit 挑战 FP16

Close

更多

搜索「」网络结果

Close

调整当前正文文字大小

更多

100%