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

AIGC动态4个月前发布 机器之心
15 0 0

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

AIGC动态欢迎阅读

原标题:新PyTorch API:几行代码实现不同注意力变体,兼具FlashAttention性能和PyTorch灵活性
关键字:注意力,变体,内核,性能,因果
文章来源:机器之心
内容字数:0字

内容摘要:


机器之心报道
编辑:陈陈用 FlexAttention 尝试一种新的注意力模式。理论上,注意力机制就是你所需要的一切。然而在实际操作中,我们还需要优化像 FlashAttention 这样的注意力机制的实现。
尽管这些融合的注意力机制大大提高了性能,且支持长上下文,但这种效率的提升也伴随着灵活性的丧失。对于机器学习研究人员来说,这就像是一种「软件彩票」—— 如果你的注意力变体不适合现有的优化内核,你将面临运行缓慢和 CUDA 内存不足的困境。
一些注意力变体包括因果注意力、相对位置嵌入、Alibi、滑动窗口注意力、PrefixLM、文档掩码、不规则张量、PagedAttention 等。更糟糕的是,人们通常希望将这些变体组合在一起!比如滑动窗口注意力 + 文档掩码 + 因果注意力 + 上下文并行,又比如 PagedAttention + 滑动窗口的组合。
下图左侧代表了当今的现状 —— 一些掩码 + 偏置 + 设置的组合已经有现成的内核实现。然而,各种选项的添加会导致设置呈指数级增长。更糟糕的是,这种方式不会支持新的注意力变体。为了彻底地解决这个超立方体问题,PyTorch 团队引入了


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

联系作者

文章来源:机器之心
作者微信:
作者简介:

阅读原文
© 版权声明

相关文章

暂无评论

暂无评论...