Add flash attention
add flash attention to BaichuanAttention
class.
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?不知道有没有猜错。您可否再表达一下。
如果是这个猜测,那么是否可以分享一下相关的文档。感谢!
我这边主要做了几个努力:
- 先检查的两种计算方法是有数值是有差异,确保没有差异。
- 比较了两种计算效率,确实scaled_dot_product_attention计算效率比原始方法要快,但是没快太多。
- 仔细阅读了相关代码,你们把pos_embedding、alibi全都融合在attention_mask里面,设计的很巧妙,优秀~
这里麻烦大佬帮忙解释一下,谢谢~
是的,你猜的没错。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里面了
是的,你猜的没错。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