深入浅出Transformer:为什么大模型推理中只缓存K和V而不缓存Q?
文章解释了Transformer自回归推理中只缓存K和V而不缓存Q的原因。Q代表当前处理的token,需实时计算;K和V代表历史token信息,可通过缓存避免重复计算。这种优化使时间复杂度从O(n)降至O(1),显著提升生成效率,同时确保模型只能利用历史信息预测下一个token,符合自回归语言建模要求。
背景
我们之前内容提到,Transformer的Self-attention计算主要通过QKV三个矩阵进行计算,我们提升推理性能方面可使用KV两个矩阵进行缓存,而大家可能有个问题为什么Q不做缓存呢?下面会详细说明具体的原因。
Transformer Decoder计算
如下图所示,这里展示了Transformer Decoder所有模块的框架图

我们主要优化的组件就是Q、K、V三个内容
因为 Decoder-only Transformer 的任务是自回归(GPT模型)语言建模:
每一步只能根据已经生成的历史 token 来预测下一个 token,绝不能偷看未来信息。
为什么 Q 是当前 token,K/V 是历史信息?
在 Self-Attention 中,计算公式为:
- Query(Q):表示当前正在处理的 token(即模型当前正在预测的位置)。
- Key(K) 和 Value(V):表示所有历史 token(包括当前 token 本身),因为它们提供了用于计算注意力的上下文信息。
推理步骤与公式
1. 计算当前 token 的 Q, K, V
2. 构建完整的历史 Key 和 Value 矩阵
说明:将当前 token 的 拼接到缓存中,形成包含所有已生成 token 的完整矩阵。
3. 计算 Attention 分数(点积)
重点内容:为什么不是[q0, q1, …, qt+1] 进行相乘呢[q0, q1, …, qt+1] 与 K^T 相乘,这其实是 训练阶段 的标准做法。而在自回归生成(推理)阶段,我们只关心这个即将被生成的token的上下文是什么,所以我们只计算 q_{t+1} 这一个向量。 推理阶段(比如ChatGPT生成回答)是自回归的,即一个一个地生成token。 第1步: 给定x0,模型计算 q0,并生成第一个token x1。 第2步: 输入 x0, x1,模型需要生成第二个token x2。 第t+1步: 输入为 [x0, x1, …, x_t],模型需要生成下一个token x_{t+1}。
因此K可以通过缓存机制记录历史信息,而Q是当前位置x的内容,其是实时传入的没办法缓存
4. 缩放(Scale)
5. 应用因果掩码(Causal Mask)
其中 是掩码向量,满足:
- ,当 (允许关注当前及之前 token)
- ,当 (实际实现中用极小值如
-1e9代替)
应用因果掩码操作如图所示,相当于只关注之前的token,未来的token不做计算做了掩码
6. Softmax 归一化(得到注意力权重)
7.加权求和得到输出
这里也需要计算V的历史,可以通过缓存机制记录历史信息。因此K、V会进行缓存,而Q是实时计算
8.缓存更新(为下一个 token 准备)
以GPT为例,Attention 每个 Token 推理公式(自回归生成)
在自回归语言模型(如 GPT)中,文本是逐个 token 生成的。为了提升效率,Attention 计算会利用缓存(past_key, past_value)避免重复计算历史信息。
- 符号说明
| 符号 | 含义 |
|---|---|
| 当前输入 token 的嵌入向量, | |
| 已缓存的历史 Key 矩阵, | |
| 已缓存的历史 Value 矩阵, | |
| 可学习的投影权重矩阵 | |
| 当前 token 的 Query, Key, Value | |
| 当前 token 的 Attention 输出 |
✅ 关键优势:通过缓存机制,每个 token 的推理时间复杂度为 ,而非 ,显著提升生成效率。 综上所述,Q 是当前 token,K/V 是历史信息,确保模型只能利用过去的信息进行预测,符合自回归语言建模的要求。transformers_gpt2因此在Transformer的Decoder,会对KV历史信息进行缓存,而Q是根据当前输入实时计算的。
AI大模型学习和面试资源
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)