跳到主要内容
技术WHITEHOLE

量化与 KV Cache 优化:先把显存账算清

量化与 KV Cache 优化,指的是通过降低权重精度、压缩推理过程中的缓存占用,让同一块设备承载更长的上下文或更多并发。动手之前要先算清显存账:权重占多少、缓存占多少、给并发留多少。本文区分两类优化对象,给出缓存占用的估算思路,以及组合取舍与验收方式

技术模型压缩推理优化

量化与 KV Cache 优化,是同一块设备上争夺显存的两条路径:量化降低权重与计算的精度要求,KV Cache 优化压缩推理过程中随上下文增长的缓存。两者的目标一致 —— 在硬件不变的前提下换到更长的上下文或更高的并发

先分清两个优化对象

  • 权重:属于静态占用,推理开始前就已确定。降低精度可以直接节省这部分显存,代价是可能影响回答质量。
  • KV Cache:属于动态占用,随上下文长度与并发数增长,是长上下文场景的主要约束项。
  • 两者叠加时不是简单相加:权重省下来的显存,通常会立刻被更高的并发或更长的上下文吃掉。

KV Cache 的显存账怎么估

不需要背公式,但要理解它的增长方式:缓存规模与上下文长度、并发请求数、模型层数三者同时成正比。也就是说,任何一项翻倍,占用都会明显上升

  • 随上下文长度线性增长:把上下文从 8K 提到 32K,缓存占用大致翻数倍。
  • 随并发线性增长:同时处理的请求越多,需要同时保留的缓存越多。
  • 与模型结构相关:层数越多、隐藏维度越大,单个 token 的缓存越重。

由此得到一个实用结论:宣传中的「支持多长上下文」,必须连同当时支持的并发数一起看才有意义。同一台设备上,长上下文与高并发通常无法同时拉满,实际可用的组合才是有效容量。

量化的取舍

  • 不同对象的敏感度不同:有的部分降精度后几乎无感,有的部分降精度后会明显影响输出稳定性,需要分开评估。
  • 质量变化要用业务评测集测:通用基准上的轻微下降,未必对应企业场景里可感知的退化,反过来也一样。
  • 延迟要重测:量化省下显存不等于降低延迟,某些配置下解码速度反而变慢。
  • 留回退路径:量化版本与原始版本应能通过配置切换,便于出现问题时快速回退。

组合取舍的常见方向

  • 长上下文优先:把优化重点放在缓存侧,并接受并发上限下降。
  • 高并发优先:从批处理与缓存复用入手,同时控制单请求的上下文长度。
  • 质量优先:权重精度不动,只压缓存与上下文,接受容量偏小。
  • 都可以妥协:先做上下文裁剪 —— 只把真正相关的资料送进模型,这一条往往收益最直接。

验收:用评测集回归

  • 显存与并发有实测记录:优化前后各留一组数据,注明测试时的上下文长度。
  • 质量有回归结论:同一套业务评测集在优化前后各跑一次,差异在事先约定的范围内。
  • 延迟分布有对比:看分位值而不是只看均值,尾延迟的恶化在使用者那里更明显。
  • 配置可回退:优化后的参数与原始配置都能一键切换,并留有变更记录。

边界要说清:定量结论高度依赖具体模型、硬件与推理框架,本文给的是估算思路与验收方式,不是可以直接套用的数字。任何调参都应当在自己的环境中实测。

FAQ

常见问题

与这篇相关、并且被问得最多的几个问题

量化会不会让回答质量明显下降
取决于量化方式与模型本身,不能一概而论。判断方式是拿同一套业务评测集在量化前后各跑一次,比较可感知的差异
长上下文和高并发能同时要吗
在固定硬件上通常要取舍,因为缓存占用同时受这两项影响。可行做法是把不必要的内容挡在上下文之外,而不是硬拉参数
优化效果应该向谁说明
向提出容量或延迟需求的人说明,并同时给出代价:容量换来的是什么、延迟或质量上让掉了什么