引言 — 权重之后的瓶颈
在上一篇量化综述的结尾,我写下了“下一个战场是 KV 缓存”。2026 年 4 月公开的预印本 SAW-INT4 — “System-Aware 4-Bit KV-Cache Quantization for Real-World LLM Serving”(Jia 等,合著者包括 Tri Dao、Tianyi Zhang 等) — 恰好一头扎进了那个战场。摘要的第一句毫不含糊:KV 缓存内存是现实 LLM 服务的主要瓶颈。
本文是以一名 ML 基础设施工程师的视角来读这篇预印本的解读。它梳理这些问题:为什么长上下文下 KV 缓存才是真正的瓶颈,为什么朴素 INT4 会崩溃,阿达玛旋转这个技巧究竟做了什么,以及这篇论文真正的角度 — 不只守住精度,还要连 吞吐量 一起守住的 系统视角。先说清楚一点:本论文还是一篇未经同行评审的预印本,摘要中并未给出具体的基准测试数字。因此下文所有的定量主张都是 作者们的报告,而非经过独立验证的数值。
KV 缓存才是真正瓶颈的原因
Transformer 在解码时会把已经见过的 token 的键(K)和值(V)堆进缓存,以避免重复计算。这份 KV 缓存的大小与序列长度和批大小成 线性 正比。粗略估个感觉,一个 token 占用的 KV 条目是(K 和 V 两者)×(层数)×(KV 头维度)×(精度字节数)。70B 级别的模型大约是每 token 数百 KB,再乘上数万 token 和并发请求数,很快就会达到数十 GB。把权重榨到 4 比特之后,长上下文服务里剩下的最大内存消耗者,正是这份缓存。
论文犀利的地方从这里开始。作者们不把 KV 缓存压缩当成“离线精度”问题,而是当成 服务约束 问题来处理。真实的服务系统必须同时扛住两种相互矛盾的负载 — 对延迟敏感的小批量请求,以及吞吐量至关重要的大规模并发请求。而且现代服务引擎是建立在 分页内存布局(PagedAttention 一脉)、规则的内存访问、融合注意力执行(FlashAttention 一脉)这些前提上运转的。摘要的指摘很扎心:许多 KV 压缩方法虽然改善了离线精度或压缩率,却恰恰违反了这些约束,从而在真实部署中变得毫无用处。于是作者们先筛出“在这些约束下还能活下来的 4 比特方法的最小集合”。
朴素 INT4 为什么会崩溃
把 KV 缓存直接均匀地量化成 INT4 会怎样?摘要平静地说:朴素(naive)INT4 会丢失精度。 追回丢掉的这部分精度,正是这篇论文的目标。至于为什么会丢,原因和上一篇的主题一样 — 离群值(outlier)。KV 张量里同样存在取值格外大的通道,而均匀的 4 比特格子为了把这么宽的动态范围硬塞进 16 个档位,会在占绝大多数的普通值上产生很大的舍入误差。(这个离群值机制本身是量化文献里的常识,并不是摘要针对 KV 缓存新证明出来的东西。)
论文的第一个设计选择随之而来:逐 token(token-wise)量化 — 不是按通道,而是给每个 token 单独配一个 scale。这和“解码是把 token 一个一个接续起来”的过程很合拍 — 新 token 的 K/V 一出来,就立刻用那个 token 的 scale 量化,追加到分页块里就行,不用再去碰过去的 token。也就是说,它不会破坏规则访问和分页布局。
旋转技巧 — 块对角阿达玛
仅靠逐 token 的 scale,离群值并不会消失。论文的核心材料在这里登场:块对角阿达玛旋转(block-diagonal Hadamard rotation)。
直觉是这样的。阿达玛变换是正交旋转 — 也就是之后能精确还原的(数学上无损的)变换 — 同时它把每个通道均匀地混进其他所有通道。原本挤在一个通道里的离群值,旋转之后会薄薄地铺展到许多维度上,于是没有任何一个值再会突出。结果就是,均匀的 INT4 桶要贴合得好得多。这个“用旋转把离群值打散”的想法源自 QuaRot·SpinQuant 一脉,SAW-INT4 把它拿来适配 KV 缓存。块对角 这个限定词很关键 — 用块内部的旋转来替代一个巨大的单一旋转,从而压低成本,同时保持与分页布局的兼容。
摘要给出的核心发现是这样的:这个简单的组合 — 逐 token INT4 + 块对角阿达玛旋转 — 在多个模型和基准上给出了最好的精度-效率权衡,几乎全部追回了朴素 INT4 丢掉的精度。而个人觉得最有意思的一段 — 作者们报告说,向量量化或基于 Hessian 的量化这类 更复杂的方法,一旦把服务兼容性也算进来,额外收益就微乎其微。意思是:只看离线基准的话,花哨的方法会赢,但一旦加上分页·融合执行这些现实约束,那点优势大多就消失了。
系统即设计 — 融合内核
就算追回了精度,如果旋转和量化给推理路径添了开销,那在服务里还是亏。所以论文的另一半是 内核工程。
解码时,每个新 token:
K,V (fp16)
│
▼
┌──────────── 融合内核 ────────────┐
│ 块对角阿达玛旋转 │ <- 打散离群值
│ 逐 token INT4 量化 │ <- 每个 token 一个 scale
└───────────────────┬──────────────┘
▼
追加到分页 KV 块 <- 不重访过去 token
作者报告:可测量的端到端开销为 0,
在所有并发级别下达到纯 INT4 的吞吐量。
作者们实现了把旋转和量化捆成一体的 融合内核(fused rotation-quantization kernel),直接集成进分页 KV 缓存布局,并报告称 可测量的端到端(end-to-end)开销为 0,在各种并发级别下都能给出 与纯 INT4 相同的吞吐量。这一点正是题目里“系统感知(system-aware)”的核心。它主张的不是把精度恢复(旋转)和服务效率(融合内核·分页集成)分开炫耀,而是必须在同一个约束条件下同时满足二者。摘要的结论句把这个视角压缩成一句:有效的 KV 缓存压缩,本质上是一个系统协同设计(co-design)问题。 无论是对延迟敏感的小批量,还是以吞吐量为中心的大规模并发请求,都不在任何一侧削减吞吐量,同时给出几乎无损的精度 — 这就是作者们描绘的图景。
结语 — 什么有意思,什么还不确定
什么有意思。第一,是 最简单的组合赢了 这条叙事。更精巧的向量·Hessian 方法在现实约束面前失去优势,这个观察把“基准 SOTA”和“可服务”是两条不同的轴这一点讲得很清楚。第二,它印证了旋转这件工具从权重(QuaRot)向 KV 缓存迁移的趋势。
什么还不确定。本文所有的定量表述 — “几乎无损”“开销为 0”“与纯 INT4 相同” — 都是 作者们在预印本里的报告,而摘要中并没有具体数字(哪个模型、在哪个基准上得几分)。同行评审也还没有。在复现代码·内核公开、社区在各种硬件上重新测过之前,谨慎地读才是对的。上一篇的教训在这里同样适用 — “比特越少越好”这句话,一定要在你自己的任务·自己的硬件上验证。 尽管如此,方向是明确的。把权重榨干之后的瓶颈是 KV 缓存,而它 4 比特化的关键,在于 同时 守住精度和吞吐量的系统设计 — 这一点,SAW-INT4 瞄得很准。
参考资料
- Jia et al. (2026), “SAW-INT4: System-Aware 4-Bit KV-Cache Quantization for Real-World LLM Serving”
- 最新 LLM 量化技术总览 — 同一场“比特 vs 内存”之战的前篇
- Kwon et al. (2023), “Efficient Memory Management for LLM Serving with PagedAttention”(vLLM)
- Ashkboos et al. (2024), “QuaRot: Outlier-Free 4-Bit Inference in Rotated LLMs”
- vLLM 量化文档
현재 단락 (1/30)
在[上一篇量化综述](/blog/2026-07-08-llm-quantization-2026)的结尾,我写下了“下一个战场是 KV 缓存”。2026 年 4 月公开的预印本 **SAW-INT4...