我正在查看解码器期间使用的形状(self-attention 和 enc-dec-attention 块),并了解解码器在训练期间的运行方式与基于此链接和原始Attention 论文的推理期间的运行方式有所不同
在推理中,它使用在该时间步(例如第时间步)之前生成的所有先前标记k
,如下图所示并在此链接中进行了解释。
问题:
然而,当我查看解码器自注意力中 QKV 投影的实际形状,并将解码器自注意力输出馈送到“enc-dec-attention”的 Q 矩阵时,我只看到输出中的 1 个标记是用过的。
我很困惑解码器的自注意力和 enc-dec-attention 中所有矩阵的形状如何在推理过程中与解码器的可变输入长度相匹配。我查看了几个在线材料,但找不到答案。我只看到解码器的自我注意(不是 enc-dec-attention)中的 BGemms 使用可变形状,直到所有前面的k
步骤,但所有其他 Gemms 都是固定大小的。
- 这怎么可能?是否只有 1 个令牌(来自解码器输出的最后一个)用于自我注意中的 qkv matmuls 和 enc-dec-attention 中的 Q-matmul(这是我在运行模型时看到的)?
- 有人可以详细说明一下 QKV 在 self-attention 中的所有这些形状和在 enc-dec-attention 中的 Q 与解码器输入长度在每个时间步的不同之处如何匹配?**
另一个显示解码器中的自我注意和 enc-dec-attention 的图表: