安装 flash-attn

很多人可能直接使用pip命令安装,网上给的教程也直接是放一行命令就不管,稳妥一点的办法是直接下载源码安装,这样就没有了兼容性问题。

  1. 首先查看本机的python、pytorch、cuda版本,比如我的环境是python==3.12,torch==2.6,cuda 12
  2. 进入flash-attention仓库 Releases · Dao-AILab/flash-attention,查看兼容的版本,然后右键复制链接即可。

image-avtd.png

  1. 接着在服务器终端使用wget下载当前目录,比如我的就输入这行命令:
    wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.6cxx11abiTRUE-cp312-cp312-linux_x86_64.whl
    
  2. 下载完成后,(这里默认你已经激活到conda环境)使用pip 安装下载到本地的文件:
    pip install flash_attn-2.7.4.post1+cu12torch2.6cxx11abiTRUE-cp312-cp312-linux_x86_64.whl
    

安装 FlashInfer

  1. 这里如果直接使用pip install flashinfo-python命令安装,在运行vllm(我的环境是0.8+版本)后会出现不兼容报错,比如:FlashInfer>=v0.2.3 is not backward compatible

这里的做法是略微降一点版本:

pip install flashinfer-python==0.2.2
  1. 然后还要注意的问题是,要设置环境变量TORCH_CUDA_ARCH_LIST,我习惯代码中显式设置环境变量,比如在你的程序开头设置:
os.environ["TORCH_CUDA_ARCH_LIST"] = "***"

双引号中***的内容具体值需要你去查询,使用以下代码就可以:

import torch; 
print(torch.cuda.get_device_capability())

比如输出(8,9),那么就设置这个环境变量为8.9

完成

在完成上述设置,确认无误后,应该是没有问题了,这时候vllm会在对应位置输出Using FlashInfer for top-p & top-k sampling.