第二章:环境搭建与部署

好,咱们直接进入正题。这一章讲的是怎么把vLLM跑起来。说实话,环境搭建这块,我见过太多人卡在第一步了。硬件选不对,装了半天跑不起来,心态直接崩掉。今天我就把踩过的坑、试过的方案,一次性说清楚。

2.1 硬件选型建议

先聊硬件。很多人一上来就问:“我该买什么显卡?” 我的回答是:看你的模型多大,以及你要多快的响应速度。

GPU:核心中的核心

vLLM对GPU的要求,说白了就是显存要大、带宽要高。我个人习惯用NVIDIA的卡,因为CUDA生态太成熟了。

模型规模 推荐GPU 显存需求 备注
7B以下 RTX 4090 / A10 24GB 单卡够用,量化后更轻松
13B-70B A100 80G / H100 80GB 建议双卡或四卡并行
70B以上 H100 SXM / 多卡集群 ≥160GB 必须用张量并行
⚠️ 注意: 我曾经遇到过有人用RTX 3060跑13B模型,结果OOM直接崩了。显存不够,千万别硬上。量化(比如INT4)可以救急,但精度会掉。

CPU与内存:别忽视的配角

CPU其实没那么关键,但内存不能省。vLLM在加载模型时,会把权重先读到内存里。我建议至少64GB起步,如果跑70B模型,128GB才稳。

CPU核心数?嗯,16核以上就够用了。vLLM的调度主要靠GPU,CPU只是打辅助。

2.2 vLLM安装:两种方式

安装vLLM,我试过两种路子:pip一键安装,和源码编译。各有优劣,我分别说说。

方式一:pip安装(推荐新手)

最简单,没有之一。一行命令搞定:

pip install vllm

但有个坑:vLLM依赖CUDA 11.8或12.1。如果你系统里CUDA版本不对,会报错。我建议先检查一下:

nvcc --version

如果版本不对,可以用conda创建虚拟环境:

conda create -n vllm_env python=3.10
conda activate vllm_env
pip install vllm
💡 小技巧: 我个人习惯用Python 3.10,因为3.11以上有些库还没完全适配。别问我怎么知道的,都是泪。

方式二:源码编译(进阶玩家)

为什么要源码编译?说白了,为了性能。pip安装的是预编译包,有些优化没打开。源码编译可以针对你的GPU架构做定制优化。

步骤也不复杂:

git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .

这里要注意:编译时间挺长的,大概20-30分钟。我建议用tmux或者screen挂着,别中途断掉。

⚠️ 避坑指南: 我曾经在源码编译时忘了装ninja,结果编译速度慢得像蜗牛。先装好:pip install ninja,能快3倍。

2.3 启动vLLM服务:OpenAI兼容API

装好了,怎么用?vLLM最爽的一点是,它提供了OpenAI兼容的API。这意味着你之前写的调用OpenAI的代码,几乎不用改就能用。

启动服务很简单:

python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-2-7b-chat-hf \
    --port 8000 \
    --tensor-parallel-size 1

参数解释一下:

  • --model:模型路径或HuggingFace模型名
  • --port:服务端口,默认8000
  • --tensor-parallel-size:张量并行数,单卡就设1

启动后,你可以用curl测试:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "meta-llama/Llama-2-7b-chat-hf",
        "messages": [{"role": "user", "content": "Hello!"}]
    }'

返回结果和OpenAI一模一样。你想想看,这多方便。我之前做项目,直接改个base_url就切过来了。

2.4 Docker部署方案

生产环境里,我强烈推荐用Docker。为什么?环境隔离、一键部署、方便扩缩容。

vLLM官方提供了Docker镜像:

docker pull vllm/vllm-openai:latest

启动容器:

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

这里有几个要点:

  • --gpus all:把GPU全挂进去
  • -v:挂载模型目录,避免每次下载
  • 端口映射:宿主机8000映射到容器8000
🔑 核心经验: 我建议在Docker里也设置--tensor-parallel-size。如果你有4张卡,设成4,vLLM会自动做张量并行。但注意,这个值必须能整除GPU数量。

嗯,还有个细节:Docker里默认的共享内存太小,vLLM会报错。加个参数:

--shm-size 8g

我曾经因为这个坑,排查了整整一下午。后来发现是shm不够,加完就好了。

知识体系总览

下面这张图,是我自己画的。把本章的核心逻辑串了一遍:

vLLM环境搭建与部署核心流程 硬件选型 安装方式 服务启动 GPU / CPU / 内存 pip安装 / 源码编译 OpenAI兼容API Docker部署 镜像拉取 → 容器启动 → 模型挂载

这张图把本章的脉络理清了:硬件选型是地基,安装是工具,服务启动是目标,Docker是生产环境的标配。每一步都环环相扣。

💡 我的建议: 如果你是第一次搞,先用pip装,跑通一个7B模型试试水。等熟悉了,再考虑源码编译和Docker。别一上来就搞复杂的,容易劝退。

好了,环境搭建这部分就这些。记住一句话:硬件选对,安装不累。下一章咱们聊性能基准测试,那才是真正见真章的地方。


公众号:蓝海资料掘金营,微信deep3321