[已解决] flash-attn报错flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol

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版本

①查看torch版本

pip show torch

返回如下结果,可知torch版本为2.0.1

或:如果不是用pip下载的torch,还可以用下面的方式查找

import torch
print(torch.__version__) # 查看torch版本

②查看cuda版本

nvcc -V

cuda版本为V12.1.66

③查看python版本

python --version

python版本为3.10.16

3, 去flash attention官网找到对应的安装包下载,选择包时要根据自己的torch版本,cuda版本(可以选择低于自己cuda版本的) 和python版本进行选择. 同时选择abiFALSE系列.

这里如果没有什么特定版本需要的话,推荐flash-attn为2.5.8版本系列,因为比较稳定加上很多项目验证过可行,在链接的第三页。

右键复制链接,在在linux中使用wget + 链接进行whl安装包的下载:

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 install whl下载位置,等待一小会下载flash-attn,就完成了!

pip install your/flash-attn-whl/path(替换为你的路径)

总结:最近在使用flash-attn加速大模型加速的时候遇到了各种各样的bug,主要就是报flash-attn版本与transformer还有deepspeed版本冲突等各种各样的问题,但是本质上还是因为flash-attn版本没有安装正确的原因,安装与你上述三个环境相符的版本即可解决问题。

### 下载适用于 Windows 的 `flash_attn` 轮子 对于 Windows 系统,下载适合的 `flash_attn` whl 文件需要特别注意其兼容性。通常情况下,官方发布的预编译二进制文件主要针对 Linux 和 macOS 平台提供支持。然而,在某些社区贡献下可能存在部分 Windows 版本的支持。 以下是关于如何选择并安装合适版本的信息: #### CUDA、PyTorch 和 Python 版本匹配 为了确保所选轮子能够正常工作,需确认以下几点: - **CUDA 版本**: 所述目标为 cu11 (即 CUDA 11),因此需要确保本地环境已配置对应版本的 NVIDIA 驱动程序和支持库[^1]。 - **PyTorch 版本**: 提到的目标 PyTorch 版本为 2.2,这表明应选用与该版本完全一致或向后兼容的依赖项。 - **Python 版本**: 当前指定的是 cp311(代表 Python 3.11),这意味着最终选定的 wheel 应当标记有此 ABI 标识符。 由于原始链接指向了一个基于 Linux 架构构建的 `.whl` 文件 (`linux_x86_64`),而您希望获取适配于 Windows 的版本,则建议采取如下方法之一来解决这一需求: #### 方法一:查找第三方资源中的 Windows Wheel 可以尝试访问一些公开存储库或者开发者论坛寻找由其他用户上传至网络上的 windows-specific builds of the same package name pattern, such as GitHub Releases or personal repositories hosting precompiled binaries. 请注意验证这些外部来源的安全性和可靠性之前不要轻易运行未经测试的内容! #### 方法二:自行编译 Flash Attention for Windows 如果无法找到现成可用的 Windows-compatible wheels 符合上述条件的话,另一个可行方案就是按照项目文档指示手动完成源码级移植过程: 1. 获取最新版代码仓库副本; 2. 安置好必要的开发工具链包括但不限于 Microsoft Visual Studio C++ Build Tools; 3. 修改 Makefile 或 setup.py 中涉及平台特定设置的部分使其适应 Win32/Win64体系结构特性; 4. 使用命令行触发整个 build 流程直至生成新的 .whl 输出产物为止; 下面给出一段简单的伪代码用于展示可能的操作步骤(实际操作可能会更加复杂取决于具体实现细节): ```bash git clone https://github.com/HazyResearch/flash-attention.git cd flash-attention/python/ pip install --upgrade setuptools wheel cython python setup.py bdist_wheel --plat-name win_amd64 ``` 最后得到的结果应该是一个类似于这样的路径下的新文件:`./dist/flash_attn-<version>-py3-none-win_amd64.whl`. #### 注意事项 无论采用哪种方式获得所需的包,请务必再次核验它的元数据字段是否满足最初设定的要求列表,并通过常规手段检验其功能性表现良好无误之后再投入正式使用环境中去部署应用实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值