赞
踩
我们在使用大语言模型时,通常需要安装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. 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 可用性。
通过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
安装成功,问题解决!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。