vLLM应该怎么学习
学习路线
1. 核心原理
先理解 vLLM 为什么快:它用 PagedAttention 把 KV Cache 做成“分页内存”,几乎零碎片、可复用/共享,从而把吞吐拉满。推荐先扫一眼论文或官方介绍,知道“为什么”再学“怎么用”。
2. 最小可用:Quickstart + OpenAI 兼容服务
按照官方 Quickstart 跑通本地推理与 OpenAI-Compatible Server(它兼容 OpenAI 的 Completions/Chat API,所以可以当作 drop-in 替代)。
3. 性能调优与并行
理解常用参数(如 --gpu-memory-utilization)、批处理/并发、以及 Tensor Parallel / Pipeline Parallel 的使用场景。
4. 省显存与大模型
掌握量化(bitsandbytes/AWQ/GPTQ 等)与长上下文、KV Cache 策略,帮助你在既定显存上跑更大模型。
5. 生产部署
学会用官方镜像跑 Docker,再看 K8s 的部署指南或参考“Production Stack”示例。
环境准备与安装
• NVIDIA GPU 环境下最简单:
pip install vllm
若你更偏好容器,官方提供了 vllm/vllm-openai 镜像,见下文 Docker 部署。 
一键跑通(OpenAI 兼容服务)
方式 A:本机/虚拟环境
例:服务 Llama 3.1 8B 指令模型(可替换成你喜欢的 HF 模型)
vllm serve meta-llama/Meta-Llama-3.1-8B-Instruct \--host 0.0.0.0 --port 8000 \--dtype auto \--served-model-name llama31-8b
启动后,将暴露一个 OpenAI 兼容的 HTTP 服务(/v1/chat/completions 等)。 
调用示例(Python,OpenAI 官方 SDK)
from openai import OpenAI
client = OpenAI(api_key="token-abc123", base_url="http://localhost:8000/v1")resp = client.chat.completions.create(model="llama31-8b",messages=[{"role":"user","content":"用一句话解释什么是PagedAttention"}]
)
print(resp.choices[0].message.content)
(vLLM 的服务端实现了 OpenAI 的 Chat/Completions 接口,因此可直接用 OpenAI 客户端访问。)
方式 B:Docker(推荐上线/隔离)
需安装 NVIDIA Container Toolkit
docker run --gpus all --rm -it \-p 8000:8000 \-e HF_TOKEN=$HF_TOKEN \vllm/vllm-openai:latest \--model meta-llama/Meta-Llama-3.1-8B-Instruct \--host 0.0.0.0 --port 8000 \--dtype auto \--served-model-name llama31-8b
官方镜像即开即用,方便迁移到服务器或 K8s。
常用参数与性能调优(上手就够用)
• --gpu-memory-utilization:默认 0.9;越高可为 KV Cache 预留越多显存,通常能提升吞吐(到稳定为止)。
例:–gpu-memory-utilization 0.92。
• --max-model-len:控制最大上下文长度;越长意味着每请求的 KV Cache 更大,要结合显存与吞吐权衡。 (参数含义详见 Engine/Serving 文档;调优思路与 gmu 一起看。)
• 并行:
• --tensor-parallel-size(TP):单机多卡/多机多卡都可用;把每层参数在多 GPU 间切分,适合模型太大单卡放不下或希望提高吞吐。
• --pipeline-parallel-size(PP):按层切分;更深的模型或跨节点扩展时使用。
二者可组合使用。
• 其他常见:–dtype auto、–served-model-name、–download-dir、–trust-remote-code(个别模型需要)等,详见 OpenAI 服务器文档。
省显存/大模型技巧
• 量化:vLLM 支持多种方案(bitsandbytes、AWQ、GPTQ、GGUF 等)。4/8bit 可显著降低显存占用;不同方案在速度/精度上各有取舍。
例:–quantization bitsandbytes 或加载相应量化权重。
• 理解 PagedAttention:知道 KV Cache 是如何分页、复用与回收,有助于解释吞吐波动与 OOM 的根因。
进阶部署(生产就绪)
• Kubernetes:官方给出 K8s 指南;需要更完整的观测、调度、弹性,可参考 vLLM 团队的 Production Stack(含多实例路由、KV Cache offloading、监控示例)。
• 多云/托管示例:GKE/TPU、GKE/GPU、CoreWeave 等也有官方或社区的 vLLM 教程,可做参考。
• 容器最佳实践:使用官方镜像、固定模型与参数、加健康检查与资源限额;把 HF_TOKEN 等敏感变量注入到安全的密钥管理中。
常见问题与排错速查
• 显存不够 / OOM:降低 --max-model-len、调低生成长度、开启/改用量化、或增大 TP/PP;必要时下调 --gpu-memory-utilization 以保守启动。
• 并行没生效或报错:确认 --tensor-parallel-size / --pipeline-parallel-size 与实际 GPU 数匹配,分布式环境变量/可见设备设置正确。
• 调用兼容性:vLLM 实现了 OpenAI 的 Completions/Chat API;若 SDK 报路径/模型名错误,核对 base_url、model(即 --served-model-name)是否一致。
给你一套可复制的“从 0 到 1”清单
1. 准备环境:NVIDIA 驱动 + CUDA(或直接用 Docker + NVIDIA Container Toolkit)。
2. 安装/拉镜像:pip install vllm,或 docker pull vllm/vllm-openai:latest。
3. 启动服务:vllm serve <HF 模型> + 常用参数(端口/显存利用/并行)。
4. 用 OpenAI SDK 调用:设置 base_url=http://:/v1。
5. 按压测调参:先调 --gpu-memory-utilization,再看批量与并发、再考虑量化/并行。
6. 容器化与编排:用官方镜像封装,最后上 K8s 并接入监控/告警;需要模板可参考 vLLM Production Stack。