智能AI morning

超越TurboQuant!OSCAR:面向真实服务的2-bit KV Cache量化

2026-05-29 1 阅读 Zhongzhu Zhou等
作者 | Zhongzhu Zhou, Donglin Zhuang, Jisen Li, Ziyan Chen, Shuaiwen Leon Song, Ben Athiwaratkun, Xiaoxia Wu 从 KV Cache 瓶颈说起 长上下文模型的能力还在往前走,但在线推理服务遇到的压力,很多时候已经不只是计算量本身。每生成一个新 token,系统都要反复访问越来越长的历史 Key 和 Value;上下文拉长、batch 放大之后,KV Cache 同时吞掉显存容量和显存带宽。最新论文 OSCAR: Offline Spectral Covariance-Aware Rotation for 2-bit KV Cache Quantization 直接瞄准这个痛点,给出了一套面向长上下文 serving 的近 2-bit KV Cache 方案,并且已经接入 SGLang,可用于真实服务链路。相比之前量化的工作,比如TurboQuant ,压缩的是向量,但忽略了真正影响模型的是attention的质量, OSCAR 保留的是 attention 真正会读的方向。 朴素 INT2 和全模型层的3-bit K/V TurboQuant 都会在困难推理任务上明显掉分;OSCAR 在约 2.28 effective bits per KV element 下仍能接近 BF16,并在 Qwen3-4B-Thinking 上相对3-bit K/V TurboQuant 最高提升 40.1 分。 如果历史 KV 能稳定压到 2-bit,理论上历史缓存的存储开销可以接近缩小 8 倍。不过,低比特 KV Cache 真正困难的地方从来不是“能不能压”,而是压缩之后模型推理质量不能塌,系统实现也不能停留在离线实验脚本里。OSCAR 的价值正是在这两个问题上同时给出了答案。 2-bit INT 只有 4 个离散等级,而 KV activation 里经常会出现少量幅值很大的 outlier channel。一旦量化尺度被这些极端通道牵着走,大部分正常值就会挤在很窄的有效区间内,attention 分布也随之偏移。普通 Hadamard 旋转可以把 outlier 打散,却没有区分模型在 attention 里真正使用的方向。OSCAR 的核心思路是:不要只追求还原 K/V 向量本身,而要尽量保住 attention 消费这些 KV 的方式。 从这个角度看,TurboQuant 等方法更偏向于把向量表示压得更紧;OSCAR 则把目标进一步对准 attention 质量本身。朴素 INT2 和全层 3-bit K/V 的 TurboQuant 在难推理任务上会出现明显掉分,而 OSCAR 在约 2.28 effective bits per KV element 的预算下依然能接近 BF16,并且在 Qwen3-4B-Thinking 上相比 3-bit K/V TurboQuant 最高提升 40.1 分。 OSCAR 的动机 图 1:只用 K/V 重建误差判断低比特效果,容易看漏真正的误差传播 图 1 把 naive INT2、Hadamard-only、clip-only 和 OSCAR 放在同一条误差链路里比较。它想说明的是,原始 K/V 的重建误差并不能充分预测最终生成质量。更直接影响模型表现的,是 attention-score KL、attention block output MSE,以及这些偏差继续传到后续 hidden state 后形成的误差。OSCAR 的优势并不只是让数值分布看起来更平滑,而是把量化噪声尽量推到 attention 相对不敏感的方向上。 OSCAR 的设计 具体到 key,量化误差会通过 QKᵀ 进入 attention logits,所以 OSCAR 使用 query covariance,也就是 QᵀQ,来决定 key 的旋转目标。对于 value,误差会先被注意力权重加权,再进入 attention 输出,因此 OSCAR 采用 score-weighted value covariance,即 VᵀSᵀSV。离线校准时,系统用少量样本估计这些 attention-aware covariance,并为每一层、每一个 head 生成固定旋转矩阵和 clipping 阈值。 最终旋转可以写成 R = U · Hadamard · bit-reversal。其中,U 用来对齐 attention 相关方向,Hadamard 负责把 outlier 能量摊开,bit-reversal 则让 INT2 分组更加均衡,避免某个 group 被少数通道主导。也就是说,OSCAR 不是简单地“加一个旋转”,而是把旋转、裁剪和分组都放进了 attention 质量这个目标函数里。 更关键的是,OSCAR 并不是只在离线量化评测里报告分数。它已经进入 SGLang 的服务路径,在运行时维护一个三段式 token pool: BF16 sink (64 tokens) | INT2 history | BF16 recent (256 tokens) sink token 和 recent window 继续用 BF16 保存,用来保护 attention sink 与最近上下文;中间占比最大的历史段则保存为旋转后的 INT2。新 token 会先写入 recent window,随着解码向前推进,最老的 recent token 再由融合 Triton kernel 完成 rotate、clip、quantize 和 pack,并降级进入 INT2 history。存储上,每 4 个 2-bit 数值被打包进 1 个 byte。 decode 阶段,OSCAR 在 GPU 上分别处理 BF16 段和 INT2 段:INT2 kernel 负责 unpack、scale/zero point 反量化以及浮点累加,BF16 kernel 处理 sink/recent,最后再通过 online softmax merge 合并两部分结果。由于它兼容 paged KV、radix prefix cache 和 SGLang 的 fused kernel pipeline,所以 OSCAR 面向的是可落地的长上下文 workload,而不是只展示论文曲线。 图 2:OSCAR 从离线校准到在线推理的整体链路 图 2 展示了这条 pipeline 的完整路径。左侧是校准阶段:系统从少量样本中估计 attention-aware rotation 和 clipping threshold,让 KV activation 在进入 INT2 之前更适合低比特表示。右侧是在线阶段:sink/recent 保留 BF16,中间最长的 history KV 进入旋转后的 INT2 cache,并在 SGLang paged KV 体系里完成真实 serving。换句话说,OSCAR 不是一个孤立量化技巧,而是一整套 2-bit KV Cache 服务方案。 评估结果 论文在 Qwen3-4B-T