KV Cache:大模型推理加速的核心机制

当 AI 模型生成文本时,它们经常会重复许多相同的计算,这会降低速度。KV Cache 是一种技术,它可以通过记住之前步骤中的重要信息来加快此过程。模型无需从头开始重新计算所有内容,而是重复使用已经计算过的内容,从而使文本生成更快、更高效。

从矩阵运算角度理解 KV Cache

让我们从最基础的注意力机制开始。标准的 self-attention 计算公式大家都很熟悉:

Attention(Q,K,V) = softmax(QK^T/√d_k)V

在实际应用中,随着上下文长度的增加,这个计算会变得非常昂贵。比如当我们有 10,000 个 token 时,QK^T 会产生一个 10,000×10,000 的巨大矩阵。在自回归生成过程中,每次预测新 token 都需要重新计算整个注意力矩阵。但仔细观察会发现,对于已经生成的 token,它们的 K 和 V 向量在每次计算中都是相同的。

以"我爱大模型"的生成过程为例:

  • 第1步:输入"我",预测"爱"
  • 第2步:输入"我爱",预测"大"
  • 第3步:输入"我爱大",预测"模"
  • 第4步:输入"我爱大模",预测"型"

在第4步计算时,"我爱大模"这四个字的 K 和 V 值与前面步骤中计算的完全相同。如果每次都重新计算,就是巨大的浪费。

从矩阵维度来看,每一步的计算实际上是在上一步的基础上增加一行一列。masking 机制确保了只有下三角部分参与计算,这意味着上一步计算的结果可以完全复用。

请添加图片描述

KV Cache 的核心思想是:缓存之前计算过的 K 和 V 向量,每次只计算新增 token 的部分

为什么不缓存 Q? 因为 Q 向量始终是当前步骤新生成的 token,没有复用价值。每次生成新 token 时,Q 是查询的量,即该值是基于每次的新 token 计算的。

具体来说:

  • 第1步:计算并缓存"我"的 K 和 V
  • 第2步:只计算"爱"的 K 和 V,与缓存的"我"组合使用
  • 第3步:只计算"大"的 K 和 V,与缓存的"我爱"组合使用
  • 依此类推…

这样,每一步的计算量从 O(n²) 降低到 O(n),其中 n 是当前序列长度。

让我们更仔细地看看这个过程:

第2步详细分析
当我们需要预测"大"时,传统方法会重新计算"我"和"爱"之间的所有注意力关系。但实际上:

  • "我"的 K 和 V 向量在第1步已经计算过
  • 我们只需要计算"爱"与"我"的关系,以及"爱"与自己的关系
  • 缓存的"我"的向量直接复用,避免重复计算

第3步时

  • "我"和"爱"的 K、V 向量都已缓存
  • 只需计算"大"与之前所有 token 的关系
  • 上一步形成的注意力权重矩阵的上三
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非常大模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值