KV Cache 是大语言模型、Transformer、文本生成、推理加速和大模型部署中非常重要的一个术语。KV 是 Key-Value 的缩写,Cache 表示缓存,因此 KV Cache 可以理解为“键值缓存”。它用来描述一种在大语言模型生成文本时,把已经计算过的 Key 和 Value 保存下来、后续生成时直接复用的机制。换句话说,KV Cache 是在回答:模型为什么能更快地一个 token 一个 token 生成文本。

在 GPT 这类自回归模型中,文本不是一次性全部生成出来的,而是每次生成一个 token。每生成一个新 token,模型都需要根据已有上下文计算注意力。如果每一步都重新计算所有历史 token 的注意力表示,计算量会非常大。KV Cache 的作用,就是把历史 token 的 Key 和 Value 缓存起来,避免重复计算。

因此,KV Cache 常用于大语言模型推理、对话生成、长文本生成、流式输出、本地部署和推理服务优化中,是理解大模型推理性能的重要基础概念。

一、基本概念:什么是 KV Cache

KV Cache 是 Transformer 自注意力机制中的一种缓存技术。

在注意力机制中,每个 token 通常会被映射成三类向量:Query、Key、Value。

它们常简写为 Q、K、V,其中:

• Q 表示当前 token 发出的查询

• K 表示各 token 可被匹配的键

• V 表示各 token 携带的信息内容

注意力机制可以简化表示为:

其中:

• Q 表示查询矩阵

• K 表示键矩阵

• V 表示值矩阵

• d_k 表示 Key 向量维度

• softmax 用于把相似度转换为注意力权重

在自回归生成中,历史 token 的 K 和 V 一旦计算出来,在后续步骤中通常不会改变。于是可以把它们保存起来。这就是 KV Cache。

从通俗角度看:KV Cache 就像模型的“上下文计算笔记”。前面已经读过的内容,不必每次都重新读一遍,而是把关键结果保存下来,后面继续生成时直接查用。

二、为什么需要 KV Cache

大语言模型生成文本时,通常是逐 token 生成。

例如:人工智能 → 正在 → 改变 → 世界。

当模型生成“改变”时,需要参考前面的“人工智能 正在”。

当模型继续生成“世界”时,又需要参考“人工智能 正在 改变”。

如果没有 KV Cache,每一步都要重新计算所有历史 token 的 K 和 V。生成越长,重复计算越多。

可以简单理解为:

• 无 KV Cache:每生成一步,都重新计算全部上下文

• 有 KV Cache:历史 K、V 复用,只计算新 token

打开网易新闻 查看精彩图片

图 1:无缓存与有 KV Cache 对比

从通俗角度看:没有 KV Cache,模型像每写一个字都重新通读全文。有了 KV Cache,模型像保留了阅读笔记,每次只处理新加入的内容。

这能明显提升生成速度,尤其是在长文本、长对话和流式输出场景中。

三、KV Cache 如何工作

KV Cache 的基本工作流程可以分为两部分。

打开网易新闻 查看精彩图片

图 2:KV Cache 生成步骤解析

1、首轮输入:建立缓存

用户输入提示词后,模型会一次性处理这些 token。

例如:

请解释什么是机器学习

模型会为每一层、每个注意力头计算对应的 K 和 V,并把它们保存到缓存中。

可以简单表示为:输入 token → 计算 K、V → 写入 KV Cache。

2、逐步生成:复用缓存

当模型生成新 token 时,只需要计算这个新 token 的 Q、K、V。

然后:

• 新 token 的 Q 会和缓存中的历史 K 做注意力匹配

• 注意力权重会作用在缓存中的历史 V 上

• 新 token 的 K、V 会追加到 KV Cache 中

可以概括为:新 token → 计算新 K、V → 读取历史 K、V → 生成下一个 token → 更新缓存。

从通俗角度看:KV Cache 不是保存最终答案,而是保存注意力机制已经计算好的历史上下文信息。

四、没有 KV Cache 与有 KV Cache 的区别

1、没有 KV Cache

假设已经生成了 1000 个 token,要生成第 1001 个 token。

如果没有 KV Cache,模型需要重新处理前面 1000 个 token,重新计算它们在各层中的 K 和 V。这会造成大量重复计算。

2、有 KV Cache

如果有 KV Cache,前面 1000 个 token 的 K 和 V 已经保存。

生成第 1001 个 token 时,只需要计算新 token 的 K 和 V,并与历史缓存交互。

因此,KV Cache 可以把重复计算显著减少。

可以概括为:

• 无缓存:重复算历史

• 有缓存:只算新增 token

3、速度与显存的交换

KV Cache 的本质是一种“用显存换速度”的技术。它减少了重复计算,但需要保存大量 K 和 V。因此,它会增加显存占用。

