vLLM 是什么:概念介绍
一、vLLM 是什么:概念介绍
vLLM 是一个面向大语言模型(LLM)的高吞吐推理与服务引擎。它不改模型结构、不重新训练,只是把「已经训练好的权重」加载进来,用一套经过专门优化的调度与显存管理机制把推理跑得更快、并发更高。它的接口设计遵循 OpenAI 的兼容协议,因此多数已经按 OpenAI 接口写好的应用,只要改一个 base_url 就能切过来。
它要解决的核心矛盾是显存浪费与批处理效率。传统推理把每个请求的 KV cache 申请成一块连续显存,长度按最大可能值预留,结果大量显存被「预留但没用」;请求之间的长度差异又让批处理只能等最长的那条,短请求被拖慢。vLLM 用 PagedAttention 把 KV cache 切成固定大小的块按需分配,再用连续批处理(continuous batching)让新请求随时插进正在运行的批次,从而把吞吐推上一个台阶。
与相邻方案的区别
| 方案 | 核心机制 | 定位 |
|---|---|---|
| vLLM | PagedAttention + 连续批处理 | 通用高吞吐服务引擎,生态与社区最大 |
| SGLang | RadixAttention + 结构化生成前端 | 前缀复用密集、需要复杂生成约束的场景 |
| Hugging Face transformers | 逐请求前向 | 原型验证、微调,不适合高并发服务 |
| TensorRT-LLM | 编译式图优化 | NVIDIA 生态内追求极致性能,构建链路更重 |
| Ollama / llama.cpp | CPU/GPU 混合,量化优先 | 单机本地体验、端侧,不是服务集群方案 |
核心术语
| 术语 | 含义 |
|---|---|
| PagedAttention | 把 KV cache 分块管理,按需分配,减少显存碎片与浪费 |
| 连续批处理 | 批内请求完成即退、新请求即时加入,不必等整批结束 |
| 前缀缓存 | 相同前缀的请求复用已算好的 KV,省掉重复计算 |
| 张量并行(TP) | 把单层权重切到多张卡上,模型放不下时必用 |
| 流水线并行(PP) | 按层切分到多卡,跨节点时常用 |
| gpu_memory_utilization | 允许引擎占用显存的比例,直接影响可用 KV cache 容量 |
| max_model_len | 单请求允许的最大上下文长度,决定 KV cache 单条占用 |
| 量化 | AWQ / GPTQ / FP8 等,用精度换显存与吞吐 |
| 投机解码 | 用小模型草拟、大模型验证,降低单请求延迟 |

