环境搭建:硬件要求与软件依赖
说实话,环境搭建这一步,看着简单,但坑是真不少。我见过太多人卡在这一步,明明代码写得挺好,结果跑起来各种报错。今天咱们就把这事儿捋清楚。
硬件要求:别让GPU拖后腿
vLLM对硬件的要求,说白了就两点:显存够大,计算能力够新。
| GPU型号 | 显存建议 | 适用场景 |
|---|---|---|
| NVIDIA A100 (80GB) | 80GB | 生产环境,大模型部署 |
| NVIDIA V100 (32GB) | 32GB | 中等规模模型推理 |
| NVIDIA A10 (24GB) | 24GB | 7B-13B模型测试 |
| NVIDIA RTX 4090 (24GB) | 24GB | 个人开发调试 |
| NVIDIA T4 (16GB) | 16GB | 小模型或量化后推理 |
⚠️ 注意: 我曾经在T4上跑13B模型,结果OOM报错直接把我整懵了。后来才发现,vLLM的PagedAttention虽然省显存,但模型本身加载就需要至少2倍参数量的显存。7B模型建议16GB起步,13B至少24GB。
我个人习惯,选GPU时先看两个指标:显存带宽和计算能力(Compute Capability)。vLLM要求计算能力至少7.0,也就是Volta架构起步。你想想看,如果用的是Pascal架构的P100,那连门都进不去。
软件依赖:版本匹配是门玄学
这里我要重点说一下。vLLM对CUDA和PyTorch的版本要求非常严格。我踩过的坑,你们就别再踩了。
| 组件 | 推荐版本 | 最低版本 | 备注 |
|---|---|---|---|
| CUDA Toolkit | 11.8 / 12.1 | 11.4 | 推荐11.8,兼容性最好 |
| PyTorch | 2.1.0+ | 2.0.0 | 必须匹配CUDA版本 |
| Python | 3.10 - 3.12 | 3.8 | 推荐3.10 |
| NVIDIA驱动 | 525.60.13+ | 470.57.02 | 驱动版本决定CUDA可用性 |
💡 小技巧: 我建议用
nvidia-smi 查看驱动版本,然后用 nvcc --version 确认CUDA版本。这两个版本可能不一致,但vLLM编译时用的是nvcc的版本。
安装方式:pip还是源码?
两种方式我都试过,各有优劣。咱们直接看对比:
| 安装方式 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| pip安装 | 简单快捷,一行命令搞定 | 无法自定义编译参数 | 快速验证、新手入门 |
| 源码安装 | 可调优、可调试、支持自定义 | 编译时间长,依赖复杂 | 生产环境、二次开发 |
pip安装(推荐新手)
# 创建虚拟环境(强烈建议)
python -m venv vllm_env
source vllm_env/bin/activate
# 安装vLLM
pip install vllm
# 如果遇到网络问题,可以用国内镜像
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple
嗯,这里要注意:pip安装的vLLM是预编译的wheel包,只支持特定的CUDA版本。如果你用的CUDA版本不在支持列表里,那就只能走源码安装了。
源码安装(进阶推荐)
我个人习惯用源码安装,因为可以加一些调试信息。而且,我曾经遇到过pip安装的版本和我的CUDA不匹配,折腾了两天才发现是版本问题。
# 克隆仓库
git clone https://github.com/vllm-project/vllm.git
cd vllm
# 安装依赖
pip install -r requirements.txt
# 编译安装(这一步比较耗时)
pip install -e .
# 如果GPU支持FlashAttention,可以启用
export VLLM_USE_FLASH_ATTN=1
pip install -e .
⚠️ 编译警告: 源码编译时,确保你有足够的磁盘空间(至少20GB)。我上次编译到一半磁盘满了,结果整个环境都乱了。还有,编译时间取决于你的CPU核心数,一般需要10-30分钟。
验证安装:跑个Hello World
装完了,怎么知道成没成功?别急,我教你几招。
方法一:导入测试
python -c "import vllm; print(vllm.__version__)"
如果没报错,说明基本安装成功了。你会看到类似 0.4.0 这样的版本号。
方法二:跑个小模型
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, how are you?"], sampling_params)
print(outputs[0].outputs[0].text)
💡 测试建议: 第一次跑的时候,用125M的小模型,加载快,显存占用小。我一般用这个模型做环境验证,确认没问题再上大模型。
方法三:检查GPU利用率
跑上面的代码时,另开一个终端,用 nvidia-smi 观察显存和GPU利用率。正常情况下,你会看到显存被分配,GPU利用率飙升到80%以上。
说白了,验证安装就三步:导入不报错、推理能出结果、GPU在干活。这三步都过了,环境就算搭好了。
常见问题与避坑指南
- CUDA版本不匹配: 我曾经因为系统装了CUDA 12.0,但PyTorch用的是11.8,结果编译时各种报错。解决方案:统一版本,或者用conda创建隔离环境。
- 显存不足: 如果报OOM,试试
export VLLM_USE_FLASH_ATTN=1启用FlashAttention,能省不少显存。 - 编译卡死: 源码编译时,如果内存不够(小于32GB),可能会卡在某个文件上。建议加swap或者减少并行编译线程数:
export MAX_JOBS=4。 - Python版本问题: 别用Python 3.7,有些依赖不支持。3.10是最稳妥的选择。
这张图把整个环境搭建的流程串起来了。从硬件选型到软件配置,再到安装和验证,每一步都有坑。但只要你按这个流程走,基本不会出大问题。
最后说一句:环境搭建这事儿,急不得。我每次搭新环境,都会花半小时做版本检查。磨刀不误砍柴工,环境稳了,后面才能安心搞推理优化。