Ch20 推理部署

KV Cache (Key-Value 缓存)

概述

KV Cache(Key-Value 缓存)是 Transformer 自回归解码(Autoregressive Decoding)中的一项核心推理优化技术。在生成文本时,模型每生成一个 token 都需要计算所有历史 token 的注意力。如果不做缓存,每个新 token 都要重新计算所有 Key 和 Value,导致计算量随序列长度呈平方增长。KV Cache 通过缓存先前时间步已计算的 Key 和 Value 矩阵,使得每个新 token 只需计算自身的 Q、K、V 并与缓存的 K、V 进行注意力计算,将推理复杂度从 降低到 。

工作原理

自回归解码的重复计算问题

在自回归生成中,第 步的注意力计算需要当前 token 的 Query 与所有历史 token 的 Key 做点积:

如果没有 KV Cache,每生成一个新 token 都要重新计算 和 ,造成大量重复计算。

KV Cache 的解决方案

  1. 首次推理(Prefill 阶段):输入 prompt 的所有 token,计算完整的 K、V 矩阵并存入缓存
  2. 逐 token 生成(Decode 阶段):每生成一个新 token,只计算该 token 的 K、V,追加到缓存中;注意力计算仅用新 Q 与缓存中的全部 K、V 交互
  3. 缓存复用:同一对话轮次内,历史 token 的 K、V 无需重复计算

KV Cache 的内存分析

内存占用公式

对于一个 层的 Transformer 模型,KV Cache 占用的总内存为:

其中:

  • :层数
  • :序列长度(缓存的 token 数)
  • :每层的隐藏维度
  • :精度(FP16 = 2 bytes, FP32 = 4 bytes)

典型模型的内存占用

模型参数量层数 L隐藏维度 d1K tokens 缓存32K tokens 缓存128K tokens 缓存
LLaMA-2-7B7B3240960.5 GB16 GB64 GB
LLaMA-2-70B70B8081922.5 GB80 GB320 GB
GPT-3-175B175B96122884.5 GB144 GB576 GB
Mixtral-8x7B47B3240960.5 GB16 GB64 GB

KV Cache 优化技术

优化技术原理压缩率精度损失代表性工作
Multi-Query Attention (MQA)所有 head 共享一组 K、V减少 h 倍微小PaLM, Falcon
Grouped-Query Attention (GQA)将 head 分组,组内共享 K、V减少 g 倍极小LLaMA-2, LLaMA-3
量化 KV Cache (KV-Quant)对缓存的 K、V 进行低精度量化2-4x可控FlexGen, KIVI
滑动窗口 (Sliding Window)只缓存最近 W 个 token 的 K、V取决于 W上下文窗口受限Mistral
KV Cache 淘汰 (Eviction)丢弃不重要的 token 的缓存自适应可接受H2O, StreamingLLM
跨层共享 (Cross-Layer Sharing)相邻层共享 KV Cache减少 L 倍中等YOCO, CLA
PagedAttention将 KV Cache 分页管理,减少碎片内存利用率提升无vLLM

2026 年长上下文与 KV Cache 的挑战

2026 年,LLM 的上下文窗口普遍达到 1M+ tokens(如 Gemini 2.5 Pro 的 2M,Claude 的 200K+),KV Cache 面临巨大挑战:

  1. 内存爆炸:1M tokens 的 KV Cache 可能占用数百 GB 显存
  2. 解码延迟:即使缓存了 K、V,注意力计算随序列长度增长
  3. 解决方案:混合注意力(Hybrid Attention,局部全注意力 + 远程稀疏注意力)、KV Cache 压缩(通过学习哪些 token 的 KV 可丢弃)、以及硬件层面的改进(如 HBM 容量提升)

相关笔记

来源

关联9

知识图谱

局部图谱 · 点节点跳转