add flash attention to BaichuanAttention class.

Baichuan Intelligent Technology org

Actually, scaled_dot_product_attention will not invoke either flash attention or memory_efficient attention because of mask.

我亲爱的wuzhiying大佬,下午好。

您说的这句话到底是啥意思,我大概搞了一两个小时,没搞懂。

我猜测,您表达的意思是:pytorch的scaled_dot_product_attention函数,在有mask的情况下,不会flash attention、不会memory_efficient?不知道有没有猜错。您可否再表达一下。

如果是这个猜测,那么是否可以分享一下相关的文档。感谢!

我这边主要做了几个努力:

  1. 先检查的两种计算方法是有数值是有差异,确保没有差异。
  2. 比较了两种计算效率,确实scaled_dot_product_attention计算效率比原始方法要快,但是没快太多。
  3. 仔细阅读了相关代码,你们把pos_embedding、alibi全都融合在attention_mask里面,设计的很巧妙,优秀~

这里麻烦大佬帮忙解释一下,谢谢~

Baichuan Intelligent Technology org

是的,你猜的没错。scaled_dot_product_attention会根据输入去选择调用哪个attention,一共有3个选择,你可以参考pythorch代码看一下。

是的,你猜的没错。scaled_dot_product_attention会根据输入去选择调用哪个attention,一共有3个选择,你可以参考pythorch代码看一下。

如果我要加入flashattention,我如何把alibi也加进去呢?
因为似乎百川的alibi矩阵跟原始论文实现有点差别。

是的,你猜的没错。scaled_dot_product_attention会根据输入去选择调用哪个attention,一共有3个选择,你可以参考pythorch代码看一下。

如果我要加入flashattention,我如何把alibi也加进去呢?
因为似乎百川的alibi矩阵跟原始论文实现有点差别。

因为他们把pos_embedding、alibi全都融合在attention_mask里面了

Baichuan Intelligent Technology org

是的,你猜的没错。scaled_dot_product_attention会根据输入去选择调用哪个attention,一共有3个选择,你可以参考pythorch代码看一下。

如果我要加入flashattention,我如何把alibi也加进去呢?
因为似乎百川的alibi矩阵跟原始论文实现有点差别。

flash-attn貌似还不支持mask

是的,你猜的没错。scaled_dot_product_attention会根据输入去选择调用哪个attention,一共有3个选择,你可以参考pythorch代码看一下。

如果我要加入flashattention,我如何把alibi也加进去呢?
因为似乎百川的alibi矩阵跟原始论文实现有点差别。

flash-attn貌似还不支持mask

flash-attn 有个trition 版本的。支持标准的alibi

Ready to merge
This branch is ready to get merged automatically.

Sign up or log in to comment