详细解释
键值缓存(Key-Value Cache,KV Cache) 是大模型推理速度从”不能用”到”能用”的决定性优化,所有商用大模型 API 底层都在用。
原理回顾:Self-Attention 中每个 Token 会投影出 Query、Key、Value 三组向量。生成第 N 个输出 Token 时,新 Token 的 Q 只需要和历史所有 Token 的 K、V 比权重即可,历史 K、V 其实没有变化。如果不缓存它们,每次生成都要重新把”输入+已生成”所有 Token 过一遍模型,复杂度 O(N²),生成 1000 字回答等于做 50 万次重复计算。
KV Cache 就是把这些历史 K、V 一次性算完后留在 GPU 显存里,每次只追加 1 个新 Token 的 KV,复杂度降到线性。
两个阶段怎么用 KV Cache
- Prefill 阶段:处理完整 Prompt,创建整段输入的 KV Cache(写入显存)
- Decode 阶段:每生成 1 个新 Token,读取历史 Cache 的 KV 做注意力,再追加新 Token 的 KV 到 Cache 末尾
KV Cache 显存账(长度越长越夸张)
公式:KV 显存 ≈ 2 × 层数 × KV头数 × 头维 × 序列长度 × 字节数(FP16=2字节)
以 70B 级 128K 上下文为例:KV Cache 可占 40GB+ 显存,差不多是模型权重的 1/3;1M 上下文时,KV Cache 体积能超过模型权重本身——这就是为什么 2024 年后所有长上下文模型都切换到了 GQA/MLA 架构压缩 KV。
唯元智创(Weimeta)在推理网关层提供了”KV 预热 + 前缀复用”的商业级调度,适合 RAG 和多轮对话类需要反复带长前缀的业务场景。
常见问题
为什么长上下文模型推理比短的贵那么多?
主要两块成本:1) Prefill 处理长 Prompt 的算力;2) Decode 阶段每生成一个 Token 都要读完整段 KV Cache,越长越耗显存带宽 + 时间。所以长上下文模型收费通常按长度阶梯加价。