Taming the Titans:高效 LLM 推理服务综述

  • 关联论文:2504.19720
  • 作者:flyP
  • 更新:2026-07-05

一句话结论

这是一篇由苏州大学与华为云联合发布的 LLM 推理服务(LLM Serving)领域系统综述,把当前零散分布在系统、调度、存储、硬件等方向的优化手段,第一次按"实例级 → 集群级 → 新兴场景 → 杂项"四级层级串成一张可索引的地图,并指出 LLM Serving 正从"工程调优"向"理论优化"升级的研究范式转变。

解决的真问题

LLM 推理(Inference Serving)要把一个动辄数十亿到上千亿参数的 Transformer 模型,在多张 GPU 上以低延迟、高吞吐、稳定满足 SLO 的方式对外提供服务。它同时面对四类结构性矛盾:

  • 显存与算力:模型权重 + KV cache 占据大量显存,self-attention 在 decode 阶段是 memory-bound(带宽受限)而非 compute-bound(算力受限)。
  • 请求异构:不同 prompt 的输入长度、输出长度、生成策略差异巨大,传统静态 batch 无法兼顾吞吐与尾部延迟。
  • 阶段不对称:prefill(处理输入)和 decode(自回归生成)两个阶段的算力–带宽特性完全不同,混跑会互相拖累。
  • 系统复杂:单机调度、跨机部署、跨集群负载均衡、云上弹性,这些层面交织在一起,缺乏统一抽象。

作者指出,已有综述(Miao et al. 2023、Yuan et al. 2024、Zhou et al. 2024、Li et al. 2024a)在深度、广度或时效性上各有局限,本文的目标是给出"系统化、细粒度、对最新进展保持同步"的统一分类法。

核心方法:四级分类法

论文的核心贡献不是某个新算法,而是把整个 LLM Serving 领域压缩成一个四层分类体系。下文每层用一段伪代码或公式讲清它到底在优化什么。

第 3 章:实例级优化(单台 / 单实例)

这是最贴近模型本身的层级。作者把它的内部五个子问题显式列出:

3.1 模型放置(Model Placement)

当单卡装不下权重时,需要张量并行(TP)、流水并行(PP)、序列并行(SP)等组合。论文抽象出约束:

目标:最小化推理时延 latency(Π)
约束:∑ weights(p_i) ≤ mem(GPU_i),Π 是合法切分方案

实践中没有闭式解,工程上靠 profiler + 搜索。论文指出,自动化的 placement 搜索(如 TensorRT-LLM、Alpa、Unity)等正在成为热点。

3.2 请求调度(Request Scheduling)

这是综述最有"画面感"的一节。论文用一张图刻画了一个反直觉的现象:

两个请求同时到达:R1 输出 10 tokens,R2 输出 2 tokens。默认解码速度 1 token/s。如果先处理 R1,R1 的生成速率是 1 tok/s,但 R2 只有 0.2 tok/s;把顺序倒过来,R2 拿到 1 tok/s,R1 还有 0.9 tok/s——总 token 数不变,但尾延迟显著下降。

这就是 SJF(Shortest Job First)思想在 LLM 推理里的复活:先处理"预估输出短"的请求能显著降低 mean slowdown 与 P99 延迟。论文把这个观察抽象为调度目标:

minimize Σ normalized_latency(R_i)
subject to: prefill + decode budget ≤ TTFT_SLO, TPOT_SLO

3.3 解码长度预测(Decoding Length Prediction)

要实现 SJF,必须先估输出长度。论文把现有方法分成三类:

  • 基于统计:用 prompt 的 token 数、prompt 类型分类等启发式预估。
  • 基于模型:训练一个轻量回归器/分类器,输入 prompt embedding,输出长度分桶。
  • 基于投机解码:先用 draft model 跑几步看收敛点。

这一节是连接"调度"与"模型本身"的桥梁,也是后续新兴场景 5.7(Test-Time Reasoning)里 CoT、ToT 等长输出场景的重要前置。

3.4 KV cache 与存储管理

自回归 decode 时,每生成一个 token 都要缓存所有历史 K/V。论文把 KV cache 管理问题归结为三个子问题:

- 分配(allocation):为每个请求分配连续还是分页显存
- 复用(reuse):前缀共享、跨请求共享 prefix cache
- 压缩(compression):量化、稀疏化、淘汰

