@OneCoinContinue为什么是KV-Cache而不是QKV-Cache 中发帖

推理时只需要最后一个 token 的 Q,配合完整的历史 K 和 V,就能生成下一个 token!当然还有一个前提——大语言模型得是生成式的——类似transformer中encoder的结构——注意力的计算受因果关系约束——这种特性确保之前的q的对应输出不会被新的q、k、v影响!这就是为什么只需要对每层的KV进行缓存!会混淆的原因就是因为被训练时的矩阵计算迷惑了,但请仔细想想,训练时整个Q矩阵都参与计算是为了并行训练,而训练时也是使用上一个token对应的最终输出来预测下一个token!至于为什么每层都能缓存,因为一个transformer块里最后要经过的FFN是逐位置/token计算的——token之间不会相互影响,一个块最终输出的形状与序列刚经过embedding的形状是一致的,会被送往下一个块,后续就与第一块一致了! 
tip:同样根据transformer中去掉cross-att...