从工程角度看:KV Cache 提升生成速度,但会消耗更多显存。

这也是长上下文推理时显存压力很大的重要原因之一。

五、KV Cache 为什么会占显存

KV Cache 需要为每一层、每个注意力头、每个历史 token 保存 K 和 V。

打开网易新闻 查看精彩图片

图 3:KV Cache 与显存、上下文长度的关系

因此,它的大小与以下因素有关:

• batch size

• 上下文长度

• 模型层数

• 注意力头数量

• 每个头的维度

• 数据精度

可以简化理解为:

其中:

• B 表示 batch size

• L 表示上下文长度

• N 表示层数

• H 表示注意力头数

• D 表示每个头的维度

从通俗角度看:

• 上下文越长,要保存的历史 K、V 越多

• 并发越高,要为更多请求保存缓存

• 模型越大,每个 token 对应的缓存也越大

因此,长上下文和高并发服务常常会受到 KV Cache 显存占用限制。

六、KV Cache 与上下文窗口

上下文窗口越长,KV Cache 越重要,也越占显存。

例如,一个模型支持 8K、32K、128K 甚至更长上下文时,模型需要保存更多历史 token 的 K 和 V。

这带来两个影响。

1、长上下文生成更依赖缓存

如果没有 KV Cache,长文本生成会非常慢。

因为每一步都要重新计算大量历史 token。

2、长上下文占用更多显存

KV Cache 会随上下文长度增长而增长。

因此,长上下文模型虽然能处理更多内容,但部署时需要更大的显存预算。

从通俗角度看:上下文窗口像模型能同时参考的“阅读范围”。KV Cache 像为这段阅读范围保存的“计算笔记”。阅读范围越大,笔记也越厚。

七、KV Cache 与量化

KV Cache 也可以量化。

在大模型部署中,除了量化模型权重,也可以尝试量化 KV Cache。

例如:FP16 KV Cache → INT8 KV Cache。

这样可以减少显存占用。

不过,KV Cache 量化可能影响生成质量,尤其在长上下文和复杂推理中需要谨慎评估。

可以概括为:

• 权重量化:减少模型参数占用

• KV Cache 量化:减少生成过程中的上下文缓存占用

从实践角度看,KV Cache 优化是长上下文推理、高并发服务和本地部署中的重要方向。

八、KV Cache 的优势、局限与常见误解

1、KV Cache 的主要优势

KV Cache 最大的优势是加速自回归生成。

它可以:

• 减少重复计算

• 提高生成速度

• 支持流式输出

• 提升长文本生成效率

• 改善对话系统响应体验

从通俗角度看:KV Cache 让模型不用反复“重读历史”,所以生成更快。

2、KV Cache 的主要局限

KV Cache 也有明显局限。

首先,它会增加显存占用。

尤其在长上下文、高并发、多轮对话中,KV Cache 可能成为显存瓶颈。

其次,它主要适用于自回归生成。

对于一次性编码任务,KV Cache 的作用并不相同。

再次,KV Cache 不会提高模型本身的知识水平或推理能力。

它只是推理加速机制,不是训练方法,也不是模型能力增强方法。

3、常见误解

误解一:KV Cache 会让模型更聪明。

不对。它主要让模型生成更快,不会直接提高模型质量。

误解二:KV Cache 可以减少所有显存。

不对。它减少重复计算,但会额外保存 K、V,因此通常增加缓存显存。

误解三:上下文越长,速度一定越快。

不对。KV Cache 能避免重复计算,但长上下文仍会带来更大的注意力计算和缓存开销。

误解四:KV Cache 和模型参数是一回事。

不对。模型参数是训练得到的权重;KV Cache 是推理过程中根据当前上下文临时生成的缓存。

九、Python 示例

下面用简化示例帮助理解 KV Cache 的思想。

示例 1:用字典模拟缓存

这个例子表示:历史 token 的 K 和 V 被保存起来,后续可以复用。

示例 2:生成新 token 时追加缓存

生成新 token 后,它的 K 和 V 会追加到 KV Cache 中。

示例 3:复用历史 K、V

这个例子展示了:当前 token 的 Q 会与历史 K、V 交互,从而利用已有上下文。

示例 4:缓存长度随生成增长

    

随着生成继续,KV Cache 会不断增长。这说明:生成越长,缓存越大。

小结

KV Cache 是大语言模型推理中的键值缓存机制,用来保存历史 token 在注意力机制中的 Key 和 Value。它可以避免每一步生成时重复计算历史上下文,从而显著加快自回归生成速度。但 KV Cache 会占用额外显存,并且随着上下文长度和并发数量增加而增长。对初学者而言,可以把 KV Cache 理解为:模型生成文本时保存的“上下文计算笔记”。

点赞有美意,赞赏是鼓励