在棕榈纸的附录B(Https://arxiv.org/pdf/2204.02311)中,它描述了一个称为“模型Flops利用率(MFU)”的度量标准,以及用于估计它的公式。它的计算利用了一个陈述的事实:“密集的自我注意事项中的矩阵添加了每个令牌的6lh(2qt)拖鞋,其中l,h,h,q和t是层的数量,头部数量,头部尺寸和序列长度分别。”我需要帮助了解作者如何到达6LH(2QT)值。 我的思维过程是人们:对于每一层和头(LH),我们将不得不计算自我注意力。自我关注将需要查询键的乘法。这些查询 - 键乘法中的每一个都需要Q(即Head_embedding_dim)乘法和Q-1〜Q添加,这将导致大约2Q操作。对于给定的令牌,此查询键的乘法将发生序列长度(t),因为给定查询向量将乘以其他所有令牌的密钥向量。到目前为止,在自我发挥的前进中,我们将为每个令牌进行LH(2QT)操作。但是,我们也应该考虑向后。在每个层和头部(LH)的反向传播期间,我们需要计算嵌入(Q),查询权重(W_Q),密钥权重(W_K)和值权重(W_V)的梯度。这将给出4*(LH(2QT))。因此,通过将前向通过计算(LH(2QT))与向后通过计算(4*(lh(2QT))))我获得的每个令牌(5LH(2QT))操作,该操作少于上面的论文。 我真的很喜欢详细且易于理解的解释。谢谢
这是我理解的方式。我首先说明了前进通行证。
自我注意事项是SoftMax(Qkt
)V(忽略了Flop计算中的缩放系数,并为在不同事物中使用相同的符号而感到遗憾!)。t
是(1xq)和(qxt)之间的乘法,该乘积具有〜2QT操作。该操作产生了一个大小(1xt)的单个向量。
但仍有计算软磁性(qkt)和V之间的产品的操作。该产品在矢量(1xt)和矩阵(TXQ)之间,该矩阵(TXQ)再次具有〜2QTOperations.。
纠正这两个步骤,我们得到2(2QT)。最后,我们按头(H)和层数(L)的数量扩展,为前向通行证给我们2LH(2QT)。如果我们向后倾斜两倍,我们将获得:2LH(2QT)(1 + 2)= 6LH(2QT)= 12LQT flops pertoken.