【指南】同时安装 vllm 与 flashinfer
注意:本文已过时(2026.1.11)
现在直接用python自带的pip命令直接安装两者,不会再有奇怪的依赖冲突问题,无需再自己编译
-----------------------------
省流无废话版(Markdown 源码),自行保存查看,体验更佳
关键字: Ubuntu 24,Python 12,vllm,flashinfer
前言
本文从零配置了一个最小的、能够同时编译 vllm 与 flashinfer 的 构建环境,使得能在 推理环境 中 一致地 安装 任意版本组合的 vllm 与 flashinfer
完整的项目,可以形如:
.
├── .venv # 推理环境,本文流程结束后,在该环境运行命令 pip install Env_pre/build/XXX.whl
└── Env_pre # 本文流程的工作目录
├── .venv # 构建环境
└── 待编译包的源代码
├── LLM模型文件夹
└── LLM推理服务启动.sh
构建环境 与 推理环境 分离
两个环境需要完全一致的Pytorch版本
相关链接
flashinfer 文档
flashinfer 仓库
vLLM 文档
vLLM 仓库
开始
推荐使用
VS Code+Remote - SSH的工作方式
首先,cd Env_pre 并 创建 Python 虚拟环境,作为本文的工作区:
Env_pre
└── .venv
配环境流程
sudo apt install git
sudo apt install ccache
ccache 是一个优化C/C++编译效率的工具
如果which ccache能找到则说明安装成功,vllm 的构建系统会自动用,但flashinfer 的AOT构建系统好像没办法直接用
当然ninja/cmake这样的工具编译像git管理的项目时本身也可以只编译有修改的部分,ccache用不上问题也不大
Nvidia 相关环境
请自行确认合适的 Nvidia显卡驱动 已在你的机器上成功安装
本文驱动为575.64.03,将安装CUDA 12.9
请注意 vllm 及 pytorch 目前(2025.08)没适配 CUDA13.0
FlashInfer 最近已不再强制要求依赖 NVSHMEM,本文原相关内容废弃:
NVSHMEM 安装:注册为Nvidia的开发者
文档
NVSHMEM
pip install nvidia-nvshmem-cu12
FlashInfer PR #1261: add nvshmem module for aot compilation
FlashInfer PR #1426: remove nvidia-nvshmem-cu12 from package dependency
CUDA 安装
首先 nvidia-smi 检查版本支持
成功安装在默认路径后,在 ~/.bashrc 这个文件里面加以下两行,就能用 nvcc -V 验证了
export PATH=/usr/local/cuda-12.9/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
PyTorch
下载某个特定版本并在本地可持久化
pip download torch torchvision --index-url https://download.pytorch.org/whl/cu129 -d ./wheels
从本地安装该版本
pip install --no-index --find-links=./wheels torch torchvision
从源代码构建
git clone https://github.com/vllm-project/vllm.git
git clone https://github.com/flashinfer-ai/flashinfer.git --recursive
文件结构示意:
Env_pre # 当前工作目录
├── .venv # 构建工作所用的Python虚拟环境
├── vllm
├── flashinfer
└── build # 将用于储存构建结果
代码更新
cd flashinfer
git pull
cd ../vllm
git pull
cd ../
用 git 可以切换到特定 release 分支
环境变量
根据你自己的 GPU 型号来填 TORCH_CUDA_ARCH_LIST 的值,参考,填多了增加编译成本
根据你自己的 CPU 线程数来填写 MAX_JOBS 的值,如果部分环节内存不够,将该值调小后再尝试编译
export CCACHE_NOHASHDIR="true"
export TORCH_CUDA_ARCH_LIST="8.6;8.9"
export MAX_JOBS=16
export VLLM_CUTLASS_SRC_DIR=../flashinfer/3rdparty/cutlass
构建依赖安装
cd vllm
python use_existing_torch.py
pip install -r requirements/build.txt
git restore
cd ../
pip install build requests
构建
# vLLM
cd vllm
python use_existing_torch.py
python -m build --wheel --no-isolation --o ../build/
git restore .
cd ../
# FlashInfer
cd flashinfer
python -m flashinfer.aot
python -m build --no-isolation --wheel -o ../build/
cd ../
结果
Env_pre # 当前工作目录
├── ......
└── build
├── flashinfer_xxxxx.whl # 构建结果
└── vllm-xxxxx.whl # 构建结果
附录
-
本文在环境管理上简单地基于
pip,目前更加符合开发场景的实践是 跟随 uv 的工作流 -
首次编译时间非常长,之后的编译一般不会消耗太长时间
-
本文动机
-
- 用vllm运行推理服务时发现会报警告 “你没有装flashinfer,所以性能下降”
-
- 但是实际去安装使用时,发现flashinfer它并非vllm的插件,适配起来不是一插就用这么理想,各种Warning、Error,且官方预构建包的pytorch、cuda版本不统一,而且将其中的某些包单独回退并不总能work,遂决定尝试“自己用同一个环境(pytorch+cuda)来从源代码构建这两个包”,以从根源上解决各种冲突、以一致的方式去使用这两个包
-
- 经过稍长时间的查阅各种文档、反复折腾,也算是掌握了一些原先陌生的知识,跑通了流程,至于 flashinfer 究竟提升几何,可以参考 知乎上一篇测评,不过我认为本文还是折腾的意义要更大些
-
更进一步:显卡驱动、CUDA这部分过程的可以用命令行自动化安装

浙公网安备 33010602011771号