KV缓存
别名:KV Cache、Key-Value Cache、键值缓存、KV-Cache
**K**ey-**V**alue **C**ache,Transformer 自回归解码中的**键值缓存**。把已生成 token 在每一层 Attention 中算出的 K、V 矩阵保留下来,避免下一轮重新计算——LLM 推理性能优化的第一性原理。
KV缓存(KV Cache)
Key-Value Cache,Transformer 自回归解码中的键值缓存。把已生成 token 在每一层 Attention 中算出的 K、V 矩阵保留下来,避免下一轮重新计算——LLM 推理性能优化的第一性原理。
为什么需要 KV 缓存
无 KV 缓存的解码(每生成一个 token):
Prompt + 1个token → 整段重算 Attention(O(n²) FLOPs)
有 KV 缓存的解码:
Prefill:一次性算出 prompt 的 K/V 并缓存
Decode:每步只算新 token 的 Q,K/V 拼接历史缓存
└── 复杂度从 O(n²) 降到 O(n)
核心收益:
- 算力节省:FLOPs/token 从 O(n) 降到 O(1)
- 延迟降低:每 token 解码时间从百 ms 级降到十 ms 级
- 吞吐提升:单 GPU 可并发多个序列
显存占用公式
KV Cache 单序列大小(字节)=
2 × n_layers × n_kv_heads × head_dim × seq_len × bytes_per_elem
│ │ │ │ │ │
│ │ │ │ │ └─ FP16=2 / INT8=1 / INT4=0.5
│ │ │ │ └─ 序列长度(context window)
│ │ │ └─ head 维度(hidden_dim / n_heads),常 64-128
│ │ └─ KV 头数(MHA=n_heads, MQA=1, GQA=中间值)
│ └─ 层数(70B 模型约 80 层)
└─ 2 = K 和 V 各一份
总占用 = 单序列大小 × batch_size
实战占用(FP16)
| 模型 | 层数 | KV 头 | 头维 | 1K token | 32K token | 128K token | 1M token |
|---|---|---|---|---|---|---|---|
| Llama-3 8B | 32 | 8 (GQA) | 128 | 128 MB | 4 GB | 16 GB | 128 GB |
| Llama-3 70B | 80 | 8 (GQA) | 128 | 320 MB | 10 GB | 40 GB | 320 GB |
| Llama-3.1 405B | 126 | 8 (GQA) | 128 | 504 MB | 16 GB | 64 GB | 504 GB |
| 典型 MHA 70B | 80 | 64 (MHA) | 128 | 2.5 GB | 80 GB | 320 GB | 2.5 TB |
关键事实:长上下文场景下 KV Cache 单卡可超过 100 GB,是 HBM 容量升级的核心驱动力。
优化技术谱系
KV 缓存优化
├── 减少 K/V 数量
│ ├── MQA(Multi-Query Attention)—— 所有头共享 1 组 K/V,KV 头数=1
│ ├── GQA(Grouped Query Attention)—— 多个 Q 头共享 1 组 K/V,主流折中
│ │ └── Llama-2/3、Mistral、Qwen 等采用 8 组 KV
│ └── MLA(Multi-Latent Attention)—— DeepSeek-V2/V3,将 K/V 压缩到低秩潜空间
│ └── KV 缓存相比 MHA 缩小 5-10x
├── 降低精度
│ ├── KV Cache 量化(FP16 → INT8 / INT4)
│ │ └── 字节数减半 / 减四倍,几乎无损
│ └── 混合精度(关键层保留 FP16,浅层 INT4)
├── 内存管理
│ ├── PagedAttention(vLLM)—— 虚拟内存/分页,显存利用率 4x
│ ├── Sliding Window Attention —— 只保留最近 N 个 token 的 KV
│ └── Token Eviction / Merging —— 主动丢弃/合并相似 KV
└── 计算优化
├── FlashAttention —— IO 感知精确 Attention,不缩小 KV 但减少 HBM 读写
└── FlashDecoding —— 长序列解码并行化
硬件影响(与电子产业的核心交叉)
KV Cache 直接定义 AI 加速器的存储层次需求:
LLM 推理的存储层次
├── [SRAM](/wiki/sram/)(片上,MB 级)
│ └── 当前 step 的 Q / 拼接后的 K、V
│ └── KV Cache SRAM 容量决定单批 seq 长度上限
│ └── H100: ~50MB L2 / B200: ~72MB L2
├── [HBM](/wiki/hbm/)(封装外,GB 级)
│ └── 完整 KV Cache 存储
│ └── H100: 80GB / H200: 141GB / B200: 192GB
│ └── 192GB HBM 是 Llama-3 70B 128K context 的入场券
└── [DRAM](/wiki/dram/)(系统主存,TB 级,可用 KV Cache offload)
└── ZeRO-Inference、FlexGen 等技术用 SSD/DRAM 分层卸载
关键硬件决策
| 决策 | 由 KV Cache 驱动的方向 |
|---|---|
| HBM 容量 | 70B 模型 128K context → 至少 80GB HBM/卡 |
| HBM 带宽 | Decode 阶段每 token 需读全部 KV,1.6T+ 模型对带宽压力 > 训练 |
| SRAM 规模 | Apple M 系列用超大 SRAM(96MB+ L2)放得下更多 KV |
| 批处理大小 | 长序列 + 大模型 = 只能 batch=1,GPU 利用率下降 |
代表厂商与技术方案
- vLLM(PagedAttention):UC Berkeley 开源,KV Cache 显存利用率从 20-40% 提升到 80%+
- DeepSeek MLA:Multi-Latent Attention,KV 缩小 5-10x
- SGLang:RadixAttention,前缀共享 KV 缓存
- TensorRT-LLM(NVIDIA):KV Cache 量化、Continuous batching
- HuggingFace TGI:paged attention + prefix caching
- Anthropic Prompt Caching:API 层共享 KV 缓存,命中降本 90%
关键洞察:KV Cache 是 LLM 推理的"内存税"
与训练阶段算力受限(FLOPs-bound)不同,推理阶段内存受限(memory-bound)—— 每生成一个 token 都必须把整个序列的 KV Cache 从 HBM 读出。HBM 容量和HBM 带宽共同决定单卡推理性能上限,驱动了 H100 → H200(141GB)→ B200(192GB)→ B300(288GB 路线)的容量竞赛。
核心关系
[KV缓存](/wiki/kv-cache/)(Transformer 推理核心数据结构)
├── 上游算法
│ ├── Self-Attention 机制(Q/K/V 投影)
│ ├── FlashAttention(IO 感知精确 Attention)
│ └── MLA / GQA / MQA(KV 头压缩)
├── 内存管理
│ ├── PagedAttention(vLLM 虚拟内存分页)
│ ├── Prefix Caching(SGLang RadixAttention)
│ └── KV Cache 量化(INT8/INT4)
├── 下游硬件影响
│ ├── [HBM](/wiki/hbm/)(容量与带宽决定 decode 性能)
│ ├── [SRAM](/wiki/sram/)(片上容量决定单批 seq 长度)
│ ├── [XPU](/wiki/xpu/)(架构设计需考虑 KV Cache 访存模式)
│ └── 内存墙 / [3D DRAM](/wiki/3d-dram/)(容量突破路径)
├── 服务对象
│ ├── [AIDC](/wiki/aidc/)(AI 数据中心推理服务)
│ ├── [AI服务器](/wiki/ai-server/)(单卡/多卡推理部署)
│ └── [AI推理终端](/wiki/edge-ai-device/)(边缘 KV 压缩与缓存)
└── 经济模型
├── 长上下文 = 成本线性增长(每 token 都需读 KV)
├── Prompt Caching = 缓存复用降本 90%
└── 推理服务商业模式受 KV Cache 物理规律约束
关键参数速查
| 参数 | 典型值 | 说明 |
|---|---|---|
| 单 token KV 大小(70B GQA) | 5 MB | 32 层 × 8 KV 头 × 128 维 × 2 × 2B |
| 1M context KV(70B GQA) | 5 GB | 长文本应用基准 |
| 70B 模型 batch=8, 32K context | 80 GB | 接近 H100 容量极限 |
| KV 量化收益(INT8) | 50% 容量 | 质量损失 < 0.1% |
| PagedAttention 收益 | 4x 吞吐 | 显存碎片化消除 |
| MLA 收益(vs MHA) | 5-10x KV 缩小 | DeepSeek-V3 报告 |
相关词条
3D DRAM
区别于HBM的"芯片堆叠+TSV+硅中介层"封装式3D,**3D DRAM**指**单元层级的立体堆叠**——将DRAM存储单元(1T1C)在单芯片内沿垂直方向多层堆叠,以突破传统DRAM的微缩极限。
存储芯片
AI数据中心"算力-带宽-存储"三角中的存储侧,覆盖**介质、内存、控制、模组、缓存**五大类的全栈芯片体系,是AI服务器性能与成本的关键瓶颈之一。
交换芯片
数据中心交换机的核心芯片,决定交换机的性能、功耗和功能。
趋肤效应
高频交流电/高速信号在导体中**集中于表面薄层**流动的物理现象,是覆铜板与铜箔在AI高速时代升级到HVLP的**根本驱动力**,也是112G/224G/448G SerDesPCB材料选型的核心物理基础。
主控芯片
SSD主控芯片(Controller),负责SSD内部的数据读写管理、磨损均衡、纠错等核心功能。 别名:**存储主控芯片**(存储芯片体系下的标准命名)。
AI推理终端
部署在边缘侧进行AI推理的设备,区别于云端AI数据中心。
DRAM
**D**ynamic **R**andom **A**ccess **M**emory,动态随机存取存储器。
eMMC
**eMMC** 嵌入式多媒体卡,将**NAND Flash 介质 + 主控芯片(控制器)集成在一个 BGA 封装**内的标准化嵌入式存储模块,对 Host 侧呈现"类 SD 卡"接口,**省去 Host 侧 FTL 管理**,主要用于移动设备 / 嵌入式系统 / 入门边缘 AI 的中低成本中等容量存储。