这是把操作系统"虚拟内存 + 页表 + 换出"那一套思路移植到 GPU 显存上的典型例子。代表工作包括 vLLM 的 PagedAttention、SGLang 的 RadixAttention、KVQuant 等。

3.5 解耦架构(Disaggregation)

这是过去一年 LLM Serving 最重要的范式转变。把 prefill(算力密集)和 decode(带宽密集)放到不同实例上独立扩缩:

请求流 ──► Prefill Pool (高算力 GPU)
              │  传 KV
              ▼
         Decode Pool (高带宽 GPU, 大 batch)

代表工作包括 DistServe、Splitwise、Mooncake 等。论文把它们抽象成统一的"阶段解耦 + KV 传输"框架,并指出 KV 传输开销是这个范式的关键瓶颈。

第 4 章:集群级优化

从单机视角拉到数据中心视角,作者把它分成三块:

  • 4.1 部署策略:异构 GPU 池化、spot instance 利用、模型副本编排。
  • 4.2 多实例负载均衡:当一个模型有 N 个副本时,如何把新请求路由到最合适的副本(LLM-aware load balancing),避免出现"长请求撞长请求"的队头阻塞。
  • 4.3 云上弹性:突发流量、跨可用区、冷启动优化。这部分面向工业落地,论文引用了大量来自生产环境的方案。

第 5 章:新兴场景

这一章是综述里信息密度最高的部分,因为它把"通用推理优化"和"具体 LLM 用法"对接起来:

  • 5.1 长上下文:prefix cache、稀疏 attention、ring attention。
  • 5.2 RAG:把 retrieval 当作一类特殊的"上下文装配",涉及 chunk 调度、向量检索的 SLO 设计。
  • 5.3 MoE:expert 路由的负载不均问题、expert 并行。
  • 5.4 LoRA:多租户 LoRA 热切换、基座权重共享。
  • 5.5 投机解码:用一个 draft model 提前生成候选 token,主模型并行验证。
  • 5.6 增强型 LLM(Augmented LLMs):工具调用、RAG、Agent 多步推理——每一步的延迟分布不同于单轮生成。
  • 5.7 Test-Time Reasoning:CoT、ToT、self-consistency 等会显著拉长输出长度,与 3.3 的长度预测和 3.5 的解耦架构形成新的耦合点。

第 6 章:杂项但关键

论文把容易被忽略但工程上绕不开的子领域也单独成节:硬件适配、隐私推理、模拟器、公平性、能耗。这一章的存在本身就是综述价值的一部分——很多团队踩的坑,往往不在算法层,而在这里。

关键实验 / 评估视角

综述本身不做新实验,但给出了 §2.1 一张权威的"LLM 推理服务评估指标"表,把业界口径统一了一次:

指标 定义 关注点
TTFT 输入到首个 token 的延迟 实时应用
TBT 相邻 token 间隔 逐步响应感
TPOT decode 阶段平均每 token 时间 生成效率
Throughput 全局每秒 token 数 高负载容量
Capacity 满足 SLO 下的最大吞吐 系统上限
Normalized Latency 总时长 / token 数 整体效率
Percentile P50 / P90 / P99 延迟 稳定性

论文反复强调:吞吐与 P99 延迟常常此消彼长,单纯报 tokens/s 是不够的。

亮点与局限

亮点

  • 结构清晰:四级分类把碎片化的方法论摆成可学习的骨架,特别适合新人快速建立 mental model。
  • 时效性强:截至 v1(2025-04-28)已经覆盖解耦推理、PaCoRe、Speculative Decoding 等 2024-2025 的最新进展。
  • 连接产业:作者来自苏州大学 + 华为云,工程视角与学术视角并存。
  • 配套资源:作者维护了一个 Awesome-LLM-Inference-Serving 仓库(论文脚注里给出),可以当成活的参考书目。

局限

  • 仍标注 work in progress:v1 仅 11 页正文 + 7 张图,正文是引导式导读,许多子方向(如 fairness、energy)只是简要提及。
  • 理论深度有限:分类法强,但缺乏统一的数学模型把不同子方向纳入同一个优化框架。
  • 基线对比缺失:综述不报自己的实验,因此读者无法直接判断哪个优化组合是"性价比最高"的工程推荐。
  • 代码与可复现性:除了那个 awesome list,论文没有附带统一 benchmark,部分结论依赖二级引用。

