在大规模语言模型推理系统中,Key-Value 缓存(以下简称 KV Cache)扮演着关键角色。它相当于模型的「数字速查表」,将已处理的 token 信息存储在高速内存中,以便在自回归生成时快速检索。然而随着上下文窗口不断增长,KV Cache 的内存占用已成为制约推理吞吐量的核心瓶颈。传统向量量化方法在压缩过程中往往引入额外内存开销 —— 每压缩一个数据块就需要存储量化常数,导致实际压缩效果大打折扣。Google Research 于近期发表的 TurboQuant 论文提出了一种全新的极端压缩管道,能够在零精度损失的前提下将 KV Cache 内存占用削减至原来的六分之一,同时在 NVIDIA H100 GPU 上实现最高 8 倍的注意力计算加速。这一成果已被接收至 ICLR 2026,并在 Google 内部推理集群中完成生产级别部署验证。

核心问题:KV Cache 瓶颈与量化开销的矛盾

理解 TurboQuant 的技术价值,首先需要认清当前大规模推理系统面临的具体困境。现代 Transformer 模型的注意力机制需要在每一步生成时访问全部历史 token 的 Key 向量和 Value 向量。对于一个拥有 128K 上下文窗口的模型,假设每个 token 的 KV 向量占用 16 字节(FP16 精度),则完整缓存需要约 256 MB 的内存 —— 这还未计入实际部署中常见的批量处理场景。当并发请求数量增加时,KV Cache 的内存压力呈线性增长,很快就会触及 GPU 显存的天花板。

传统向量量化方案通过将高精度浮点数映射到低比特整数来减少存储开销,理论上可以将内存占用降低 8 倍甚至更多。然而这些方法存在一个容易被忽视的隐性成本:量化常数存储开销。大多数量化算法需要对向量的每个子块独立计算并存储缩放因子(scale)和零点(zero-point),这会在压缩后的数据基础上额外增加 1 到 2 比特的开销。举例而言,如果目标压缩比为 8 倍(对应 4 比特量化),实际有效压缩比可能只有 4 到 6 倍,因为近一半的比特被用于存储元数据。这种「量化开销」在低比特场景下尤为严重,成为制约极端压缩方案落地的根本障碍。

Google Research 团队从数学原理出发,重新审视了向量量化的几何基础,最终设计出 TurboQuant 这一无需额外内存开销的极端压缩管道。该管道由两个核心算法协同组成:PolarQuant 负责主体压缩,QJL(Quantized Johnson-Lindenstrauss)负责消除残余误差。二者的结合使得 3 比特甚至更低比特的全量化 KV Cache 成为可能,且全程无需模型微调或重训练。

PolarQuant:极坐标变换带来的压缩革新

PolarQuant 的核心创新在于将传统的笛卡尔坐标系表示转换为极坐标表示。理解这一转变的直观方式是想象一个二维平面上的向量:常规做法是分别存储 X 轴和 Y 轴两个分量,而 PolarQuant 则将其转换为「半径」和「角度」两个参数。半径表示向量的模长,对应原始数据的强度信息;角度表示方向,对应原始数据的结构信息。

这种表示方式的变革带来了一个关键优势:角度信息的分布高度集中。由于 Transformer 输出的向量经过层归一化后模长已被规范化,剩余的变化主要集中在方向维度上。Google Research 的实验表明,在高维空间中,随机向量的方向分布呈现高度集中的趋势,这意味着一旦确定了角度的量化边界,就可以用极少的比特数精确编码方向信息,而无需为每个数据块单独存储量化常数。PolarQuant 通过将数据映射到一个固定的「圆形」网格(而非传统方法中不断变化的「方形」网格),成功消除了量化常数的存储开销。

在 TurboQuant 的压缩管道中,PolarQuant 首先对输入向量进行随机旋转操作。这一预处理步骤的作用是简化数据的几何结构,使得后续的量化器能够更高效地工作。随机旋转不会改变向量之间的相对距离关系,但能够让数据的能量分布更加均匀,从而提高量化精度。经过 PolarQuant 处理的向量使用大部分压缩预算(即可用比特数中的主体部分)来保留主要信息,为后续误差修正阶段奠定基础。

QJL:1 比特误差修正的数学奥秘

