美团秋招一面:为什么有KV-Cache没有Q-Cache?


美团秋招一面:为什么有KV-Cache没有Q-Cache?

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

美团秋招一面:为什么有KV-Cache没有Q-Cache?
是时候准备实习和面试了。
不同以往的是,当前职场已不再是那个双向奔赴时代了。求职者在变多,HC在变少,岗位要求还更高了。
最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。
总结链接如下:
《大模型算法工程师经典百问典》(2025版)正式发布!
《算法工程师直通大厂面经汇总》(2025版)正式发布!
喜欢本文记得收藏、关注、点赞。更多实战和面试交流,文末加入我们星球
为什么有KV-Cache没有Q-Cache?这是大模型面试中常见的一道面试题,很多同学都搞不明白,今天就为大家详细解析这道面试题。
01
为什么有必要对KV进行cache?
我们经常看到这样的表述:LLM以自回归的方式进行生成,每次迭代会将上一步的输出拼接到到上一步的输入末尾,作为本轮的输入。
事实上这句话有一定误导性,相信由此疑问的同学也是被这种表述搞迷糊了。
但是这并不影响我们理解KV-Cache的必要性,假设输入时[a,b,c],看下是如何计算的:
iter1
(1)得到Q/K/V
(2)解码下个token
经过n个transformerblock以后,最终得到out’,它的shape也是3xd,取最后一个token(假设d与此表大小相同),通过预设好的解码策略。
假设是最简单的argmax,找到最后一个token的d个维度上数值最大的那一个idx,通过查表得到下一个token。
上一轮得到了d,那么根据上述自回归的表述,此轮输入为[a,b,c,d],我们来看下计算过程。
(1)得到Q/K/V
跟上一轮的计算完全一致,不同的是本轮输入变成了[a,b,c,d],由于这个计算过程等效于单个token计算最终再拼接到一起,因此我们很容易发现a、b、c实际上在上一步已经计算过了,属于重复计算。
那一个很自然的想法就是,如果上一步将a’、b’、c’缓存起来,那就可以减少计算,从而加速推理。到这里,我们应该很容易理解缓存KV的必要性。
02
为什么不需要缓存Q
先说结论,因为除了第一轮,后续迭代的输入根本不是完整的序列,而是只输入上一步得到的token。
为什么会这样?原因很简单,因为从上述生成过程我们可以得知,在解码下一个token时,实际上只用到了最后一个位置的token,即解码只需要一个1xd的向量。
以上一轮为例,输入是[a,b,c],虽然经过n个transformerblock后,我们得到了一个3xd的矩阵,实际上只取最后一个位置,即c对应的embedding来解码。
整个计算过程如下:
第1轮:
输入:[a,b,c]
经过n个transformerblock后得到[a’、b’、c’],在这个过程中缓存a,b,c对应的K和V
取c’解码
输出:d
第2轮:
输入:[d]
计算d对应的k和v,将其拼接到上一步缓存的K和V中,拼接后K和V的shape为4xd
经过n个transformerblock后得到[d’],在这个过程中缓存a,b,c,d对应的K和V
取d’解码
输出:e

03
为什么不直接缓存attentionscore或者attentionweight’
作者:包龙星的剑
来源:https ://zhuanlan. zhihu.com/p/1923107346034435833
llms大厂面试题宝典(知识星球)来了,这是一个面向全体学生和机器学习/算法/大模型/科研人员的技术沟通和求职交流的平台。
在这里你可以了解最前沿AI技术资讯、Paper、大模型、多模态,算法竞赛、实战项目、获取AI算法的校招/社招准备攻略、面试题库、面试经验分享、Offer选择、内推机会、学习路线、求职答疑和海量学习资料等内容。
同时,你也可以与来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
llms大厂面试题宝典方向涉及搜广推、深度学习,机器学习,计算机视觉,知识图谱,自然语言处理,大数据,自动驾驶,强化学习,大模型、多模态、具身智能等多个方向。
我们会不定期开展知识星球现金立减优惠活动,加入星球前可以添加我微信:
yangyiya2002,咨询活动详情。iOS用户直接添加我微信进星球。


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录