高效 AI · 大模型推理 · 长上下文

KVarN:免标定的 2-bit KV 缓存量化

KVarN 用 Hadamard 旋转加双轴方差归一化,把 KV 缓存压到 2-bit 且无需标定数据,专治长推理解码中量化误差逐步放大的问题。

KVarN:免标定的 2-bit KV 缓存量化

快速答案

KVarN 是一种免标定的 KV 缓存量化方法,在 2-bit 精度下仍能保住精度,而以往方法在这里基本崩掉。它的核心洞察是:在自回归解码中,量化误差不会保持平稳,而是一步步累积放大,主因是少数 token 拿到了错误的尺度。KVarN 先做 Hadamard 旋转,再对 K、V 矩阵的两个轴同时做双重缩放的方差归一化,把这些离群 token 尺度压平,从而在 MATH500、AIME24、HumanEval 上刷新了 2-bit KV 缓存量化的最优结果。

为什么解码会拖垮 KV 缓存量化

大多数 KV 缓存量化论文的评测姿势是错的,这正是 KVarN 的第一个贡献。现有方法都在「预填充式」设定下评测——量化一段固定上下文,读出一个答案——这种场景下固定量的误差是可以容忍的。但支撑现代推理模型的测试时扩展,会让模型连续解码上千个 token,KV 缓存全程在增长。这才是真正重要的场景,而它的表现完全不同:每个被量化的 key/value 会被反复关注,于是第 50 步的一点小误差会持续影响之后的每一步。作者用实验证明:误差是跨时间步累积的,而不是有界的。

漂移到底从哪来

主因是错误的 token 尺度,而非随机的舍入噪声。少数 token 带着离群的幅值;当你用一个共享尺度把一切塞进 2-bit 时,这些离群值要么饱和,要么把尺度撑得太宽,导致普通 token 完全失去分辨率。无论哪种,单 token 的表示都被扭曲了;又因为注意力在整个解码过程中反复重读这些 token,扭曲被不断放大,而不是被平均掉。这就把问题从「把舍入做得更细」重新定义为「在舍入之前先把尺度修对」。

KVarN 怎么做的

KVarN 按顺序做两件事,全程不需要标定集。第一步是 Hadamard 旋转:把通道混合,让离群能量分散到各维度,而不是集中在少数几维——这是驯服激活离群值的常用手法,这里被用到 K 和 V 上。第二步是双重缩放的方差归一化:沿 K、V 矩阵的两个轴都做归一化,而不是只做一个轴。第二个轴正是竞品漏掉的地方:只做按通道(或只按 token)的缩放,会把正交方向上的离群值原封不动留下,而那恰恰就是驱动误差累积的 token 尺度误差。免标定在工程上很关键——不用收集数据、没有拟合步骤,也不会有任何环节悄悄与部署分布对不上。

关键结果

  • KVarN 在 2-bit 精度下、在真实自回归解码(而非预填充)的衡量方式下,刷新了 KV 缓存量化的最优结果。
  • 它在 MATH500、AIME24、HumanEval 上均有提升——即数学推理与代码生成,这正是长解码链和测试时扩展最吃紧的负载。
  • 最关键的看点是相比现有基线显著降低了误差累积:生成越长,差距越大,而这恰恰是预填充式调过的量化器开始劣化的地方。
  • 团队放出了 vLLM 实现,说明这套方法瞄准的是生产级推理栈,而非仅停留在离线研究。

为什么现在重要

推理模型之所以受显存瓶颈制约,正是因为它们要长时间地「想出声」。在长解码中爆掉的是 KV 缓存而非权重,而 2-bit 大致是能换来可观显存收益的下限。一种在 2-bit 解码下还能扛住、又免标定的方法,意味着同一张 GPU 上可以塞下更长的思维链或更大的批量,且不必为每个模型走一遍调参仪式。这里诚实的定位才是贡献:KVarN 与其说是发明了某个巧妙变换,不如说是正确诊断出「解码期误差会累积」,再直接对准 token 尺度这个病根下手。

局限与存疑

论文评测集中在可验证的推理与代码基准上;2-bit 的 KVarN 在长篇开放式生成、检索密集的上下文或多语种解码上表现如何,并非其关注重点,而这些场景对量化的压力方式各不相同。Hadamard 加双轴归一化的流水线会给每个解码步增加算力和一个不轻的核函数,因此对落地者真正要紧的问题是端到端的延迟与吞吐,而不只是某个位宽下的精度——摘要强调的是质量而非速度。而且 2-bit 本身很激进:「2-bit 下最优」仍意味着要接受相对 16-bit 缓存残留的精度差,这只有部分应用能容忍。跨模型族的独立复现,才能坐实这套双轴修法到底有多通用。

常见问题

KVarN 解决了其他 KV 缓存量化器忽视的什么问题?

KVarN 针对的是自回归解码中的误差累积。以往量化器在误差有界的预填充式设定下调参和评测;KVarN 指出在长解码下量化误差会跨时间步累积,主因是错误的 token 尺度,并直接修正这一病根。

KVarN 是如何做到免标定的 2-bit KV 缓存量化的?

它先用 Hadamard 旋转把离群能量分散到各通道,再对 K、V 矩阵的两个轴做双重缩放的方差归一化。由于归一化是从矩阵本身算出来的,因此既不需要标定数据集,也不需要拟合步骤。

KVarN 在哪些场景提升最大?

在生成式推理与代码基准上——MATH500、AIME24、HumanEval——的 2-bit 精度下,它刷新了最优结果,而且生成序列越长,优势越明显。

KVarN 能用在生产环境吗?

作者放出了 vLLM 实现,因此它瞄准的是真实推理栈。尚待明确的实际问题,是旋转与归一化带来的每步额外算力,这会影响吞吐与延迟。

一句话:诊断出解码期 KV 缓存误差会因坏 token 尺度而累积,再把尺度修对,2-bit 缓存就能扛住长推理链。阅读 arXiv 原文