即便使用了高质量的 PolarQuant 压缩,原始向量与量化后向量之间仍然会存在少量误差。这些误差在单次注意力计算中影响微乎其微,但经过层层堆叠的自回归生成后,会逐渐累积并最终导致输出质量下降。传统方案通过增加比特数来抑制误差,但这与「极端压缩」的目标相悖。TurboQuant 引入了 QJL(Quantized Johnson-Lindenstrauss Transform)算法,仅用 1 比特的空间来实现近乎完美的误差消除。

QJL 的数学原理基于经典的 Johnson-Lindenstrauss 引理:该引理指出,高维空间中的点集可以保距投影到低维空间而不显著改变点间距离。QJL 将这一理论应用于量化场景,使用一个随机生成的投影矩阵将残余误差向量压缩到极低维度,并将每个标量量化为单独的符号位(+1 或 -1)。这种做法的精妙之处在于:虽然每个维度只用了 1 比特存储,但通过精心设计的特殊估计器,QJL 能够在查询时将低精度的压缩数据与高精度查询向量相结合,恢复出接近原始精度的注意力分数。

更直观的理解是:QJL 充当了一个「数学误差检查器」的角色。它不需要精确存储误差的完整信息,而是通过随机投影保留了误差的核心结构。当模型计算注意力分数时,这个结构信息足以抵消 PolarQuant 阶段引入的偏差,从而保证最终结果的准确性。实验数据表明,加入 QJL 阶段后,注意力分数的相对误差从约 5% 降至 0.1% 以下,几乎达到了数值精度的天花板。

协同压缩管道:工程实现的关键路径

将 PolarQuant 与 QJL 结合为完整的 TurboQuant 压缩管道,需要精心设计二者的工作顺序与参数分配。Google Research 推荐的默认配置是:首先使用 PolarQuant 消耗约 85% 到 90% 的总比特预算,完成向量的主体压缩;剩余 10% 到 15% 的预算分配给 QJL,专门用于处理 PolarQuant 留下的残余误差。这一比例设置在多个模型和任务上均表现出了稳健的最优性,偏离这一比例过大时会导致要么主体信息损失,要么误差修正不足。

在实际工程实现中,TurboQuant 的压缩管道可以划分为以下四个关键步骤。第一步是向量预处理:对每个输入的 KV 向量应用随机旋转矩阵(该矩阵在模型加载时生成一次并缓存,无需每次推理重新计算)。第二步是主量化:使用极坐标变换配合均匀量化器对旋转后的向量进行离散化,将连续浮点值映射到预定义的离散码本。第三步是残差计算与压缩:计算原始向量与量化重建向量之间的差异,将残差通过 QJL 投影矩阵压缩为 1 比特表示。第四步是存储与查询:压缩后的主向量和 QJL 残差分别存储,在注意力计算时通过特殊的估计器将二者合并重建为最终查询向量。

需要特别指出的是,TurboQuant 的压缩和解压过程完全在线执行,无需对模型权重进行任何修改。这意味着已部署的预训练模型可以直接接入 TurboQuant 压缩层,无需重新训练或微调。对于生产环境而言,这一特性大幅降低了技术迁移成本,同时也保证了模型行为的完全一致性。

部署实测:6 倍内存削减与 8 倍加速的真实性

Google Research 在多个标准长上下文基准上对 TurboQuant 进行了严格评估,包括 LongBench、Needle In A Haystack、ZeroSCROLLS、RULER 和 L-Eval。测试模型选用开源的 Gemma-7B 和 Mistral-7B,涵盖问答、代码生成、摘要等多个任务类型。实验结果显示,在将 KV Cache 量化至 3 比特的情况下,TurboQuant 在所有基准任务上均达到了与原始 32 位浮点数完全相同的准确率,未观察到任何可测量的性能下降。

关键的量化性能指标如下:压缩后的 KV Cache 内存占用降至原来的六分之一左右,即从 32 比特降至约 3 比特的实际有效精度。值得注意的是,传统 4 比特量化方案的峰值内存占用通常约为原始的八分之一,但考虑到量化常数的存储开销,有效压缩比往往只能达到六分之一左右。TurboQuant 凭借零开销的设计,在 3 比特精度下实现了与传统方案 4 比特相当的内存占用,同时获得了更低的延迟。

