新PyTorch API:几行代码实现不同注意力变体,兼具FlashAttention性能和PyTorch灵活性
用 FlexAttention 尝试一种新的代码注意力模式。
理论上,实现注意力机制就是不同你所需要的一切。然而在实际操作中,注意我们还需要优化像 FlashAttention 这样的力变h灵注意力机制的实现。
尽管这些融合的体兼注意力机制大大提高了性能,且支持长上下文,活性但这种效率的新PI行n性提升也伴随着灵活性的丧失。对于机器学习研究人员来说,代码这就像是实现一种「软件彩票」—— 如果你的注意力变体不适合现有的优化内核,你将面临运行缓慢和 CUDA 内存不足的不同困境。
一些注意力变体包括因果注意力、注意相对位置嵌入、力变h灵Alibi、体兼滑动窗口注意力、PrefixLM、文档掩码、不规则张量、PagedAttention 等。更糟糕的是,人们通常希望将这些变体组合在一起!比如滑动窗口注意力 + 文档掩码 + 因果注意力 + 上下文并行,又比如 PagedAttention + 滑动窗口的组合。
下图左侧代表了当今的现状 —— 一些掩码 + 偏置 + 设置的组合已经有现成的内核实现。然而,各种选项的添加会导致设置呈指数级增长。更糟糕的是,这种方式不会支持新的注意力变体。
本文地址:http://changchun.tanzutw.com/news/17f199888.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。