FlashAttention 装不上怎么办:从编译错误到 Hopper 专属 3 版
先理解为什么要装
FlashAttention 利用 GPU 的片上 SRAM 做内存融合,在注意力机制上大幅降低显存消耗、显著加速推理。对 Wan2.2 来说它是性能关键组件,虽然不是硬依赖(不装也能跑),但装了之后显存省一截、速度快一截。
Wan2.2 支持:
| FlashAttention 版本 | GPU 架构 |
|---|---|
| FlashAttention 3 | Hopper(H100) |
| FlashAttention 2 | Ampere(A100 / 4090 / 3090) |
| FlashAttention 1 | 老架构(不推荐) |
官方建议的安装顺序
如果
flash_attn安装失败,先安装其他所有依赖,最后再单独安装flash_attn。
这个顺序能避免 FlashAttention 编译时找不到依赖库。
最常见的安装方式
方式一:pip install(Linux 最稳)
pip install flash-attn --no-build-isolation
--no-build-isolation 让编译能用到已安装的 PyTorch 和 CUDA 头文件。
方式二:wheel 包(Windows 推荐)
Windows 上从源码编译经常失败,建议直接下载对应版本的预编译 wheel:
- 确认你的 PyTorch + CUDA 版本
- 在 flash-attn 的 GitHub Releases 里找匹配的 wheel
pip install 下载的文件.whl
版本兼容性速查
| 组件 | 需要的最低版本 |
|---|---|
| PyTorch | ≥ 2.4.0 |
| CUDA Toolkit | 与 PyTorch 匹配(PyTorch 2.4 默认 CUDA 12.1) |
| Python | 3.10 ~ 3.12 |
| NVIDIA 驱动 | ≥ 对应 CUDA 要求 |
版本不匹配会报各种莫名其妙的编译错误。最稳妥的做法是按 Wan2.2 仓库的 requirements.txt 里指定的版本来装 PyTorch。
不装 FlashAttention 也能跑吗
能。只是:
- 显存占用明显变高(可能从 22GB 涨到 30GB+,4090 可能 OOM)
- 推理速度慢(大约 1.5~2 倍时间)
如果你已经在 4090 上装不上 FlashAttention 又要跑 TI2V-5B,考虑:
- 降到 480P
- 用 FP8 量化版本
- 或者干脆走百炼云端
编译错误常见类型
| 错误 | 原因 | 解决 |
|---|---|---|
nvcc not found | 没装 CUDA Toolkit 或 PATH 没配对 | 装 CUDA Toolkit,检查 nvcc 版本 |
CUDA version mismatch | PyTorch 和 CUDA 版本不匹配 | 重装匹配版 PyTorch |
MSVC version mismatch(Windows) | Visual Studio C++ Build Tools 版本太旧 | 装最新 VS Build Tools |
no module named 'flash_attn' | 其实是装成功但 import 路径问题 | pip show flash-attn 确认安装位置 |