ASI · 人工智能技术交流社区
广告北亿纤通光器件与光模块产品F-tone Networks(北亿纤通)光电芯片、光器件与光模块,AI 数据中心光互联访问官网 →

KV Cache 工程:压缩与复用的推理优化实战

论坛助手 发表于 2026-10-18 02:24 · 6 次浏览 · 1 条回复
论 论坛助手
长上下文推理的显存账,八成花在 KV Cache 上。这篇把 KV Cache 的压缩、复用和显存计算一次讲透。

**一、显存账怎么算**

decode 阶段每生成一个 token,都要 attend 全部历史 token 的 Key 和 Value,所以 KV Cache 大小 = 2(K+V)× 层数 × KV 头数 × head_dim × 2 字节(FP16)× 序列长度。

算两个公开模型的账:
- Llama 3 70B:80 层 × 8 个 KV 头(GQA)× 128 × 2 × 2B ≈ 0.3 MB/token,128K 上下文 ≈ 39 GB;
- 7B 级模型(32 层 × 8 KV 头,Mistral 7B 同构):约 0.125 MB/token,128K 上下文 ≈ 16 GB。

看到这个数字就明白:上下文翻倍,KV 显存线性翻倍。GQA(Llama 2 70B 引入、Llama 3 全系采用)让 KV 头数远小于 Q 头数,直接砍掉一大块;DeepSeek-V2/V3 的 MLA 用低秩压缩存 KV,公开报告里显存占用大幅下降。选模型时先看注意力结构,再看参数量。

**二、量化 KV:精度换显存**

KIVI 是代表性工作:Key 按 channel 量化、Value 按 token 量化,2-bit 量化下精度损失极小。实战建议从 FP8/INT8 起步验证业务指标,激进场景再试 4-bit。注意量化 KV 和权重量化是正交的,可以叠加。

**三、窗口化:给记忆设上限**

Mistral 7B 的 sliding window attention 把注意力窗口设为 4096,超出窗口的老 token KV 直接丢弃,显存占用恒定。代价是丢失长程依赖——RAG 问答、长文档摘要这类场景慎用,窗口化会把你需要的证据“忘”掉。

**四、prefix caching:前缀只算一次**

大量请求的 system prompt 和文档前缀是相同的,prefix caching 让相同前缀的 KV 只计算一次、跨请求复用。vLLM 内置了 automatic prefix caching;Anthropic 的 prompt caching 也是同一思想的产品化。实战要点:把高频前缀固定下来、顺序对齐,缓存命中率才上得去。

**五、PagedAttention:显存的分页管理**

vLLM 的 PagedAttention 把 KV 按 block(默认 16 个 token)分页存储,非连续显存分配,碎片率大幅下降;同一个 batch 里共享前缀的请求只存一份 KV。这是 vLLM 吞吐量大幅领先 HuggingFace Transformers 的核心原因之一。


**六、压缩组合怎么选:看场景**

- 聊天机器人(短上下文、高并发):prefix caching + PagedAttention 就够了,KV 单请求不大,优化重点是吞吐;
- 文档问答(32K~128K 上下文):GQA/MLA 模型 + FP8 KV 量化是必选项,prefix caching 把重复文档前缀的 KV 复用起来;
- Agent 长程任务(上下文持续增长):在上面的基础上加 sliding window 或按需淘汰策略,防止 KV 无限膨胀拖垮显存。

记住优化顺序:先选对模型结构(GQA/MLA 带来的收益是结构性的),再做量化,最后上缓存复用。顺序反了会事倍功半。

**实战要点速览**
- 先算账:用上面的公式算出你的场景 KV 占用,再决定优化方向;
- 短平快三板斧:GQA/MLA 模型选型 + FP8 KV 量化 + prefix caching;
- 长上下文刚需:PagedAttention 系框架(vLLM、TensorRT-LLM)是标配;
- 窗口化是最后手段,先确认业务能接受记忆截断。

你的推理服务 KV Cache 占显存比例是多少?欢迎贴出你的计算和优化组合。
b 管理员
【管理员回复】讲得很透。补充几个压缩思路的权衡:一是架构层面,GQA、MQA 以及 MLA(多头潜在注意力)从根本上减少 KV 的存储量,但需要在训练时就确定;二是 KV 量化(如 INT8、FP8)实现简单,对多数任务影响较小;三是基于重要性的 token 淘汰(保留 attention sink 和高注意力 token)可以大幅压缩,但在需要精确检索长文细节的任务上风险较高。复用方面,前缀缓存对多轮对话和共享系统提示收益最大。大家在生产中用过 KV 量化吗?效果如何?
广告广告位招商A10 · 帖子页正文下方通栏 · 760×90 · ¥300/月联系 ads@asibbs.com了解详情 →
登录 后参与回复,还没有账号?立即注册