FlashAttention安装失败的一种可能的原因,nvcc -V与nvidia-smi显示的CUDA版本号不一样

$ pip install flash-attn --no-build-isolation
报错
RuntimeError: FlashAttention is only supported on CUDA 11.7 and above. Note: make sure nvcc has a supported version by running nvcc -V.

  torch.__version__  = 2.0.1+cu117

使用nvidia-smi看CUDA版本没有问题
$ nvidia-smi
Tue Apr 1
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI Driver Version: CUDA Version: 12.4 |

使用nvcc -V查看,发现版本与nvidia-smi不一样
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

使用以下操作可以解决
nvidia-smi 输出能够了解到,系统里安装了 NVIDIA 显卡驱动,版本是 550.144.03,并且支持的 CUDA 版本为 12.4。 nvcc -V 时显示的 CUDA 版本是 10.1,这表明系统里安装了多个 CUDA 版本,而当前 nvcc 指向的是旧版本的 CUDA。

可能的原因

  • 多版本 CUDA 共存:系统中同时安装了多个 CUDA 版本,并且环境变量指向了旧版本的 CUDA。
  • 环境变量配置有误PATHLD_LIBRARY_PATH 环境变量没有正确指向新版本的 CUDA。

解决办法

1. 确认新版本 CUDA 的安装路径

一般情况下,新版本的 CUDA 会安装在 /usr/local/cuda-<version> 目录,这里的 <version> 是你安装的 CUDA 版本号,例如 /usr/local/cuda-12.4

2. 修改环境变量

编辑 ~/.bashrc 或者 ~/.zshrc 文件,将环境变量指向新版本的 CUDA:

# 打开文件
nano ~/.bashrc
# 或者
nano ~/.zshrc

在文件中添加或修改以下内容:

export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH

保存并退出文件,然后使配置生效:

source ~/.bashrc
# 或者
source ~/.zshrc

3. 验证 CUDA 版本

再次执行 nvcc -V 命令,确认 CUDA 版本是否已经更新为 12.4:

nvcc -V

4. 重新安装 flash_attn

确认 CUDA 版本符合要求后,重新尝试安装 flash_attn

pip install flash-attn --no-build-isolation

能够将 nvcc 指向新版本的 CUDA,并且成功安装 flash_attn

posted @ 2025-04-02 16:59  胡不归来  阅读(694)  评论(1)    收藏  举报