MindSpore2.2.10用Flash attention特性报错AttributeError: module 'mindspore.nn'has no attribute 'FlashAttention'

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend
MindSpore版本: 2.1
执行模式(PyNative/ Graph): 不限

2 报错信息

2.1 问题描述

使用低于2.2.10版本的MindSpore会出现如下报错:

File "/opt/mindformers/mindformers/models/gpt bigcode/gpt_ bigcode_modules .py", line 443, in __init__parallel config=attention parallel config)  
File "/opt/mindformers/mindformers/models/gpt bigcode/gpt bigcode modules.py", line 126, in init  self.flash attention= nn.FlashAttention (self.size per head, attention_dropout_rate, prev_block_num=65536,  
AttributeError: module 'mindspore.nn'has no attribute   'FlashAttention'

3 根因分析

低版本MindSpore不支持flash attention(如MindSpore2.0beta、MindSpore2.1),需要升级高版本才能支持这个特性。

4 解决方案

  1. 当在使用低版本MindSpore出现flash attention报错时(如MindSpore2.0beta、MindSpore2.1),可以先改用常规self-attention替换flash attention算法,从而规避报错。
  2. 使用MindSpore2.2.10版本。