R

KV Cache

创建 2026-05-13 更新 2026-05-18 5 条双链 共创

KV Cache

物理含义

大模型能”记住”上文,靠的是缓存所有历史 token 的 Key 和 Value 向量。KV Cache 的物理大小直接锁死了系统能承载的并发请求数

计算公式

KV Cache (bytes) = 2 × L × n_kv × d_head × S × dtype_bytes

其中:

  • 2 — K 和 V 两组向量
  • L — Transformer 层数
  • n_kv — KV 头数(MHA = H,GQA = G,远小于 H)
  • d_head — 每头维度
  • S — 序列长度
  • dtype_bytes — 数据类型字节数(FP16=2, FP8=1)

实例推算(Llama-3-70B, GQA, FP16)

L=80, n_kv=8, d_head=128, S=100K, dtype=2 bytes

→ KV Cache ≈ 32.8 GB

与 GQA 的联动

如果 Llama-3-70B 仍使用 MHA(n_kv=64),同一场景的 KV Cache 将膨胀 8 倍。GQA 不是学术花活,而是让 100K 上下文在工程上可行的前置条件。

优化 Tricks

  • PagedAttention:将 KV Cache 分页管理,消除显存碎片(vLLM 核心创新)
  • Radix Tree Prompt Caching:复用共享前缀的 KV Cache,降低 70%+ 计算成本
  • KV Cache 量化:FP16 → FP8/INT8,并发上限翻倍

PM 视角:长会话保持与产品设计推论

KV Cache 不是磁盘文件,是 GPU 显存里的向量;任何会话停顿后再续,都涉及”重新 prefill 全部历史”还是”命中缓存”两条岔路。云端模型的工程约定是 RAM 内 KV 一般只活 5–10 分钟,磁盘 / 对象存储兜底的窗口在小时至数天级,跨周/月几乎都得走 prefill。这把”长会话保持”翻译成了一条产品设计约束:用户隔十分钟回到并行任务里继续推进,每一次回来都可能是一次满价 prefill。

由此推出一条 PM 直觉:界面应当鼓励用户在单一长对话里一次性闭环、而不是并行开多个长会话——后者把缓存命中率打散,成本和延迟双输。DeepSeek 把 KV Cache 落盘以撑出更长持久窗口是一条降本路径,但代价是首响应延迟、磁盘 I/O 与一致性管理;其他厂商不全跟,是因为目标负载(短链高并发 vs. 长链低并发)与硬件栈各异,降本的代价总是落在 SLA 或基础设施投资曲线上某处。

相关章节