vLLM 简介

vLLM 是什么?

vLLM 是开源的 大模型推理与服务引擎,由 vLLM 项目 维护,文档在 docs.vllm.ai。它把 Hugging Face 格式的权重载入 GPU,用 PagedAttention 管理 KV 缓存,用 连续批处理 把多路请求拼到同一次前向里,从而抬高吞吐(tokens/s)和 GPU 利用率。

典型用法有两种:

  1. 在线服务: vllm serve <model> 露出 OpenAI 兼容 HTTP(默认 http://localhost:8000/v1)。
  2. 离线推理: Python 里 from vllm import LLM,对一批 prompt 做 generate / chat

它不负责「帮你搜模型、写 Agent、做桌面托盘」。模型来自 Hugging Face Hub;本地轻量聊天用 Ollama 更合适。


它在栈里的位置

┌─────────────────────────────────────────────────────────────┐
│  应用:curl · OpenAI SDK · LangChain · Dify · 自研网关        │
└───────────────────────────┬─────────────────────────────────┘
                            │  HTTP  /v1/chat/completions
              ┌─────────────┴─────────────┐
              │  vLLM OpenAI 兼容服务器    │
              │  localhost:8000           │
              └─────────────┬─────────────┘

                    ┌───────┴────────┐
                    │  调度 + 连续批处理 │
                    │  PagedAttention   │
                    └───────┬────────┘

                    ┌───────┴────────┐
                    │  NVIDIA GPU     │
                    │  HF 权重 / KV 页 │
                    └────────────────┘
组件作用
引擎把请求排进连续批次,跑 Transformer 前向
PagedAttentionKV 缓存按「页」分配,减少预留浪费、方便并发
OpenAI 服务器/v1/chat/completions/v1/completions/v1/models
Hub 权重默认从 Hugging Face 下载并缓存

PagedAttention(直觉)

自回归生成时,每个新 token 都要读历史的 K/V。朴素实现会按「最大序列长度 × 并发数」预留一块连续显存:大多数序列远没那么长,空洞极大,并发上不去。

PagedAttention 把 KV 切成固定大小的 页(block),像操作系统的虚拟内存:逻辑上连续的上下文,物理上可以不连续。好处是:

  • 用多少占多少,少浪费
  • 新请求容易插进空页
  • 前缀缓存、抢占、变长序列更好做

你不必手写分页代码;选对 max-model-lengpu-memory-utilization 即可。细节见 生产服务


连续批处理(直觉)

静态批处理要等「这一批全部生成结束」才能接下一批。短回答的请求会空转,等最长的那条。

连续批处理(continuous batching / iteration-level scheduling)解码步 调度:某条序列结束,立刻腾出槽位给排队中的新请求;新请求也可以在下一步加入。GPU 尽量每步都在算有效 token,这是 vLLM 吞吐高的主要原因之一。

对调用方来说:你仍然是一次 HTTP 请求对应一次补全;引擎在内部把很多请求揉在一起。


适合 / 需谨慎

适合:

  • 多用户、多并发的聊天 / 补全 API
  • 已有 OpenAI SDK 或 LangChain,只想改 base_url
  • 数据中心 GPU(A100 / L40S / H100 等)上要打满利用率
  • 离线对数据集做批量生成(合成数据、评测)

需谨慎:

  • 笔记本 / 无 NVIDIA GPU / 只想本机聊一句 → Ollama
  • 第一次实验就用 70B 满精度、且只有 8GB 显存
  • 把未加固的 8000 端口映射到公网(--api-key 不能单独当防火墙,见 生产服务
  • 把 CPU 推理当成 vLLM 的「官方幸福路径」——文档虽有其他后端,本课主路径是 NVIDIA GPU

和 Transformers、Ollama 差在哪

维度Transformers generate()OllamavLLM
目标研究、微调、单进程脚本本机 DX服务端吞吐
批处理多为静态 / 自己写适合交互连续批处理
KV 缓存常规张量运行时自管PagedAttention
接口Python APICLI + /api + /v1OpenAI /v1 + LLM
硬件CPU 也能试小模型消费级 GPU / Apple / CPUNVIDIA GPU 主路径

下一步

评论