内核案例研究:闪光注意

通过Triton实施了解所有版本的闪光注意力。后内核案例研究:Flash注意力首先出现在数据科学上。

来源:走向数据科学

机制是现代变形金刚的核心。但是,扩展这些变压器的上下文窗口是一个主要的挑战,即使我们正处于百万个令牌 +上下文窗口的时代(qwen 2.5 [1])。当我们缩放上下文窗口时,这些模型中都有相当大的计算和内存结合的复杂性(幼稚的注意机制在计算和内存需求中均高度缩放)。重新审视闪光的注意力使我们能够理解优化GPU的基础操作的复杂性,更重要的是,我们可以更好地理解下一步的事情。

[1] 注意机制

让我们快速重新审视一种天真的注意算法,以了解发生了什么。

注意算法。作者的图像

您可以看到我们是否不小心,那么我们最终将在GPU HBM中实现完整的NXM注意矩阵。这意味着内存需求将四处升高,以增加上下文长度。

如果您想了解有关GPU内存层次结构及其差异的更多信息,那么我先前在Triton上的文章是一个很好的起点。当我们在Triton中实施Flash注意力内核时,这也将非常方便。 Flash注意力纸也有一些非常好的介绍。
我以前在Triton上的文章 闪光注意力 闪光注意纸

此外,当我们查看执行该算法及其访问慢速HBM的模式时(如帖子后面所述,这也可能是主要的瓶颈),我们会注意到一些事情:

  • 我们在HBM中有Q,K和V。
  • 我们最初需要从HBM访问Q和K,以计算点产品
  • 我们将输出分数写回HBM
  • 我们再次访问它以执行SoftMax,并且可选地进行因果关注,例如在LLMS的情况下,我们将不得不在SoftMax之前掩盖此输出。由此产生的全部注意矩阵再次写入HBM
  • [2] [3] 4 5 o(n ** 2)to o(nlogn)
    视频

    指数中的数值稳定性

    6