文章标题:
flash-attn出现CUDA库符号缺失状况的处理方式
文章内容:
出现了ImportError: /data/Matrix/lib/python3.10/site-packages/flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol: _ZN3c104cuda9SetDeviceEi这样的报错。
根本缘由:凡是flash-attn碰到的问题,都是由于版本不契合引发的,所以找到适配的flash-attn版本安装就能解决问题。下面来介绍具体操作步骤。
- 卸载已有的flash-attn:先在命令行输入
pip uninstall flash-attn
,然后输入y确认卸载。 - 查看自身对应的torch版本、cuda版本和python版本
- ①查看torch版本:
可以通过pip show torch
命令查看,返回结果里能看到torch版本,比如这里torch版本是2.0.1。另外,如果不是用pip安装的torch,还能通过Python代码查看,如下:
python
import torch
print(torch.__version__) # 用于查看torch版本 - ②查看cuda版本:在命令行输入
nvcc -V
,能看到cuda版本为V12.1.66。 - ③查看python版本:在命令行输入
python --version
,可知python版本是3.10.16。 - 去flash attention官网找对应安装包下载:访问flash attention官网,依据自身的torch版本、cuda版本(可以选低于自身cuda版本的)和python版本来挑选安装包,同时要选择abiFALSE系列的。这里要是没有特殊版本要求,推荐flash-attn的2.5.8版本系列,比较稳定且经很多项目验证可行,在官网链接的第三页。右键复制链接,在linux系统中用wget + 链接来下载whl安装包,例如:
bash
wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.8/flash-attn-2.5.8+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
最后用pip安装下载好的whl文件,命令是pip install your/flash-attn-whl/path
(把your/flash-attn-whl/path替换成实际路径),等待一会下载完成就搞定啦。
总结:
近期在使用flash-attn加速大模型时碰到了各类bug,主要是报flash-attn版本和transformer、deepspeed版本冲突等问题,但本质还是flash-attn版本安装不正确,安装与上述三个环境相匹配的版本就能解决问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...