第五篇 · 推理系统与 Serving
训好的模型,怎么低成本、低延迟地服务出去
⏳ 本章待补充
这一章要回答的问题
训好的模型,怎么低成本、低延迟地服务出去?
训练优化的是吞吐,推理要在吞吐、延迟、成本三者之间取舍,还要面对训练阶段不存在的敌人:KV Cache。
前置知识
- 第一篇 1.1 与 1.5 节(必须做到):能判断 prefill 和 decode 分别卡在算力还是带宽。
- 知道 KV Cache 是什么、为什么存在。
先建立四个术语
| 术语 | 含义 | 谁在乎 |
|---|---|---|
| TTFT | 首 token 延迟,由 prefill 决定 | 交互式应用 |
| TPOT | 每 token 生成时间,由 decode 决定 | 所有生成式应用 |
| Throughput | 每秒总 token 数 | 批处理 |
| Goodput | 满足 SLO 前提下的有效吞吐 | 生产服务(最重要) |
两个阶段性质完全不同,这是理解本章一切设计的钥匙:
| Prefill | Decode | |
|---|---|---|
| 计算特性 | 大矩阵乘,算力受限 | 逐 token,带宽受限 |
| 并行度 | 高 | 低(受 batch 限制) |
| 主要成本 | 算力 | 显存带宽 + KV Cache 容量 |
计划覆盖的内容
| 小节 | 回答的问题 |
|---|---|
| 连续批处理 | Orca 如何让请求随时插入?为什么能提升数倍吞吐? |
| KV Cache 内存管理 | 碎片从哪来?分页为什么能解决它? |
| 量化 | 为什么 LLM 的异常值让 INT8 特别难做?AWQ 保护了什么? |
| 投机解码 | 为什么它不改变输出分布?什么时候反而更慢? |
| 调度与部署 | 分块预填充与 PD 分离各自在解决什么? |
| 动手实验 | 跑通 vLLM 并压测不同并发下的 TTFT / TPOT / 吞吐 |
对应的论文(见论文清单)
LLM Serving 综述(2023)、MoE 推理优化综述(ACM Computing Surveys 2026)、Orca(OSDI 2022)、PagedAttention / vLLM(SOSP 2023)、AWQ / GPTQ / SmoothQuant / LLM.int8()、投机解码(ICML 2023)、Sarathi-Serve 与 DistServe(OSDI 2024)、SGLang、Mooncake。
💡 先读两篇综述(第 1 篇是通用 LLM 服务的地图,第 2 篇是 MoE 特有的问题)。MoE 有一整批通用综述不覆盖的难题——专家并行与 all-to-all、专家卸载与缓存、以及"不同专家的激活分布差异极大"给量化带来的麻烦。两篇合起来读,本模块的每一篇论文你都能找到它挂在哪儿。
← 返回 首页 | 上一章:第四篇 · 训练系统与并行策略