对工程落地的启发

  • 不要只压 throughput:把 P99 / TTFT / TPOT 同时盯住,是 2025 年推理服务的入场券。
  • 先看调度,再看模型:作者把 request scheduling 放在 KV cache 之前,是有深意的。一个简单的 SJF + prefill/decode 解耦,往往比换底层 attention 实现收益更高。
  • KV cache 是新瓶颈:当模型规模、batch 大小、序列长度三者同时增长时,KV cache 显存增长是 O(L × batch × hidden),比权重增长更激进。
  • RAG / Agent 改变了 SLO 形状:单轮推理的 SLO 是"一次响应多快",多步 Agent 的 SLO 是"整条链路多稳"——这要求 serving 平台提供 trace 级别的可观测性,而不是单请求级别的。
  • test-time compute 与 serving 的耦合:模型思考得越久,serving 平台要越懂得"提前估长度 + 解耦 + KV 共享",否则成本失控。

与同方向工作的关系

  • 与 Miao et al. 2023 / Yuan et al. 2024 / Zhou et al. 2024 等综述相比,本文最大的差异化是新增了 2024 下半年到 2025 上半年的解耦推理、speculative decoding、test-time reasoning 服务化等议题
  • 与 vLLM / SGLang / TensorRT-LLM / Mooncake 等系统工作相比,本文是它们的"上位学科分类"——这些系统各自优化一两个子方向,论文把它们连起来。
  • 与 DistServe / Splitwise / Mooncake 等解耦推理原始论文相比,本文把它们抽象为统一的"disaggregation paradigm",并指出 KV 传输瓶颈这一共性问题。

适合谁读

  • LLM 平台 / 推理引擎工程师:把零散的优化点整理成体系,避免重复造轮子。
  • 算法研究员:了解自己提的新方法会被怎样部署、SLO 受哪些约束。
  • AI Infra 团队 Leader:作为内部技术地图,做技术选型时的索引。
  • Agent / RAG 方向的产品 / 架构师:理解为什么 serving 平台最近变化这么快,以及这些变化如何影响 RAG / Agent 产品的成本曲线。
  • 不太适合:纯学术 NLP / CV 研究者(除非要转方向),以及只想找一个具体 SOTA 算法的人——综述不替你做选型。

一句话回顾

Taming the Titans 不是在驯服模型,而是在驯服"模型 + GPU + 请求流 + SLO"这套耦合系统。它最大的价值,是让分散在各系统、各论文、各会议里的优化手段,第一次有了同一张地图。

工程落地与核查(Jay)

事实核查

核查项 结论 存疑
作者机构 苏州大学 + 华为云联合——论文 header 自述一致 ⚠️ 华为云具体部门/产品线未披露,影响"产业实践"引用可信度判断
v1 时间戳 2025-04-28,与 arXiv 元数据一致 v1 后是否有更新版本(v2/v3)未确认
11 页正文 + 7 图 论文自身标注,属实 ⚠️ 11 页对综述体量而言极薄;大量子方向是蜻蜓点水
vLLM / SGLang / TensorRT-LLM / Mooncake 引用 代表性系统均属实,SGLang 2024 发布、vLLM 2023 起成熟 具体版本号未指定;各系统在快速迭代,不存在稳定"快照"
SJF 调度反直觉示例 原文 R1=10 tokens / R2=2 tokens 数值自洽,但"1 token/s"解码速度是假设场景,非实测数据 实际系统 decode 速度与 batch size、model size、KV cache 状态强相关,示例仅作概念演示
评估指标表(TTFT/TBT/TPOT) 业界通用口径,与 vLLM 文档 / NVIDIA Triton 口径一致 无问题
Awesome-LLM-Inference-Serving 仓库 脚注提及但未给 URL;无法直接验证内容质量与更新频率 ⚠️ GitHub 搜索"awesome-llm-inference-serving"有多个同名 repo,建议确认原始来源

工程落地路径

1. 用四级分类法做技术选型决策树

