生产级高并发 LLM 服务的首选推理引擎,PagedAttention + 连续批处理把单卡吞吐拉到极致;单用户原型和 Mac 本地玩用 Ollama / LM Studio 更省心。
TL;DR
vLLM 是当前开源生态吞吐量最高的 LLM 推理引擎,由 UC Berkeley 团队开发,核心创新 PagedAttention 把 KV cache 当虚拟内存管,配合连续批处理(continuous batching)把 GPU 利用率从传统推理的 30-40% 拉到 70-80%+。Apache 2.0 协议,纯 Python + CUDA,部署在 Linux + NVIDIA GPU。
适合:需要对外提供 LLM API 服务、多用户并发、追求最大吞吐和最低延迟的工程团队,以及跑大规模 batch 离线推理的研究场景。不适合:单用户本地原型(用 Ollama 更轻量)、Mac M 系列(vLLM 对 Metal 支持有限)、没有 NVIDIA GPU 的环境、不想碰 Linux + CUDA 驱动的小团队。
核心能力
- PagedAttention:借鉴操作系统虚拟内存的分页机制管理 KV cache,消除碎片化,显存利用率提升 2-4 倍
- 连续批处理(Continuous Batching):请求动态插入 / 弹出,不需要等整批完成,GPU 闲置接近为零
- 高并发吞吐:单 A100 跑 Llama-3-8B 可达 800-12500 tok/s(取决于 batch size),比 Hugging Face Transformers 高 14-24 倍
- OpenAI 兼容 API:内置
--api-server,端点/v1/chat/completions直接替换 OpenAI SDK 的 baseURL 即用 - 量化支持:AWQ、GPTQ、FP8(H100/Ada)、INT8 KV cache,显存减半吞吐不掉
- 张量并行(Tensor Parallelism):
--tensor-parallel-size N多卡切分,支持多 GPU 推理大模型 - 分布式部署:Ray 集群多节点推理,支持 pipeline parallelism
- LoRA 多租户:同时加载多个 LoRA adapter,单服务多模型,按请求路由
价格
完全免费,Apache 2.0 开源,商用无限制。成本在于 GPU 硬件:一张 A100 80GB 云端约 $2-4/小时(按需),跑 70B 模型需 2-4 张。自建机房摊薄后更便宜。
体验与评测(资料整理)
说明:本节基于官方文档与公开评测整理,非本站独立实测环境,具体数据请以官方为准。 环境(撰写时参考):4× A100 80GB + Llama-3-70B-Instruct(FP16),vLLM 0.6.x 系列(最新稳定版请以 vllm.ai 为准)。
亮点:
vllm serve meta-llama/Meta-Llama-3-70B-Instruct --tensor-parallel-size 4一行拉起,4 卡自动切分- 并发 64 用户,平均延迟 1.2s,吞吐稳定在 3200 tok/s,GPU 利用率 75-85%
- 同样硬件跑 HF Transformers + 默认 batching,吞吐仅 ~200 tok/s,差距 16 倍
- AWQ 量化版 70B 单卡 A100 即可跑,吞吐只掉 15-20%,显存从 140GB 降到 40GB
- OpenAI 兼容端点接 Cursor / Dify / FastGPT 零改动
- 连续批处理下短请求和长请求混合调度公平,没有长尾饿死
踩坑:
- 第一次启动要编译 CUDA kernel,冷启动 3-5 分钟,加
--enforce-eager可跳过但掉速 20% - KV cache 默认占 90% 显存,跑长上下文(32K+)要手动调
--gpu-memory-utilization 0.85留余量 - 旧版本对 Qwen2.5-VL 等多模态模型支持不稳定,偶发 OOM,建议查阅官方 issue 选择适配版本
- 国内 HuggingFace 下载模型慢,配
HF_ENDPOINT=https://hf-mirror.com或预下载到本地 --max-model-len必须设,否则默认按模型最大上下文分配,32B 模型 128K 上下文会直接 OOM
上手
- 环境准备:Linux + NVIDIA GPU(compute capability ≥ 7.0)+ CUDA 12.1+,
pip install vllm - 拉起服务:
vllm serve meta-llama/Meta-Llama-3-8B-Instruct --port 8000 - 测试调用:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"meta-llama/Meta-Llama-3-8B-Instruct","messages":[{"role":"user","content":"hi"}]}' - 多卡并行:加
--tensor-parallel-size 4(卡数) - 量化部署:
vllm serve TheBloke/Llama-2-13B-AWQ --quantization awq - 接入应用:任何 OpenAI SDK 改
base_url=http://localhost:8000/v1即用
对比
| 维度 | vLLM | Ollama | TGI (HF) | TensorRT-LLM |
|---|---|---|---|---|
| 吞吐(A100 8B) | ~800-12500 tok/s | ~40 tok/s | ~500 tok/s | ~10000 tok/s |
| 上手门槛 | 中 | 极低 | 中 | 高 |
| PagedAttention | ✅ | ❌ | ✅ (v0.7+) | ❌ |
| 连续批处理 | ✅ | ❌ | ✅ | ✅ |
| OpenAI 兼容 | ✅ | ✅ | ✅ | 需封装 |
| 多模态 | 部分 | ✅ | ✅ | 部分 |
| Mac 支持 | ❌ 有限 | ✅ MLX | ❌ | ❌ |
| 开源协议 | Apache 2.0 | MIT | HFOIL | Apache 2.0 |
避坑
- 冷启动慢不是 bug:首次编译 CUDA kernel 需要几分钟,生产环境用 Docker 镜像预编译或加
--enforce-eager(牺牲 15-20% 性能换即时启动) --max-model-len必设:不设会按模型最大上下文预分配 KV cache,小显存直接 OOM- 量化模型要匹配版本:AWQ 模型必须用
--quantization awq,GPTQ 用--quantization gptq,混用会报错或精度崩 - 不要在 Mac 上用 vLLM 跑生产:Metal 后端是实验性的,性能远不如 CPU,Mac 本地推理用 Ollama / MLX
- 监控 GPU 显存碎片:长跑后偶发显存碎片导致新请求 OOM,加
--gpu-memory-utilization 0.85留 buffer 或定期重启 - 多模态模型看版本:不同版本对 VLM 支持差异较大,新模型先查官方 issue 选适配版本
适合 / 不适合
- ✅ 生产级 LLM API 服务(多用户并发、高吞吐)
- ✅ 大规模离线 batch 推理(数据标注、合成数据生成)
- ✅ 需要最低成本跑大模型(量化 + 单卡部署 70B)
- ✅ 有 NVIDIA GPU + Linux 运维能力的工程团队
- ❌ 单用户本地原型 / 个人开发(用 Ollama,0 配置)
- ❌ Mac M 系列用户(Metal 支持有限,用 Ollama + MLX)
- ❌ 没有 GPU 的环境(vLLM 的 CPU 后端性能极差)
- ❌ 多模态 / 语音模型生产部署(支持不稳定,看具体版本)
FAQ
Q: vLLM 和 Ollama 怎么选? A: Ollama 是 Daemon + CLI,单用户原型极简;vLLM 是推理服务器,多用户并发吞吐高 16-20 倍。个人用 Ollama,对外提供服务用 vLLM。
Q: 单卡能跑 70B 吗? A: 可以。用 AWQ/GPTQ 4-bit 量化,70B 约需 35-40GB 显存,A100 80GB 或 2×A100 40GB 张量并行。FP16 则需 140GB(2×A100 80GB)。
Q: 和 TensorRT-LLM 比谁快? A: TensorRT-LLM 在极致优化下略快(5-15%),但需要编译 engine、调试周期长、模型适配少。vLLM 灵活性和生态好得多,综合性价比更高。
Q: 支持 AMD GPU 吗? A: 部分支持。0.5+ 起 ROCm 后端可用,但稳定性、性能、生态都远不如 NVIDIA CUDA。生产环境仍建议 NVIDIA。
相关阅读
Jan · GPT4All · Open Interpreter
来源
本文的价格、版本号与性能数据均参考以下官方渠道整理,可能随时间变动,请以官方实时信息为准。
