Windows环境下flash-attention安装

背景

机器学习里Transformer模型大量使用flash-attention这个自注意力模块,多次安装遇到一堆问题,希望能给大家一点帮助。结合了多篇前人经验,本文只提供我这次成功安装的一些步骤,也可能存在之前安装过部分内容文中有疏漏,还请根据提示多注意。

环境

  • Windows 11 + NVDIA Geforce RTX3050 Laptop
  • CUDA 12.3.2(好像至少要在12.1.6以上)
  • Anaconda + Python
  • PyTorch 12.1 + PyTorch内建CUDA 12.1

使用他人编译的版本

注意:如无特殊情况,请不要尝试自我编译,费时费力且存在大量依赖缺失、错误。下文自我编译的部分均请忽略,除非无可用的版本,也建议优先考虑其他自注意力模块,自我编译请做好大量失败和debug的心理准备,下文繁杂的过程最终也没有完全成功,仅供参考。使用他人编译的版本很快就成功了……

网络中大部分教程基于Linux系统,官网没有提供Windows的预编译版本。我们可以借助例如这位大佬编译好的版本进行安装(https://github.com/bdashore3/flash-attention/releases),选择匹配的版本,更新whl等包以防万一。

下载好以后cd过去,类似在线安装一样pip install就可以。

pip install <你下载的whl文件>

编译前的准备工作

(可参见FlashAttention提供的README.md)

  • 安装PyTorch
  • 安装packaging
 pip install packaging
  • 安装ninja(加速编译)
pip install ninja

如果ninja存在问题可以考虑卸载后重装。

正式编译安装

  1. 在已经安装Git的情况下,断开梯子,右键Git Gui Here -> Clone Existing Repository -> “Source Location”为"https://github.com/Dao-AILab/flash-attention",然后自己选一个Target Directory并且注意如果是Browse选择的需要自己后面手打类似于“\flash-attention”(注意这个文件夹不能存在,他的父目录可以存在,但是最后一级必须不存在,要在点击Clone后Git自动创建) -> 确保勾选了“Recursively clone submodules too” -> 点击Clone
  2. 在命令提示符中测试cl是否配置正确否则无法正常编译源码。
cl

如果返回的不是类似下面的结果需要配置环境变量。

用于 x64 的 Microsoft ® C/C++ 优化编译器 19.29.30151版
版权所有© Microsoft Corporation。保留所有权利。

用法: cl [ 选项… ] 文件名… [ /link 链接选项… ]

配置环境变量需要找到类似下面的路径(不同版本路径可能不同,在Microsoft Visual Studio里找一下)中是否存在cl.exe文件,然后复制

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC<版本号>\bin\Hostx64\x64

然后Windows搜索栏中搜索“编辑系统环境变量” -> 环境变量(N)… -> 选中“系统变量”中变量名为"Path” -> 编辑(I)… -> 新建(N) -> 粘贴刚刚找到的这个路径 -> 全部点“确定”
3. 去GitHub下载cutlass,解压以后配置CPATH环境变量,值为路径。
4. 解压下载的flash-attention源代码,然后命令提示符中cd到Git复制到的文件夹中,执行如下的命令

set MAX_JOBS=4
python setup.py install

如果不使用命令提示符而是用PowerShell就对应执行

$env:MAX_JOBS="4"
python setup.py install
<think>好的,用户询问如何在Windows安装flash-attn库。我需要先回忆一下相关的安装步骤,并结合提供的引用内容来确保信息准确。首先,flash-attn通常依赖于CUDA和cuDNN,所以用户需要先安装这些依赖项。 根据引用1,用户应该参考NVIDIA的CUDA Installation Guide for Linux,但这里用户是Windows系统。不过引用2提到在Windows安装适用于Linux的子系统(WSL2),然后通过Docker进行安装。这可能是一个可行的方法。因此,可能需要指导用户启用WSL2安装Docker,然后在Linux环境中继续安装步骤。 另外,引用3提到NVIDIA提供了通过pip安装cuDNN的Python Wheels,但需要注意主机环境配置。这可能意味着在安装flash-attn之前,用户需要正确设置CUDA和cuDNN的环境变量,或者通过pip安装特定版本的cuDNN。 引用4指出用户可能需要升级CUDA Toolkit到特定版本,比如12.4,以兼容flash-attn。因此,检查CUDA版本是否满足要求也是关键步骤。此外,引用4中的GitHub链接可能提供了特定版本的flash-attn,用户需要根据CUDA版本选择合适的whl文件进行安装。 然后,用户可能还需要安装PyTorch,确保其与CUDA版本兼容。例如,使用pip安装对应CUDA 12.1的PyTorch版本。 接下来,安装flash-attn本身可能需要从预编译的wheel文件安装,尤其是在Windows上直接安装可能存在困难,所以建议通过WSL2中的Linux环境来执行。或者,用户可能需要从GitHub源码编译,这需要安装Visual Studio的构建工具,如引用中提到的C++编译环境。 最后,验证安装是否成功,可以通过Python导入库并检查版本,或者运行简单的测试代码。如果用户遇到错误,可能需要检查CUDA和cuDNN的路径是否正确,或者是否有版本冲突。 总结步骤大致如下: 1. 安装WSL2并配置Docker(引用2)。 2. 在WSL2安装CUDA Toolkit 12.4(引用1、4)。 3. 通过pip安装cuDNN(引用3)。 4. 安装PyTorch与CUDA版本匹配。 5. 安装flash-attn,可能需要从预编译的wheel或源码构建(引用4、5)。 6. 验证安装并处理可能的问题。 需要确保每一步都正确,并参考提供的引用链接,特别是NVIDIA的官方指南和GitHub仓库的说明。同时,提醒用户注意版本兼容性,比如CUDA、PyTorch和flash-attn之间的对应关系。如果用户的环境配置不正确,可能会导致安装失败,因此清晰的步骤和版本检查很重要。</think>### 分步指南:在Windows安装flash-attn库 #### 1. **安装WSL2及CUDA环境** - **启用WSL2**: 在Windows中打开PowerShell,输入以下命令启用WSL和虚拟机平台功能: ```powershell wsl --install ``` 安装完成后重启系统,并设置默认使用WSL2[^2]。 - **安装Linux发行版**: 从Microsoft Store安装Ubuntu等Linux发行版,并配置账户。 - **安装CUDA Toolkit**: 在WSL2中访问[NVIDIA CUDA Toolkit下载页面](https://developer.nvidia.com/cuda-toolkit),选择Linux版本(如CUDA 12.4)并按官方指南安装[^1]。例如: ```bash wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get -y install cuda ``` --- #### 2. **安装cuDNN** - **通过pip安装cuDNN**: NVIDIA提供了Python Wheels格式的cuDNN,可通过以下命令安装(需与CUDA版本匹配)[^3]: ```bash pip install nvidia-cudnn-cu12==8.9.4 ``` - **验证环境变量**: 确保CUDA和cuDNN路径已添加到环境变量中: ```bash export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH ``` --- #### 3. **安装PyTorch** - 安装与CUDA 12.x兼容的PyTorch: ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` --- #### 4. **安装flash-attn** - **从预编译包安装**: 根据CUDA版本选择预编译的wheel文件(需访问[flash-attn GitHub Releases](https://github.com/kingbri1/flash-attention/releases)下载)[^4]: ```bash pip install flash_attn-2.5.6+cu122torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl ``` - **或从源码编译**: 安装构建依赖后,克隆仓库并编译: ```bash git clone https://github.com/Dao-AILab/flash-attention cd flash-attention && pip install . ``` --- #### 5. **验证安装** -Python中运行以下代码检查是否成功: ```python import flash_attn print(flash_attn.__version__) ``` --- ### 常见问题解决 - **CUDA版本不匹配**: 升级CUDA Toolkit至12.4(参考引用4的GitHub说明)。 - **依赖缺失**: 安装C++构建工具链(如`build-essential`)和`ninja`。 - **权限问题**: 在WSL2中使用`sudo`或虚拟环境安装---
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值