我们在使用大语言模型时,通常需要安装flash-attention2进行加速来提升模型的效率。

一、 常见安装方式如下

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

通常直接命令行安装可能会失败,安装失败日志如下:

Looking in indexes: https://pypi.ngc.nvidia.com
Collecting flash-attn
  Downloading https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/85/52/9834eb88dd8a8be13b5399a32f23a79f0a307d9708f92e2b4778afaae0d4/flash_attn-2.5.6.tar.gz (2.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 10.0 MB/s eta 0:00:00
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Preparing metadata (pyproject.toml) did not run successfully.exit code: 1
  ╰─> [28 lines of output]
      fatal: Not a git repository (or any of the parent directories): .git
      <string>:78: UserWarning: flash_attn was requested, but nvcc was not found.  Are you sure your environment has nvcc available?  If you're installing within a container from https://hub.docker.com/r/pytorch/pytorch, only images whose names contain 'devel' will provide nvcc.
      
      torch.__version__  = 2.0.1+cu117
      
      Traceback (most recent call last):
      ......
        File "/home/rd/miniconda3/envs/lib/python3.9/site-packages/torch/utils/cpp_extension.py", line 1048, in CUDAExtension
          library_dirs += library_paths(cuda=True)
        File "/home/rd/miniconda3/envs/lib/python3.9/site-packages/torch/utils/cpp_extension.py", line 1179, in library_paths
          if (not os.path.exists(_join_cuda_home(lib_dir)) and
        File "/home/rd/miniconda3/envs/lib/python3.9/site-packages/torch/utils/cpp_extension.py", line 2223, in _join_cuda_home
          raise EnvironmentError('CUDA_HOME environment variable is not set. '
      OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.
      [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

安装 flash-attn 时出现的错误表明在准备元数据(pyproject.toml)时遇到了问题。错误信息中包含了几个关键点:

1. fatal: Not a git repository (or any of the parent directories): .git

这个错误表示 flash-attn 的安装过程尝试访问 git 仓库信息,但当前目录并不是一个 git 仓库。这通常不会影响安装过程,除非该项目的构建系统明确依赖 git。

2. UserWarning: flash_attn was requested, but nvcc was not found.

这个警告说明安装过程试图找到一个名为 nvcc 的编译器,这是 NVIDIA CUDA 工具包的一部分,用于编译 CUDA 代码。如果没有安装 CUDA 工具包,或者没有将其路径添加到环境变量中,就会出现这个警告。

3. torch.__version__ = 2.0.1+cu117

这行输出表示你正在使用 PyTorch 的某个特定版本,这个版本是针对 CUDA 11.7 编译的。

4. OSError: CUDA_HOME environment variable is not set. Please set

这是导致安装失败的关键错误。错误信息表明 CUDA_HOME 环境变量没有设置。CUDA_HOME 应该指向你的 CUDA 安装目录,这通常是在安装 NVIDIA CUDA 工具包时设置的。
为了解决这个问题,你需要设置 CUDA_HOME 环境变量。首先,你需要找到 CUDA 工具包的安装路径。这通常类似于 /usr/local/cuda 或者可能是你自定义的安装目录。
一旦你找到了 CUDA 安装目录,你可以按照以下步骤设置 CUDA_HOME 环境变量:
对于 bash shell(Linux 或 macOS),你可以在 ~/.bashrc 或 ~/.bash_profile 文件中添加以下行:

export CUDA_HOME=/path/to/cuda  
export PATH=$PATH:$CUDA_HOME/bin  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64

如果找不到CUDA的安装目录,或者没有服务器的关键路径权限,需要尝试使用其他安装方式进行安装。

二、通过离线安装包进行安装

离线安装包可通过git下载对应版本的安装包:
Flash-Attention release版本路径

1. 首先需要确认当前使用的系统环境

1. Python 版本:系统环境中安装了 Python 3.9。你可以通过运行 python --version 或 python3 --version 来检查 Python 版本。
2. 操作系统和架构:系统为 Linux,并且是 x86_64 架构。
3. CUDA 版本:系统中安装了 CUDA 11.7,并且 nvcc 命令可用。可以通过运行 nvcc --version 来检查 CUDA 版本。
4. PyTorch 版本:环境中安装了 PyTorch 2.0,并且是为 CUDA 11.7 构建的。你可以通过运行 python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())" 来检查 PyTorch 版本和 CUDA 可用性。

2. 选取并下载对应版本的安装包

flash-attn版本
通过wget或者git直接下载,然后将下载的离线安装包移动到服务器指定路径:

wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.6/flash_attn-2.5.6+cu118torch2.0cxx11abiFALSE-cp39-cp39-linux_x86_64.whl

例如此处通过wget下载后文件为:

flash_attn-2.5.6+cu118torch2.0cxx11abiFALSE-cp39-cp39-linux_x86_64.whl

接下来通过pip直接安装离线安装包:

pip install flash_attn-2.5.6+cu118torch2.0cxx11abiFALSE-cp39-cp39-linux_x86_64.whl

安装成功,问题解决!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