环境搭建:CUDA与PyTorch版本选择、vLLM pip安装、Docker镜像部署、验证安装是否成功

说实话,环境搭建这块,我见过太多人卡在这里了。

明明代码写对了,跑起来就是报错。为什么?说白了就是版本没对齐。vLLM 对 CUDA 和 PyTorch 的版本要求非常严格,差一个小版本都可能翻车。今天我就把我在项目中踩过的坑、总结的经验,一次性给你讲清楚。

CUDA 与 PyTorch 版本选择

先讲核心原则:vLLM 依赖 PyTorch,PyTorch 依赖 CUDA,CUDA 依赖显卡驱动。这条链上任何一个环节出问题,后面全白搭。

我个人习惯,第一步先看显卡驱动支持的 CUDA 版本。在终端跑一下:

nvidia-smi

看右上角的 "CUDA Version",比如显示 12.1,那你就只能选 ≤12.1 的 CUDA 工具包。别想着装 12.2,驱动不支持,装上去也是废的。

接下来选 PyTorch 版本。我建议直接上 PyTorch 2.1 或 2.2,配合 CUDA 12.1。为什么?因为 vLLM 官方测试最多的就是这套组合。你想想看,官方都帮你踩过坑了,咱就别自己再去踩一遍了。

具体对应关系,我整理了一张表:

CUDA 版本 PyTorch 版本 vLLM 版本 我的评价
11.8 2.0.x / 2.1.0 0.2.x 老项目在用,新项目别碰
12.1 2.1.x / 2.2.0 0.3.x - 0.4.x ✅ 推荐组合,稳得很
12.4 2.3.0+ 0.5.x+ 新特性多,但坑也多
⚠️ 注意: 我曾经在 CUDA 11.8 上硬装 vLLM 0.4.x,结果编译到一半报错 "unsupported CUDA architecture"。折腾了两天,最后老老实实换回 12.1。所以别头铁,版本对齐是第一要务。

vLLM pip 安装

环境确认好了,安装就简单了。我个人习惯用虚拟环境,避免污染全局 Python。

# 创建虚拟环境
python -m venv vllm_env
source vllm_env/bin/activate

# 安装 PyTorch(以 CUDA 12.1 为例)
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121

# 安装 vLLM
pip install vllm==0.4.2

嗯,这里要注意一点。vLLM 安装时会自动编译一些 CUDA 扩展,这个过程可能持续 5-10 分钟。别以为卡住了,其实它在干活。你可以去泡杯咖啡。

如果安装过程中报错 "nvcc not found",说明你的 CUDA 工具包没装全。我建议直接装完整的 CUDA Toolkit,别只装 driver。命令如下:

# Ubuntu 系统
sudo apt install nvidia-cuda-toolkit

# 或者去 NVIDIA 官网下载 runfile 安装
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run
💡 小技巧: 如果你在公司内网,pip 下载慢,可以加个国内镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple vllm==0.4.2

Docker 镜像部署

说实话,pip 安装虽然方便,但生产环境我强烈推荐用 Docker。为什么?因为环境一致性。你在笔记本上装好了,到服务器上可能又是另一番景象。

vLLM 官方提供了 Docker 镜像,直接拉下来就能用:

# 拉取官方镜像
docker pull vllm/vllm-openai:latest

# 或者指定版本
docker pull vllm/vllm-openai:v0.4.2

拉下来之后,启动容器:

docker run --gpus all \
  -v /path/to/models:/models \
  -p 8000:8000 \
  vllm/vllm-openai:latest \
  --model /models/llama-2-7b-chat-hf \
  --served-model-name llama2-7b

这里我解释一下参数:

  • --gpus all:让容器访问所有 GPU
  • -v:挂载模型目录,这样容器里就能读到你的模型文件
  • -p 8000:8000:把容器的 8000 端口映射到宿主机
⚠️ 注意: 我曾经在 Docker 里跑 vLLM,结果发现 GPU 显存只用了 50%。查了半天,原来是没加 --gpus all 参数,容器默认只认 CPU。所以这个参数千万别漏。

验证安装是否成功

环境搭好了,怎么知道能不能用?我一般跑一个简单的推理测试。

先写一个 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, how are you?"], sampling_params)

# 打印结果
for output in outputs:
    print(output.outputs[0].text)

跑这个脚本,如果正常输出文本,说明安装成功。如果报错,别慌,看错误信息。常见的错误有:

  • CUDA out of memory:显存不够,换个更小的模型,或者调低 max-model-len
  • ModuleNotFoundError:某个依赖没装,pip install 补上就行
  • RuntimeError: CUDA error:驱动或 CUDA 版本不对,回头检查第一步
💡 小技巧: 如果你显存有限,可以加 --dtype float16 参数,显存占用直接减半。我测试过,精度损失几乎可以忽略。

本章知识体系

下面这张图,帮你理清环境搭建的完整流程:

vLLM 环境搭建知识体系 显卡驱动 + CUDA PyTorch vLLM pip 安装 Docker 部署 验证:运行推理测试脚本

说白了,环境搭建就三步:选对版本 → 装好软件 → 跑通测试。每一步都有坑,但只要你按照我上面说的来,基本不会出大问题。

好了,这一章就到这里。环境搭好了,下一章我们就可以开始真正的批量推理了。


专注资料整理