在推理吞吐量方面,实验数据更为惊艳。使用 NVIDIA H100 GPU 进行测试,4 比特 TurboQuant 配置下的注意力 logits 计算相比未量化的 32 位基准实现了最高 8 倍的加速。这一加速来源于两方面:一是内存带宽需求大幅降低,显存到 GPU 计算单元的数据传输量显著减少;二是量化后的矩阵运算可以使用低比特专用计算单元(如 Tensor Core 的 INT8 模式),进一步提升单位时间内的运算吞吐量。在实际生产环境中部署时,8 倍加速意味着相同的硬件基础设施可以支持近 8 倍的并发请求量,或者在保持原有吞吐量的情况下将上下文窗口延长数倍。

对于向量搜索场景,TurboQuant 同样展现出卓越的适配性。现代语义搜索系统依赖高维向量索引来匹配查询意图与传统数据库条目之间的相似度。Google Research 将 TurboQuant 与向量搜索的先进方法(如乘积量化 PQ 和 RabbiQ)进行了对比实验,使用 1@k 召回率作为评估指标。结果显示,TurboQuant 在无需针对特定数据集调参的情况下,始终保持更高的召回率,同时将索引构建时间缩短了一个数量级。这一特性对于需要频繁更新索引的在线搜索系统尤为关键。

落地到生产环境:关键参数配置清单

将 TurboQuant 部署到生产推理集群需要注意以下技术要点。首先是压缩比特数选择:3 比特配置适用于对内存节约有强烈需求且上下文长度超过 32K 的场景,可获得约 6 倍内存削减;若对精度更加敏感,可选择 4 比特配置,内存削减比约为 5 倍但误差更小。建议在正式部署前使用目标业务的实际请求分布进行离线评估。

其次是随机投影矩阵的生成与缓存。QJL 阶段所需的随机投影矩阵维度通常设置为原始向量维度的四分之一到二分之一(例如对于 4096 维的 Key 向量,使用 1024 维的投影)。该矩阵在服务启动时生成一次并持久化到显存,避免每次请求重复计算带来的开销。

第三是批处理策略的调整。传统推理系统会根据 GPU 显存剩余量动态调整批量大小,引入 TurboQuant 后需要重新校准。由于压缩后的 KV Cache 体积大幅缩小,相同的显存空间可以容纳更大的批量,进而提升整体吞吐量。建议将原有的批量大小上限乘以 5 到 6 倍作为初始值,再根据实际 GPU 利用率微调。

第四是与分布式推理框架的集成。TurboQuant 的压缩操作发生在单个请求的注意力计算之前,因此对分布式框架的通信层影响有限。但需要确保所有参与节点使用一致的随机旋转矩阵和 QJL 投影矩阵配置,否则不同节点上的量化结果将不兼容。

最后是监控指标体系的建设。除了常规的推理延迟和吞吐量指标外,还应关注以下两项:一是 KV Cache 压缩比实际值(可通过已用显存除以请求数计算),正常情况下应接近配置的比特数目标;二是注意力分数的分布异常检测,若出现大幅偏差可能意味着投影矩阵配置错误或数值溢出。

未来演进方向

TurboQuant、PolarQuant 与 QJL 的组合代表了向量量化领域的一次范式转变。这些方法不仅具有坚实的理论基础(Johnson-Lindenstrauss 引理的量化变体),还通过了生产环境的严格验证。从更长远的视角看,极端压缩技术的演进将沿着三个方向展开:一是更低比特数的探索(目标是 2 比特甚至 1 比特),二是与模型结构剪枝的协同优化,三是与硬件定制加速单元的深度绑定。

对于正在构建大规模 AI 推理平台的团队而言,TurboQuant 提供了一个无需等待下一代硬件即可显著提升系统效率的工程选项。其零训练成本、零模型修改的特性大幅降低了技术采纳门槛,是当前时间窗口下值得优先考虑的性能优化手段。

资料来源:本文技术细节主要参考 Google Research 官方博客(research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/)及 ICML 2026 接收论文(arXiv:2504.19874),性能数据基于 Gemma-7B、Mistral-7B 在 LongBench 等标准基准上的测试结果。