第二章:环境搭建与部署
好,咱们直接进入正题。这一章讲的是怎么把vLLM跑起来。说实话,环境搭建这块,我见过太多人卡在第一步了。硬件选不对,装了半天跑不起来,心态直接崩掉。今天我就把踩过的坑、试过的方案,一次性说清楚。
2.1 硬件选型建议
先聊硬件。很多人一上来就问:“我该买什么显卡?” 我的回答是:看你的模型多大,以及你要多快的响应速度。
GPU:核心中的核心
vLLM对GPU的要求,说白了就是显存要大、带宽要高。我个人习惯用NVIDIA的卡,因为CUDA生态太成熟了。
| 模型规模 | 推荐GPU | 显存需求 | 备注 |
|---|---|---|---|
| 7B以下 | RTX 4090 / A10 | 24GB | 单卡够用,量化后更轻松 |
| 13B-70B | A100 80G / H100 | 80GB | 建议双卡或四卡并行 |
| 70B以上 | H100 SXM / 多卡集群 | ≥160GB | 必须用张量并行 |
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
方式二:源码编译(进阶玩家)
为什么要源码编译?说白了,为了性能。pip安装的是预编译包,有些优化没打开。源码编译可以针对你的GPU架构做定制优化。
步骤也不复杂:
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .
这里要注意:编译时间挺长的,大概20-30分钟。我建议用tmux或者screen挂着,别中途断掉。
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
--tensor-parallel-size。如果你有4张卡,设成4,vLLM会自动做张量并行。但注意,这个值必须能整除GPU数量。
嗯,还有个细节:Docker里默认的共享内存太小,vLLM会报错。加个参数:
--shm-size 8g
我曾经因为这个坑,排查了整整一下午。后来发现是shm不够,加完就好了。
知识体系总览
下面这张图,是我自己画的。把本章的核心逻辑串了一遍:
这张图把本章的脉络理清了:硬件选型是地基,安装是工具,服务启动是目标,Docker是生产环境的标配。每一步都环环相扣。
好了,环境搭建这部分就这些。记住一句话:硬件选对,安装不累。下一章咱们聊性能基准测试,那才是真正见真章的地方。
公众号:蓝海资料掘金营,微信deep3321