一句话定义
KV 缓存(Key-Value Cache) 是大模型逐字生成回答时留下的一份中间结果:每生成一个字,都要回看前面所有字,把它们的注意力键值存下来,下次就不用重算。
KV 缓存量化就是这份缓存也不按高精度存,改用低位表示。
它解决什么问题
权重是一次性的,缓存是边跑边长的。这两者的性质完全不同:
| 权重 | KV 缓存 | |
|---|---|---|
| 什么时候产生 | 训练完就固定 | 每次对话现场生成 |
| 占多大 | 与模型规模成正比 | 与对话长度 × 并发路数成正比 |
| 能不能离线统计范围 | 可以 | 不能,只能现算 |
后果是:一台设备上能同时接几路对话,往往不是由模型大小决定的,而是由缓存能占多少内存决定的。对话拖长、多路并发,内存先见底。对端侧设备来说,这块内存还要跟收银软件、界面渲染抢,压力更实在。
关键做法
- 分组或分块量化:给一小段缓存配自己的缩放系数,控制离群值的影响范围。
- 混合精度:不同层、不同位置的缓存用不同精度。也有工作把「该给谁几位」做成自动决策——NVIDIA 的 AutoQuant KV 走的就是自动混合精度这条路线,目标是少人工调参、保住效果。
- 注意误差会累积:缓存会被反复读取和使用,早期存下来的数值误差会随着生成长度往后传,所以评测要在长对话下做,不能只看前几句。
常见误区
- 「权重已经量化了,内存应该够了」。短输出场景确实如此;一旦进入多轮长对话,缓存会变成新的主要占用。
- 「缓存是运行时的东西,不好优化」。它恰恰是最值得优化的一块,因为它随使用方式变化,而权重不会。
- 拿短句测效果。缓存量化的问题通常在生成到几百个字以后才暴露,短句测试看不出来。
参考
NVIDIA Model Optimizer 的 AutoQuant KV: Automatic Mixed-Precision KV Cache Quantization(2026-10-14,https://nvidia.github.io/Model-Optimizer/announcements/autoquant-kv.html),把缓存精度从人工设定改为自动决策。
延伸阅读
- 店里的问答设备,为什么聊到第五句就变慢 —— 这篇讲的是这件事对门店意味着什么。
相关词条
火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。