2、环境搭建:vLLM的安装、依赖环境配置、GPU驱动与CUDA版本要求、验证安装
好,咱们直接进入正题。环境搭建这事儿,说难不难,说简单吧,我见过太多同学卡在这一步。说白了,vLLM 对底层环境的要求比较「挑剔」,尤其是 GPU 驱动和 CUDA 版本。你想想看,推理框架跑不起来,后面再好的优化技巧都是白搭。
我个人习惯是,在搭建任何 AI 推理环境之前,先列一个清单。嗯,咱们就按这个清单一步步来。
2.1 硬件与操作系统要求
先看看你的机器够不够格。vLLM 目前主要跑在 NVIDIA GPU 上,AMD ROCm 的支持还在实验阶段。我建议你直接用 Linux,Ubuntu 20.04 或 22.04 是最省心的选择。
| 硬件/软件 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU | NVIDIA T4 (16GB) | A100 80GB / H100 |
| 显存 | 16 GB | 80 GB 或以上 |
| 系统内存 | 32 GB | 128 GB 或以上 |
| 操作系统 | Ubuntu 20.04 | Ubuntu 22.04 |
| Python | 3.8 | 3.10 - 3.12 |
2.2 GPU 驱动与 CUDA 版本
这是最容易踩坑的地方。vLLM 依赖 CUDA 12.1 或更高版本。为什么?因为它用到了很多新的 GPU 特性,比如 FlashAttention 和 PagedAttention 的底层优化。
先检查你的驱动:
nvidia-smi
你会看到类似这样的输出:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.08 Driver Version: 545.23.08 CUDA Version: 12.3 |
+-----------------------------------------------------------------------------+
关键看两行:Driver Version 和 CUDA Version。驱动版本至少 525.60.13 以上,CUDA 版本必须 ≥ 12.1。
如果驱动版本不够,去 NVIDIA 官网下载对应驱动。安装命令很简单:
# 卸载旧驱动(如果有)
sudo apt-get purge nvidia-*
# 安装新驱动
sudo chmod +x NVIDIA-Linux-x86_64-545.23.08.run
sudo ./NVIDIA-Linux-x86_64-545.23.08.run
装完重启,再跑 nvidia-smi 确认。
2.3 安装 CUDA Toolkit
驱动搞定后,CUDA Toolkit 其实可以不用单独装。因为 vLLM 的 pip 包会自动拉取 PyTorch 自带的 CUDA 运行时。但如果你需要编译自定义算子,那就得装。
我个人习惯用 conda 管理环境,干净利落:
# 创建虚拟环境
conda create -n vllm_env python=3.10
conda activate vllm_env
# 安装 PyTorch(CUDA 12.1 版本)
pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu121
2.4 安装 vLLM
环境准备好后,安装 vLLM 就一行命令:
pip install vllm
等等,别急着跑。我建议你先设置一个环境变量,避免编译时出幺蛾子:
export MAX_JOBS=4
pip install vllm
MAX_JOBS=4 是限制并行编译的线程数。你想想看,如果服务器上还有其他人在用 GPU,编译时把 CPU 占满,大家都不好过。我一般设成 4 或 8,看 CPU 核心数。
安装过程会编译一些 C++ 和 CUDA 扩展,大概需要 5-15 分钟。如果看到类似这样的输出,说明在正常编译:
Building wheel for vllm (setup.py) ...
- Building kernel 'attention' for GPU sm_80
- Building kernel 'paged_attention' for GPU sm_80
CUDA_HOME not set,说明系统找不到 CUDA 路径。执行 export CUDA_HOME=/usr/local/cuda-12 即可。我遇到过好几次,都是因为 conda 环境把 CUDA 路径搞乱了。
2.5 验证安装
装完了,怎么知道能不能用?写个简单的 Python 脚本验证一下:
from vllm import LLM, SamplingParams
# 加载一个很小的模型做测试
llm = LLM(model="facebook/opt-125m")
# 设置采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# 跑一次推理
outputs = llm.generate(["Hello, my name is"], sampling_params)
# 打印结果
for output in outputs:
print(output.outputs[0].text)
如果看到模型输出了完整的句子,恭喜你,环境搭建成功了!
我再教你一个更彻底的验证方法——检查 vLLM 是否正确识别了 GPU 和 CUDA 能力:
import vllm
print(vllm.__version__)
# 检查 GPU 信息
from vllm.utils import get_gpu_memory
print(f"GPU 显存: {get_gpu_memory()} GB")
输出应该类似:
0.4.2
GPU 显存: 79.15 GB
CUDA_VISIBLE_DEVICES=0,1 指定使用哪几张。我一般先只用一张卡测试,确认没问题再开多卡。
2.6 常见问题与避坑指南
这里我总结几个高频问题,都是我在项目中真实遇到过的:
- 「CUDA out of memory」:模型太大,显存不够。换小模型,或者用
--gpu-memory-utilization 0.8限制显存使用率。 - 「RuntimeError: NCCL error」:多卡通信问题。检查
nccl版本,或者设置export NCCL_DEBUG=INFO看详细日志。 - 「ImportError: libcuda.so.1 not found」:驱动没装好,或者 LD_LIBRARY_PATH 没设置。执行
sudo ldconfig刷新库缓存。
我曾经在一个客户的服务器上折腾了整整一下午,最后发现是驱动版本太老,连 CUDA 11.8 都不支持。嗯,从那以后我每次搭建环境,第一件事就是 nvidia-smi 确认驱动版本。
2.7 知识体系总览
为了让你对整个环境搭建有个全局认识,我画了一张流程图:
这张图把整个流程串起来了。你按照这个顺序走,基本不会出大问题。记住一个原则:先硬件,再驱动,最后装框架。顺序反了,后面全是坑。
好了,环境搭建就讲到这里。下一节咱们会深入 vLLM 的核心——动态批处理调度器,看看它到底是怎么把多个请求塞进 GPU 的。嗯,那才是真正有意思的地方。