框架分析¶
推理框架是 AI Infra 中“把模型变成服务”的那一层。写 PyTorch 算子解决的是“一个算子怎么算对”,框架解决的是“一堆请求在有限显存和带宽下怎么排队、复用和调度”。
这也是把 vLLM / SGLang 从 PyTorch 设备后端 里独立出来的原因:它们关心的不是单个 kernel 的数值,而是 KV Cache 的生命周期 与 batch 的组织方式。
目录¶
- vLLM:以 PagedAttention 与 continuous batching 为核心的高吞吐推理服务框架。
- SGLang:以 RadixAttention 前缀复用与结构化生成 DSL 为核心的推理框架。
为什么单独看框架¶
- 显存是硬约束:KV Cache 常常与权重同量级,“怎么存”比“怎么算”更决定吞吐。
- 请求长度差异极大:静态 batch 会浪费大量算力,动态调度才是常态。
- 复用无处不在:系统提示词、few-shot 前缀、多轮对话历史天然大量重复,缓存命中率可直接换算成吞吐。
- 这些问题无法靠“换一个更快的算子”解决,属于调度与内存管理层面的设计问题。
vLLM vs SGLang 对照¶
| 维度 | vLLM | SGLang |
|---|---|---|
| 调度粒度 | 请求级 + 迭代级 continuous batching | 请求级 + 前缀树感知的批次组织 |
| KV Cache 管理 | PagedAttention,block 化、按页复用 | RadixAttention,按前缀树节点复用 |
| 前缀缓存核心结构 | block table / 哈希命中 | radix tree |
| 结构化输出 | 受限解码(guided decoding) | compressed FSM + 前端 DSL |
| 典型场景 | 通用高吞吐 API 服务 | 强前缀复用、多轮 / 结构化输出场景 |
两者边界在持续互相吸收:vLLM 也在做前缀复用与结构化输出,SGLang 也在做分页式内存管理。不宜把它们看作互斥选项。
TODO
- 补一栏“实测关注指标”(吞吐 / 首 token 延迟 / 显存占用),用于横向对比。
- 记录一次真实选型判断的依据。