本次查询:KV Cache
中文解释:键值缓存
常见场景:大模型推理 / 文本生成 / 实时对话系统
一句话解释
KV Cache 是Transformer模型在自回归生成时,将每一层注意力计算中已经算好的Key和Value矩阵存下来,后续新token生成时直接复用,避免重复计算之前所有token的注意力分数。
为什么会被关注
大模型推理时,每次生成一个token都要重新计算自注意力,复杂度随序列长度平方增长。KV Cache 将已经计算过的Key/Value缓存起来,让后续每一步只需计算新token的Query与缓存中Key/Value的内积,复杂度降为线性,延迟可降低数倍甚至数十倍。
在实际应用中,如对话机器人、代码补全等实时场景,用户对首token延迟和生成速度非常敏感。KV Cache 让模型在长上下文下保持流畅交互,成为推理引擎(如vLLM、TensorRT-LLM)的核心优化手段。
核心逻辑
自注意力机制中,每个位置会生成Query、Key、Value三个矩阵。在自回归生成时,当前token只需与前面所有token的Key/Value做注意力计算。若不缓存,每步都要从头计算所有位置的Key/Value,浪费大量算力。
KV Cache 在预填充阶段(处理用户输入的初始prompt)一次性计算所有Key/Value并缓存,随后解码阶段每生成一个新token,只计算该token的Query及其对应的Key/Value,并将新Key/Value追加到缓存中。这样只需维护一个不断增长的缓存列表。
缓存占用显存,且随序列长度线性增长。因此需要管理缓存淘汰、内存复用(如PagedAttention)来平衡速度与资源。现代推理框架通过显存池化、预分配等技术优化KV Cache的存储效率。
常见场景
对话式AI:如ChatGPT、文心一言等,每次对话包含多轮交互,KV Cache 让每一轮回复生成时只需新增token的Key/Value,避免重复计算历史对话,大大减少响应时间。
流式生成:实时语音转录、代码自动补全等场景需要逐字快速输出。KV Cache 配合流式解码,使每个token的生成延迟降低到毫秒级,用户体验平滑。
长文本理解:模型处理超长上下文(如百万token级别)时,完整计算注意力几乎不可能。KV Cache 结合稀疏注意力或分层缓存,使推理在可接受的时间内完成。
容易混淆的点
KV Cache ≠ 普通数据库缓存。它缓存的是模型内部的注意力矩阵,不是用户输入文本。缓存数据是浮点数张量,对应用层完全透明。
KV Cache 与“缓存一致性”无关。模型生成是确定性的,缓存不会导致前后文不一致,因为缓存内容就是历史状态的精确副本。
并非所有模型都用KV Cache。严格来说,任何自回归Transformer都可以使用,但非自回归模型(如部分非因果注意力模型)或一次性生成所有token的模型不依赖它。另外,某些低显存场景下,为了省显存可能会选择性禁用KV Cache,但会极大增加计算量。
