flash_attn 安装慢的解决方法
跑 LLM 相关训练、推理任务一般都要安装 flash-attn 提速。但国内安装 FA 经常出现半天装不上的情况,不熟悉 NV 生态的新手想要解决也很容易无从下手。笔者也经常需要配环境、更新依赖,特此记录以备自查,或对读者有用。
情形1 机器配置差导致的编译慢
新服务器很少遇到这类问题了,官方 FAQ 部分有设置可以尝试。此情形的通常表现是资源占用率大幅升高。问题不大,说明是在正常安装的
情形2 环境不匹配(有时效性请注意)
注意配训练环境一定要 CUDA、NV driver、PyTorch、cudnn、Python 与 FA 版本匹配。
目前 PyTorch 正式版本匹配的是 CUDA 12.6,如果驱动、CUDA 高于此版本则以兼容模式运行(但还是建议根据所用的训练库匹配,例如 12.4 目前与 verl 配合度是最高的,trl 可能需要 12.8 支持)。此类情况出问题常见于用户因为网络不畅、编译缓慢而直接使用预编译包,但忽略了库与库之间的兼容性。
测试也很简单,启动一个 Python shell import torch
看报不报错就好了。
情形3 环境变量设置
安装报错找不到 cuda 路径时通常为此原因造成。CUDA_HOME
要提前正确设置,一般是 /usr/local/cuda
,可以 ls 检查下是否存在。
情形4 网络问题
这是最让人无语的一类问题。flash-attn 安装中为了提高效率,会首先检测当前依赖环境是否已有对应的预编译版本,如果有则直接下载对应版本的 .whl 文件。但国内因为众所周知的网络原因,很容易在访问 release 地址时卡住,这时候 CPU 占用率几乎为 0 但安装进度就是不动,有时候甚至等待几天也不会因为超时报错退出。
解决方法也很简单,添加 VPS 地址即可,但添加全局代理经常会引入其他问题:例如因为配置了 pypi 镜像,修改后无法访问镜像服务器上的 flash-attn 包了,这时候需要临时修改两个设置项。
最简单的办法是对此命令启用代理+强制使用官方 pypi:
HTTPS_PROXY="你的代理地址" pip install flash-attn -i https://pypi.org/simple
最简实践
- 根据训练所用的框架选择,与之最匹配的依赖环境
- 物理机安装必要软件,例如 NV 驱动等
- 虚拟机使用 NV 官方镜像
- 安装训练框架、依赖包等
- 对特定库,如 flash-attn,正确使用代理避免因网络问题阻塞依赖编译/安装
此流程也适用于其他复杂依赖环境适配。