阿里大模型面试原题:LLM推理为什么用KV Cache
LLM推理加速:为什么只有KV Cache,没有Q Cache?

这个问题其实很直观——LLM在自回归解码(decoding)阶段,每一次推理只用到当前的Q,这次用完了,下次就不会再用它了。但K和V不一样,当前这一步用到的K和V,下一步还得再重复用,而且还得把新生成的token的KV也加进去。所以缓存KV就能省去大量重复计算,而缓存Q则毫无意义。
道理说完了,但面试官往往会追问一句:“Attention公式里Q和K长得那么对称,凭什么只Cache K不Cache Q?” 那我们就从公式底层掰扯清楚。
从矩阵运算看对称性如何被打破
先把Attention中的Q、K、V写成矩阵分块的形式。Q和K的转置做矩阵乘法,这一步看上去K和Q是可以互换的,对称得很漂亮。但到了下一步,V的引入就打破了这种对称。
忽略缩放系数,第i行的softmax结果简写为s_i,那么Attention的输出就是每个位置的softmax权重与对应V的加权和:
在没有Causal Mask(因果掩码)的情况下,这个操作天然是对称的——Q和K互换位置,结果形式不变。但一旦加入Causal Mask,情况就完全不一样了。
有Causal Mask时,当前token只能看到自己和之前的token,不能看到未来。这时候Attention计算变成:
写出通项公式:
- 无Causal Mask:每个位置的输出依赖于所有位置的Q、K、V。
- 有Causal Mask:第t个位置的输出只依赖于位置1到t的K、V,以及当前位置的Q。
关键差异就在这里:在序列的第t个位置,Q只有当前这个 q_t 参与了计算,而K和V却有t个位置(1到t)都参与。所以,我们需要缓存历史所有位置的K和V,但完全不需要缓存历史Q——它们早就没用过了。
值得一提的是,如果没有Causal Mask,计算第t个位置的Attention还需要用到未来位置的KV,这在自回归推理中根本不可能提前得到。加上Causal Mask之后,只需要1,2,…,t位置的KV,推理才能顺利进行。这也解释了为什么KV Cache不仅是一种优化,更是自回归解码能够高效运行的基础。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名