4、vLLM安装与部署:环境要求、pip安装、源码编译、Docker部署、验证安装

聊到vLLM的安装,我得先跟你交个底——这玩意儿对环境的挑剔程度,比我家猫对猫粮还高。搞不对环境,后面所有优化都是空中楼阁。我自己踩过的坑,今天全给你抖出来。

4.1 环境要求:别让硬件拖后腿

先说说硬件。vLLM的核心是PagedAttention,这玩意儿极度依赖GPU显存。我建议你至少准备一块24GB显存的卡,比如A10G或A100。为什么?因为连续批处理的核心就是塞更多请求进显存,显存小了,你连个7B模型都跑不爽。

组件 最低要求 推荐配置
GPU NVIDIA T4 (16GB) A100 80GB / H100
CUDA版本 11.8 12.1+
Python版本 3.8 3.10 - 3.12
系统内存 32GB 64GB+

软件方面,我强烈建议你用Ubuntu 22.04。CentOS?嗯,我劝你放弃。曾经有个客户非要在CentOS 7上跑,结果光折腾gcc版本就花了两天,最后还得切Ubuntu。何必呢?

⚠️ 注意: 如果你用WSL2,记得把显存分配调大。默认的8GB根本不够用,我吃过这个亏。

4.2 pip安装:最省心的方式

说白了,pip安装就是一行命令的事。但这里有个坑——vLLM的PyPI包名是vllm,不是vLLM。大小写敏感,别搞错了。

# 基础安装
pip install vllm

# 如果你需要特定版本
pip install vllm==0.4.0

# 我习惯加上镜像源,国内下载快很多
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,你可以跑个简单的验证:

python -c "from vllm import LLM; print('vLLM installed successfully')"

如果没报错,恭喜你,最顺利的情况。但说实话,我遇到十次里有三次会卡在torch的依赖上。这时候别慌,手动装一下对应CUDA版本的PyTorch就行。

💡 小技巧: 我建议你用虚拟环境。conda或venv都行,别直接装到系统Python里。不然哪天项目冲突了,哭都来不及。

4.3 源码编译:当pip满足不了你时

为什么要源码编译?两个场景:一是你想用最新的特性,PyPI还没发版;二是你要针对特定硬件做优化。我自己就经常编译,因为有些patch需要提前测试。

编译前,先把依赖装齐:

# 系统依赖
sudo apt-get update
sudo apt-get install -y build-essential cmake

# 克隆源码
git clone https://github.com/vllm-project/vllm.git
cd vllm

# 安装Python依赖
pip install -r requirements.txt

# 开始编译(这步比较慢)
pip install -e .

编译时间取决于你的机器。我拿48核的机器编译,大概要15分钟。如果你用笔记本,建议泡杯咖啡等着。曾经有个同事用4核的虚拟机编译,等了快一小时,最后还报了个OOM——嗯,编译时内存不够也会挂。

⚠️ 注意: 编译时确保你有至少16GB的可用内存。如果不够,可以加--no-cache-dir参数减少缓存占用。

4.4 Docker部署:生产环境的首选

我个人习惯用Docker。为什么?因为环境隔离做得干净,不会污染宿主机。而且K8s上跑服务,Docker镜像是最自然的载体。

vLLM官方提供了Docker镜像,直接拉就行:

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

# 启动服务(挂载模型目录)
docker run --gpus all \
    -v /path/to/models:/models \
    -p 8000:8000 \
    vllm/vllm-openai:latest \
    --model /models/llama-7b \
    --tensor-parallel-size 2

这里有个关键参数--tensor-parallel-size。如果你有多张卡,这个参数决定了模型切分到几张卡上。我建议先设成1,跑通了再加。别一上来就搞4卡并行,出了问题排查起来很痛苦。

如果你想自己构建镜像,Dockerfile也很简单:

FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04

RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip install vllm

ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"]
💡 小技巧: 生产环境我建议用--dtype auto参数。它会自动选择最适合你GPU的数据类型,省心又高效。

4.5 验证安装:跑个Hello World

装完了,怎么知道它真的能干活?我一般跑个简单的推理测试:

from vllm import LLM, SamplingParams

# 加载模型(这里用个小模型测试)
llm = LLM(model="facebook/opt-125m")

# 设置采样参数
sampling_params = SamplingParams(
    temperature=0.7,
    top_p=0.9,
    max_tokens=100
)

# 跑推理
prompts = ["Hello, how are you?"]
outputs = llm.generate(prompts, sampling_params)

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

如果顺利输出了文本,说明安装成功了。但别高兴太早——我建议你再测一下连续批处理功能:

# 模拟多个并发请求
prompts = [
    "What is AI?",
    "Explain Kubernetes",
    "Tell me a joke"
]

# 同时发送,vLLM会自动做连续批处理
outputs = llm.generate(prompts, sampling_params)

for i, output in enumerate(outputs):
    print(f"Request {i}: {output.outputs[0].text[:50]}...")

看到三个请求都快速返回了吗?这就是连续批处理的威力。如果其中一个特别慢,可能是显存不够或者模型切分有问题。

📌 核心要点:
  • 环境检查是第一步,别跳过
  • pip安装最快,但源码编译更灵活
  • Docker部署是生产环境标配
  • 验证时一定要测并发场景

好了,安装部署这块就这些。记住一个原则:环境越干净,问题越少。我见过太多人因为环境乱七八糟,最后花几小时排查一个根本不是代码的问题。你想想看,是不是这个理?

vLLM安装部署流程 环境要求 GPU / CUDA / Python 安装方式 pip / 源码 / Docker 验证测试 单请求 / 并发测试 三种安装方式对比 pip安装 最快,一行命令 适合快速验证 版本可能滞后 源码编译 最新特性 可定制优化 编译耗时较长 Docker部署 环境隔离 K8s原生支持 生产环境首选

专注资料整理