环境搭建:安装 vLLM、依赖项、GPU 要求与验证安装
在正式使用 vLLM 之前,我们需要先搭建一个干净、可复现的运行环境。vLLM 是一个与 CUDA 深度绑定的推理引擎,它的安装过程并不复杂,但对 GPU 驱动、PyTorch 版本和 Python 版本有明确的约束。如果这些底层依赖不匹配,即使安装成功,运行时也可能出现“非法内存访问”或“无法加载模型”等难以排查的问题。本节将按照“硬件检查 → 环境准备 → 安装 → 验证”的顺序,带你完成整个搭建流程。
2.1 核心原理:vLLM 的依赖链
vLLM 的性能优势来源于其高度优化的 CUDA kernel(如 PagedAttention 的显存管理内核)。这意味着它并不是一个纯 Python 库,而是包含大量预编译的 CUDA 扩展。因此,安装 vLLM 本质上是在做一次“二进制兼容性匹配”:
- GPU 驱动:必须支持目标 CUDA 版本(通常要求驱动版本 ≥ 525 以上,具体取决于 CUDA 12.x)。
- PyTorch:vLLM 依赖 PyTorch 的 CUDA 运行时,且对 PyTorch 版本有严格范围(如 2.0+)。
- CUDA 工具包:虽然 pip 安装会自动拉取预编译的 .so 文件,但编译源码时需要完整 CUDA 工具链。
- Python:官方支持 3.8 ~ 3.12,但推荐 3.10/3.11(对最新特性支持最好)。
下图展示了 vLLM 安装后的核心依赖关系与数据流,帮助你理解为什么“驱动 → CUDA → PyTorch → vLLM”的层级顺序不可颠倒:
2.2 方法流程:标准安装步骤
下面以 Ubuntu 20.04/22.04 + Python 3.10 + CUDA 12.1 为例,给出完整的安装命令序列。请根据你的实际环境调整版本号。
步骤 1:检查 GPU 与驱动
# 查看 GPU 型号与驱动版本
nvidia-smi
# 期望输出示例:
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 |
# +-------------------------------+----------------------+----------------------+
# | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
# |===============================+======================+======================|
# | 0 NVIDIA A100-SXM4-40GB Off | 00000000:00:04.0 Off | 0 |
# +-------------------------------+----------------------+----------------------+
如果 nvidia-smi 无法运行,说明驱动未安装或未正确加载。此时需要先安装 NVIDIA 驱动,再继续后续步骤。
步骤 2:创建虚拟环境(推荐)
# 使用 conda 创建 Python 3.10 环境
conda create -n vllm-env python=3.10 -y
conda activate vllm-env
# 或者使用 venv
# python3.10 -m venv vllm-env
# source vllm-env/bin/activate
步骤 3:安装 PyTorch(带 CUDA 支持)
# 以 CUDA 12.1 为例(根据 nvidia-smi 显示的 CUDA 版本选择)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 验证 PyTorch 是否识别 GPU
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
# 期望输出:
# True
# NVIDIA A100-SXM4-40GB
步骤 4:安装 vLLM
# 直接安装最新稳定版
pip install vllm
# 如果需要特定版本(例如 0.6.0)
# pip install vllm==0.6.0
# 安装完成后验证
python -c "import vllm; print(vllm.__version__)"
2.3 案例:在 A100 上完成安装并跑通推理
下面是一个完整的实操案例,展示从零到成功调用 vLLM 的完整链路。假设我们使用一台配置了 A100 40GB 的服务器。
环境信息:
- 操作系统:Ubuntu 22.04
- GPU:NVIDIA A100 40GB(驱动 535.104.05,CUDA 12.2)
- Python:3.10(conda 环境)
- PyTorch:2.1.2+cu121
- vLLM:0.6.3.post1
安装完成后,我们用一个最小的离线推理脚本验证安装是否成功:
# test_vllm.py
from vllm import LLM, SamplingParams
# 加载一个较小的模型(如 Qwen2-1.5B-Instruct)
llm = LLM(model="Qwen/Qwen2-1.5B-Instruct", gpu_memory_utilization=0.6)
prompts = ["请用一句话解释什么是注意力机制?"]
sampling_params = SamplingParams(temperature=0.7, max_tokens=128)
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(output.outputs[0].text)
# 运行脚本
python test_vllm.py
# 期望输出(部分):
# 注意力机制是一种让模型在处理序列时,能够动态地关注输入中不同部分重要性的技术...
如果上述脚本能正常输出文本,说明 vLLM 安装成功且 GPU 资源分配正常。如果出现 CUDA error: out of memory,可以调低 gpu_memory_utilization 参数(例如改为 0.4)。
2.4 常见误区与排障复盘
在安装 vLLM 的过程中,有几个高频问题值得特别留意。下表总结了典型错误、原因与解决方案:
| 错误现象 | 根本原因 | 解决方案 |
|---|---|---|
ImportError: libcuda.so.1: cannot open shared object file |
系统 CUDA 驱动库路径未配置,或驱动未正确安装 | 检查 nvidia-smi;将 /usr/local/cuda/lib64 加入 LD_LIBRARY_PATH |
RuntimeError: Found no NVIDIA driver on your system |
PyTorch 检测不到 GPU 驱动 | 重新安装 NVIDIA 驱动;确认 nvidia-smi 可运行 |
CUDA error: no kernel image is available for execution on the device |
PyTorch 的 CUDA 版本与 GPU 架构不匹配(如老 GPU 配新 CUDA) | 降低 CUDA 版本(如 cu118);或升级 GPU 驱动 |
ValueError: The model's max seq len is too large |
模型配置的 max_position_embeddings 超过显存可容纳范围 | 减小 max_model_len 参数(如设为 2048) |
安装时 pip 报 No matching distribution found |
Python 版本或平台不满足 vLLM 的 wheel 要求 | 使用 Python 3.10/3.11;确认系统为 Linux x86_64 |
pip install vllm --force-reinstall 来“修复”问题,这可能会破坏 PyTorch 与 vLLM 的版本匹配关系。正确的做法是:先卸载全部相关包,再按顺序重新安装。
2.5 验证安装的完整检查清单
为了确保环境万无一失,建议按以下清单逐项确认:
- GPU 驱动:
nvidia-smi能显示 GPU 型号与驱动版本。 - CUDA 可用性:
python -c "import torch; print(torch.cuda.is_available())"输出True。 - vLLM 版本:
python -c "import vllm; print(vllm.__version__)"能输出版本号。 - 显存预留:运行 vLLM 前,用
nvidia-smi确认空闲显存 ≥ 模型大小 × 1.2(预留 KV cache 空间)。 - 离线推理:执行一次最小模型(如 Qwen2-0.5B)的生成,确认无报错。