加载Llama2模型时遭遇flash_attn导入错误求助
问题描述
加载Llama2模型时使用以下代码:
model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=bnb_config, device_map=device_map )
对应的bnb_config配置:
BitsAndBytesConfig { "bnb_4bit_compute_dtype": "bfloat16", "bnb_4bit_quant_type": "nf4", "bnb_4bit_use_double_quant": true, "llm_int8_enable_fp32_cpu_offload": false, "llm_int8_has_fp16_weight": false, "llm_int8_skip_modules": null, "llm_int8_threshold": 6.0, "load_in_4bit": true, "load_in_8bit": false, "quant_method": "bitsandbytes" }
运行后报错:
RuntimeError: Failed to import transformers.models.llama.modeling_llama because of the following error (look up to see its traceback): cannot import name 'flash_attn_func' from 'flash_attn' (/opt/conda/lib/python3.10/site-packages/flash_attn/__init__.py)
解决方法
方法1:禁用Flash Attention(快速解决)
在模型加载代码中添加attn_implementation="eager"参数,强制使用常规注意力实现,绕开Flash Attention的依赖问题:model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=bnb_config, device_map=device_map, attn_implementation="eager" )方法2:安装兼容版本的Flash Attention
若需要保留Flash Attention功能,需确保安装的flash_attn版本与transformers版本匹配:- 卸载现有版本:
pip uninstall -y flash_attn - 安装兼容版本(适配transformers 4.30+推荐安装2.3.0及以上版本):
注意:安装需匹配当前环境的CUDA版本,否则可能编译失败。pip install flash-attn --no-build-isolation
- 卸载现有版本:
方法3:降级transformers版本
若上述方法无效,可降级transformers至不依赖flash_attn_func的版本,比如4.29.x系列:pip install transformers==4.29.2
内容的提问来源于stack exchange,提问作者Hamid K
相关产品推荐
相关产品推荐