你的瓶颈在哪?
│
├─ 单请求延迟高(TTFT 大)
│   ├─ prefill 慢 → 实例级:TP/PP 切分(3.1)+ 解耦(3.5)
│   └─ decode 慢 → KV cache 管理(3.4)+ 调度(3.2)
│
├─ 吞吐低(throughput 小)
│   ├─ batch 跑不起来 → 请求调度(3.2)+ 解码长度预测(3.3)
│   └─ GPU 利用率低 → prefill/decode 解耦(3.5)+ 集群负载均衡(4.2)
│
├─ P99 延迟不稳
│   └─ 队头阻塞 → SJF 调度(3.2)+ 多副本负载均衡(4.2)+ KV cache 分配(3.4)
│
└─ 特定场景(长上下文 / RAG / Agent)
    └─ 第 5 章对应场景节 + 解码长度预测(3.3)+ 解耦(3.5)

2. 实际系统落地检查清单

检查项 推荐工具 / 方法 优先级
TTFT / TBT / TPOT 可观测 vLLM metrics + Prometheus + Grafana;Datadog LLM 监控 P0
调度策略选择 vLLM 内置 SJF 变体;SGLang scheduler P0
KV cache 显存管理 vLLM PagedAttention(生产成熟);SGLang RadixAttention P0
Prefill/Decode 解耦 Mooncake(字节跳动生产级);DistServe(学术参考) P1
投机解码 vLLM 集成 HuggingFace speculative decoding;TensorRT-LLM speculative draft P1
多实例负载均衡 层级路由:前路由(Nginx/HAProxy)+ LLM-aware 后路由(避免长请求撞长请求) P1
RAG 场景 SLO 设计 chunk 级别 trace + retrieval latency SLO 独立监控 P2
LoRA 多租户 LoRA Land(天下布妹)/ PEFT 多租户切换 P2

3. 避坑指南(来自综述 6 章"杂项但关键")

表现 解法
只盯 throughput 忽视 P99 benchmarks 报 tokens/s 很好看,但线上 P99 延迟爆炸 上线前必须跑 percentile 指标;throughput 是在 SLO 约束下才有意义
KV cache 显存估算错误 以为 80GB H100 能跑 70B 模型,实际上 KV cache 在长序列下把显存吃光 用 vLLM 的 vllm estimate-memory 工具或 SGLang Profiler;实测 > 理论估算
Prefill/Decode 混布拖垮 把 prefill 和 decode 放同一 GPU 混跑,两个阶段互相干扰 有条件就解耦;无条件时用 vLLM 的 chunked prefill 缓解
投机解码用错 draft 模型 draft 和 target 模型差距太大,accept rate 低 accept rate < 0.5 时换 draft 或关掉 speculative decoding;实测决定
忽视冷启动延迟 Spot instance 被回收后新实例冷启动要 5-10min,SLO 违约 用 warm pool(常驻 minimal replicas)+ 增量 checkpoint
长上下文服务化低估 KV 开销 200K 上下文 + large batch → KV cache OOM 上下文长度与 batch size 联合 budget;超长上下文走独立服务

4. 综述未深入但工程必须解决的问题

  • 跨语言模型部署:Llama.cpp / llama.rs 在 CPU/inference 边缘端场景的适用性(综述未覆盖边缘推理)。
  • 多租户隔离:不同租户的 LoRA adapter 如何在 GPU 显存层面做隔离,,防止某一租户 KV cache 被另一租户触发的 eviction 污染(综述未展开)。
  • 故障恢复:单个请求级别的 checkpoint / KV cache 持久化;故障后 stream 恢复而非让用户重新输入(综述未涉及)。
  • 成本核算:prefill/decode 解耦后跨 AZ 流量成本是否值得(华为云背景的论文可能有意回避这个问题)。

5. Awesome 仓库验证

⚠️ 脚注提及维护了 awesome 仓库但未给 URL;GitHub 搜索"awesome-llm-inference-serving"存在多个版本,star 数参差不齐。建议优先参考 paperswithcode / arxiv-sanity 的同类主题列表,或直接用本综述的引用文献作为 primary source。

⚠️ 本节为工程合理推断与系统化整理;综述 v1 仅 11 页正文,大量子方向(如 fairness、energy、隐私推理)仅名称提及,未深入展开工程细节。