flash-attn出现CUDA库符号缺失报错情况

5天前发布 gsjqwyl
6 0 0

文章标题:

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版本安装就能解决问题。下面来介绍具体操作步骤

  1. 卸载已有的flash-attn:先在命令行输入pip uninstall flash-attn,然后输入y确认卸载。
  2. 查看自身对应的torch版本、cuda版本和python版本
  3. ①查看torch版本
    可以通过pip show torch命令查看,返回结果里能看到torch版本,比如这里torch版本是2.0.1。另外,如果不是用pip安装的torch,还能通过Python代码查看,如下:
    python
    import torch
    print(torch.__version__) # 用于查看torch版本
  4. ②查看cuda版本:在命令行输入nvcc -V,能看到cuda版本为V12.1.66。
  5. ③查看python版本:在命令行输入python --version,可知python版本是3.10.16。
  6. 去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版本安装不正确,安装与上述三个环境相匹配的版本就能解决问题。

© 版权声明

相关文章

暂无评论

暂无评论...