新PyTorch API:几行代码实现不同注意力变体,兼具FlashAttention性能和PyTorch灵活性

时间:2024-10-20 22:05:23来源: 驿路梅花网 作者:时尚
新PyTorch API:几行代码实现不同注意力变体,新PI行n性兼具FlashAttention性能和PyTorch灵活性 2024年08月10日 12:58 机器之心Pro 新浪财经APP 缩小字体 放大字体 收藏 微博 微信 分享 腾讯QQ QQ空间

用 FlexAttention 尝试一种新的代码注意力模式。

理论上,实现注意力机制就是不同你所需要的一切。然而在实际操作中,注意我们还需要优化像 FlashAttention 这样的力变h灵注意力机制的实现。

尽管这些融合的体兼注意力机制大大提高了性能,且支持长上下文,活性但这种效率的新PI行n性提升也伴随着灵活性的丧失。对于机器学习研究人员来说,代码这就像是实现一种「软件彩票」—— 如果你的注意力变体不适合现有的优化内核,你将面临运行缓慢和 CUDA 内存不足的不同困境。

一些注意力变体包括因果注意力、注意相对位置嵌入、力变h灵Alibi、体兼滑动窗口注意力、PrefixLM、文档掩码、不规则张量、PagedAttention 等。更糟糕的是,人们通常希望将这些变体组合在一起!比如滑动窗口注意力 + 文档掩码 + 因果注意力 + 上下文并行,又比如 PagedAttention + 滑动窗口的组合。

下图左侧代表了当今的现状 —— 一些掩码 + 偏置 + 设置的组合已经有现成的内核实现。然而,各种选项的添加会导致设置呈指数级增长。更糟糕的是,这种方式不会支持新的注意力变体。

相关内容
Baidu
map