一句话定义

KV 缓存(Key-Value Cache) 是大模型逐字生成回答时留下的一份中间结果:每生成一个字,都要回看前面所有字,把它们的注意力键值存下来,下次就不用重算。

KV 缓存量化就是这份缓存也不按高精度存,改用低位表示。

它解决什么问题

权重是一次性的,缓存是边跑边长的。这两者的性质完全不同:

权重 KV 缓存
什么时候产生 训练完就固定 每次对话现场生成
占多大 与模型规模成正比 与对话长度 × 并发路数成正比
能不能离线统计范围 可以 不能,只能现算

后果是:一台设备上能同时接几路对话,往往不是由模型大小决定的,而是由缓存能占多少内存决定的。对话拖长、多路并发,内存先见底。对端侧设备来说,这块内存还要跟收银软件、界面渲染抢,压力更实在。

关键做法

  • 分组或分块量化:给一小段缓存配自己的缩放系数,控制离群值的影响范围。
  • 混合精度:不同层、不同位置的缓存用不同精度。也有工作把「该给谁几位」做成自动决策——NVIDIA 的 AutoQuant KV 走的就是自动混合精度这条路线,目标是少人工调参、保住效果。
  • 注意误差会累积:缓存会被反复读取和使用,早期存下来的数值误差会随着生成长度往后传,所以评测要在长对话下做,不能只看前几句。

常见误区

  1. 「权重已经量化了,内存应该够了」。短输出场景确实如此;一旦进入多轮长对话,缓存会变成新的主要占用。
  2. 「缓存是运行时的东西,不好优化」。它恰恰是最值得优化的一块,因为它随使用方式变化,而权重不会。
  3. 拿短句测效果。缓存量化的问题通常在生成到几百个字以后才暴露,短句测试看不出来。

参考

NVIDIA Model Optimizer 的 AutoQuant KV: Automatic Mixed-Precision KV Cache Quantization(2026-10-14,https://nvidia.github.io/Model-Optimizer/announcements/autoquant-kv.html),把缓存精度从人工设定改为自动决策。

延伸阅读

相关词条


火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。