vLLM 是一种 高性能的大语言模型推理引擎(inference engine),它的核心目标是让 LLM(如 Qwen、LLaMA、GPT 等)在生成推理阶段更加快速、高效、低延迟地响应,同时支持大规模并发请求。
⸻
🧠 一、vLLM 是什么
vLLM = “Virtual LLM Memory”
它由加州大学伯克利(UC Berkeley)团队开发,是目前最广泛使用的 LLM 推理框架之一,和 Hugging Face Transformers + Accelerate、Text Generation Inference (TGI)、TensorRT-LLM 等属于同类技术。
vLLM 的核心创新是一个叫 PagedAttention(分页注意力) 的机制,用来高效地管理显存和计算资源,使得在同样的 GPU 上可以同时服务更多请求、使用更长上下文(context length)、响应更快。
⸻
⚙️ 二、vLLM 的核心原理与架构
可以把 vLLM 理解成一个 “智能调度 + 显存分页管理” 的系统,它在 Transformer 推理的标准流程上进行了深度优化。
1️⃣ 常规 LLM 推理瓶颈
传统的推理框架(如 Transformers pipeline)在生成时:
• 每个请求需要一整块连续的显存保存 KV cache(注意力缓存)。
• 不同请求之间 KV cache 不共享。
• 内存碎片化严重,GPU 很快被“塞满”。
• 批量合并效率低,多用户并发性能差。
结果:显存占用极高、吞吐低、并发差。
⸻
2️⃣ vLLM 的核心创新:PagedAttention
🧩 概念:
PagedAttention 借鉴了操作系统的分页内存(Virtual Memory)机制。
• 把 注意力缓存(KV Cache) 分成多个小块(pages),而不是整块内存。
• 通过一个“页表(page table)”映射机制,动态地为每个请求分配/释放这些内存页。
• 多个请求可以共享空闲页,无需连续内存。
🪄 效果:
• 避免显存碎片化;
• 动态复用 KV Cache;
• 显著提升吞吐量与并发量;
• 允许 更长的上下文长度(long context);
• 允许 更快的生成速度。
举例:一个 80GB 显存的 A100 卡,用传统推理可能只能同时服务 10 个请求;
用 vLLM 的 PagedAttention 可以轻松支持 50~100 个请求。
⸻
3️⃣ Request Scheduling(请求调度)
vLLM 实现了类似操作系统的 “调度器”:
• 将多个用户请求合并为一个批次(batch);
• 自动进行 连续 token 生成(continuous batching);
• 动态地插入/移除请求,无需等待整批完成;
• 支持流式输出(streaming response);
• 支持多线程和多 GPU(tensor parallel)。
✅ Continuous batching:是 vLLM 高并发的关键。
它允许不同用户的请求在任意时间加入批次,而不用等一个 batch 全部完成再开始下一个。
⸻
4️⃣ 架构图示(逻辑结构)
┌─────────────────────────────┐
│ vLLM Server │
│ ┌─────────────────────────┐ │
│ │ Request Scheduler │ │ ← 合并请求、分配GPU资源
│ └─────────────────────────┘ │
│ ┌─────────────────────────┐ │
│ │ PagedAttention Core │ │ ← 显存分页 & KV cache 管理
│ └─────────────────────────┘ │
│ ┌─────────────────────────┐ │
│ │ Model Executor (TP) │ │ ← Transformer并行计算
│ └─────────────────────────┘ │
└─────────────────────────────┘
⸻
🚀 三、性能优势

⸻
🧩 四、典型部署方式
python3 -m vllm.entrypoints.openai.api_server \
--model /root/model/qwen3 \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.9 \
--port 8000 \
--served-model-name qwen-3
这样启动后,你就得到一个兼容 OpenAI API 的推理服务。
客户端可直接用:
import openai
openai.api_key = "none"
openai.base_url = "http://localhost:8000/v1"
response = openai.ChatCompletion.create(
model="qwen-3",
messages=[{"role": "user", "content": "你好"}]
)
⸻
🧮 五、vLLM 的工作流程总结
阶段 动作 说明
1️⃣ 请求进入 API 收到用户请求 HTTP -> Request queue
2️⃣ 调度分配 Scheduler 批量化调度 Continuous batching
3️⃣ 分页分配 PagedAttention 管理 KV Cache 内存页动态分配
4️⃣ GPU 推理 Transformer 层执行计算 Tensor Parallel 计算
5️⃣ 流式返回 分块返回 token Stream 模式输出结果
6️⃣ 回收资源 页回收、上下文释放 高效复用显存
⸻
🧠 六、总结一句话
vLLM 就是一个为大语言模型推理阶段打造的“虚拟内存 + 智能调度”引擎。
它通过:
• PagedAttention(分页注意力)
• Continuous batching(连续批处理)
• 高效显存复用与多GPU并行
实现了:
• 高吞吐量
• 低延迟
• 大上下文
• 高并发
从而成为目前大模型推理部署的主流方案之一(广泛用于 Qwen、Yi、LLaMA、ChatGLM、Mistral 等模型)。
vLLM:高性能大模型推理引擎
5970

被折叠的 条评论
为什么被折叠?



