最新的大模型推理加速技术的学习路线是什么?

如果把大模型推理想成一家"无限续杯"的奶茶店:Prefill 是点单+做糖度(一次性但很重)Decode 是一杯一杯出货(很碎但要不停)。你要做的不是"把奶茶师傅骂得更快",而是把整条链路里真正拖后腿的那段揪出来:是前台收银慢(CPU/调度)?是后厨搬货慢(HBM/KV cache)?还是出杯流程太串行(decoding)?

本路线图的核心打法:先证据链(Profiling)→ 再换发动机(Runtime)→ 再修水电煤(Attention/KV)→ 再做减肥(Quant)→ 再改排队规则(Decoding)→ 最后做店面分区(Prefill/Decode 解耦) 。每部分都配一句 insight,一个信息流示意图(便于理解),并且按 基础 / 进阶 / 高级 (BASIC / INTER / ADV) 三个层次展开,便于系统学习。同时,为了检验是否理解,给出验收标准 。其中,主要内容(内容中的配图是为了快速浏览,篇幅有限并未详细解释,只为产生感性认识。 )的选择标准是最新并且尽量"经典"的内容。部分内容需要在不同维度进行解读(并不是重复)!

资料分类mark : [P] Paper  [T] Tutorial/Doc  [C] Code/Repo  [B] Benchmark  [S] System/Stack

一屏总览:

S0 从"测"到"拆"的 7 站路线S0 先测:指标/Profiling → 证据链
S1 选栈:vLLM / SGLang / TRT-LLM → 运行时决定上限
S2 攻坚:Attention/KV cache → 解决"搬不动"
S3 量化:W8A8 / INT4 / KV-Quant → 用比特换带宽/显存
S4 解码:Speculative / Medusa / EAGLE-2 / BlockVerify → 少串行
S5 架构:Prefill/Decode 解耦(DistServe/Splitwise/TaiChi)→ 去互扰
S6 回归:GenAI-Perf / MLPerf → 没有回归就没有优化

S0:Profiling 与指标("抓现行")

一句 insight:你优化的不是"token/s",而是TTFT(第一口)+ TPOT(续杯速度)+ tail latency(最难伺候的那 5% 用户)GenAI-Perf 这类工具把口径直接打包好了。

信息流示意图(S0)

复制代码
请求 → tokenize → prefill(大矩阵) → decode(循环) → sampling/输出
      |             |                |
      v             v                v
   TTFT相关     GPU算子/带宽       TPOT/尾延迟
      \______________  Profiling  ______________/
                 nsys(系统级) + ncu(kernel级)

BASIC

  • [T] (BASIC) torch.profiler:PyTorch 官方剖析,定位算子、shape、trace 的起点。
  • [T] (BASIC) Nsight Systems User Guide:看 CPU→GPU 提交、Memcpy、并发,判断"是不是 host 在拖后腿"。

INTER

  • [T] (INTER) GenAI-Perf:直接给出 TTFT / TPOT / token throughput 等 LLM 关键指标,适合做压测回归。

ADV

验收标准 checklist

  • 能同时报告:QPS、TTFT、TPOT、token/s、P50/P95(至少 5 个指标)。
  • 能用 nsys 说明:瓶颈在 host、PCIe/NVLink、kernel、mem 哪一层。
  • 能用 ncu 说清:关键 kernel 的 memory bound vs compute bound
  • 能写出一份"一页纸"性能报告模板。
  • 能给出优化优先级排序(不是"我觉得",是"证据链")。

S1:Serving Runtime("发动机"选型)

一句 insight:运行时的差异很多不在"算得更快",而在KV 管理、调度、continuous batching这些"像操作系统"的能力;例如 vLLM 的 PagedAttention 把 KV cache 做到近似"零碎片"的系统化管理。

信息流示意图(S1)

复制代码
用户请求流
  ↓
[Scheduler/Batcher] ------ 决定并发与排队策略
  ↓
[KV Cache Manager] ------ 决定显存占用/碎片/复用
  ↓
[Kernel Backend] ------ FlashAttention/FlashInfer/TRT 等决定单步效率
  ↓
输出指标:TTFT/TPOT/吞吐/稳定性

推理框架的差别,很多时候不在"算得快",而在"缓存、调度、批处理"这些"脏活累活"谁做得更像操作系统。

BASIC

  • [P] (BASIC) vLLM / PagedAttention:把 KV cache 当"虚拟内存分页"来管,显著降低碎片与浪费。
  • [C] (BASIC) vLLM repo:连续 batching、paged KV、speculative、chunked prefill 等实战特性全集。
  • [T] (BASIC) vLLM 官方博客(PagedAttention 入门):用最少背景理解"为什么吞吐能起来"。

INTER

  • [P] (INTER) SGLang:前端语言 + 运行时,靠 RadixAttention(KV 复用)cFSM(结构化输出加速) 提升吞吐。
  • [C] (INTER) SGLang repo:把"复杂 agent/多次生成/JSON 输出"从工程灾难变成可控系统。
  • [T] (INTER) SGLang 文档站:把 runtime 能力、部署方式、特性讲清楚。

ADV

  • [C] (ADV) TensorRT-LLM:NVIDIA 官方"重装机甲",含 paged KV、inflight batching、量化、speculative 等。

验收标准 checklist

  • 能用同一模型在 vLLM 与 SGLang 跑出可对比的 TTFT/TPOT。
  • 能解释:continuous batching 与传统 batching 的差异与收益点。
  • 能说清楚:KV cache 的生命周期、碎片问题、以及框架如何缓解(PagedAttention/RadixAttention)。
  • 能把推理链路拆成:tokenize→prefill→decode→sampling→postprocess(并标出每段耗时)。
  • 能给出"选型建议":低延迟、长上下文、多并发、结构化输出,各用哪个栈更合理。

S2:Attention & KV Cache("水电煤")

一句 insight:很多 decode 不是"算不动",而是"搬不动",KV cache 的读写把你卡在带宽上;FlashAttention-3/FlashInfer 这类工作本质是在把 attention 这段"搬砖流水线"改造成更少停顿、更高利用率。

信息流示意图(S2)

复制代码
每步 decode:
token → Q
历史 → K,V (KV cache 读取)  ←------ 真正的大头:带宽/布局/碎片
        ↓
   Attention(Q,K,V)  (FlashAttention-3 / FlashInfer 等优化这里) 
        ↓
   写回新的 K,V 到 KV cache

BASIC

INTER

  • [P] (INTER) FlashInfer:可定制 attention engine + 调度,面向 serving 的"可组合格式/异构 KV 存储"。

ADV

验收标准 checklist

  • 能解释 attention 推理时的主要数据流:Q/K/V、KV cache、softmax、写回
  • 能在长上下文场景下,复现实测:FlashAttention/FlashInfer 带来的收益(至少一个指标提升)。
  • 能用"带宽/算力"两句话说明:为什么 decode 往往更 memory-bound。
  • 能给出 KV cache 的显存占用公式,并据此估算 batch 上限。
  • 能提出 2 个"KV cache 相关"的优化动作,并说明副作用(精度/延迟/工程复杂度)。

S3:Quantization("减肥,但别减成贫血")

一句 insight:量化是把瓶颈从"HBM/带宽/显存"搬到"算子实现/数值误差";典型路线是 SmoothQuant(W8A8)、AWQ/GPTQ(weight-only INT4/INT3),以及更激进的 KV cache 量化(KIVI)。

信息流示意图(S3)

复制代码
模型(权重/激活/KV) 
  ↓  选择目标:省显存?省带宽?提吞吐?
[W8A8: SmoothQuant] ------ 更通用、工程友好
[INT4 weight-only: AWQ/GPTQ] ------ 更省显存/带宽,但看kernel与batch
[KV Quant: KIVI] ------ 长上下文/大并发时更"对症"
  ↓
上线前必须:质量/稳定性 + 性能回归(TTFT/TPOT)

BASIC

  • [P] (BASIC) SmoothQuant(W8A8):把 activation outlier 难题"搬家"到 weights,工程可落地。
  • [P] (BASIC) GPTQ:经典 PTQ weight-only(3/4bit)路线,精度与速度的常用起点。
  • [P] (BASIC) AWQ:用 activation 分布找"关键权重通道",4-bit 更稳更硬件友好。

INTER

  • [C] (INTER) MARLIN 实现:工程上理解为什么"batch=1 很难快,但 batch=16~32 能接近理想"。

ADV

验收标准 checklist

  • 能区分并选择:W8A8 vs weight-only INT4(场景、代价、收益)。
  • 能在同模型上跑通:FP16 baseline 与 INT4(至少一种)并输出精度对比。
  • 能解释:为什么有时"更低 bit 反而更慢"(kernel/packing/带宽/并行度)。
  • 能给出"量化失败排查清单"(数值爆炸、输出退化、吞吐无提升)。
  • 能写出一个可复用的"量化评测脚本"(吞吐+延迟+简单质量指标)。

S4:Decoding("把串行改成少串行")

一句 insight :Speculative 的关键不是"猜",而是"猜一串、验证一串":Speculative Sampling 给了经典无偏加速框架;Medusa 用多头直接预测多 token;EAGLE-2 用动态 draft tree 更激进;Block Verification 在验证侧继续抠出 5--8% 的稳定增益。

信息流示意图(S4)

复制代码
Target模型(慢但准) : 负责验证
Draft/Heads(快但糙) : 负责批量提案

循环:
Draft 生成 token1..k  →  Target 一次性验证  →  接受前缀 →  继续
         |                         |
         v                         v
    提案越准/越快             验证越"成块"越省(Block Verification)

BASIC

  • [P] (BASIC) Speculative Sampling:经典 speculative decoding,2--2.5× 解码加速的起点。
  • [P] (BASIC) Medusa:不用外部 draft model,通过多 decoding heads 预测多 token,再并行验证。
  • [C] (BASIC) Medusa repo:快速复现"多头解码"的工程入口。

INTER

  • [P] (INTER) EAGLE-2:动态 draft tree,靠校准的置信度更激进地产生可接受 token。
  • [P] (INTER) Block Verification:把 token-level 验证升级为 block-level 联合验证,稳定榨出额外速度。
  • [C] (INTER) vLLM / TensorRT-LLM 对 speculative 的支持:关注"能不能在 serving 上稳定收益"。

ADV

  • [T] (ADV) SGLang的结构化输出加速(cFSM):很多场景不是"生成文本",而是"生成可解析结构"。
  • [T] (ADV) GenAI-Perf:把 speculative 的收益拆成 TTFT/TPOT/acceptance 等可对比指标。

验收标准 checklist

  • 能解释 speculative 的正确性保证(分布不变)与实现要点。
  • 能在同模型上跑出:baseline vs speculative 的 TPOT 改善,并说明 TTFT 变化。
  • 能给出"什么时候 speculative 不赚"的判断(任务、温度、draft 质量、batch)。
  • 能输出一个"acceptance length/ratio"的统计图或表。
  • 能提出 1 个"与量化/批处理/长上下文耦合"的风险点,并给规避策略。

S5:系统架构(Prefill/Decode 解耦:把"互相拖后腿"分手)

一句 insight: 把 prefill 与 decode 放一起做 batching,会造成强互扰与资源耦合;DistServe 从系统角度证明并实现了"拆开更好",Splitwise 把"提示处理/生成"分机器做成本与吞吐优化,而 TaiChi 则进一步给出"聚合与解耦统一、按 SLO 做 goodput 最优"的框架。这一块近两年非常关键:prefill-decode disaggregation 已经快速成为主流的"剧本"(尤其在大规模 serving)。

信息流示意图(S5)

复制代码
(传统聚合)
请求 → [同一组GPU] prefill + decode 交织 → 互扰、尾延迟上天

(解耦 / 混合)
请求 → Prefill GPU池(擅长大矩阵) → KV/状态转移 → Decode GPU池(擅长循环出token)
                         ↑
                    调度器按 SLO 做 goodput 优化(TaiChi 思路)

BASIC

  • [P] (BASIC) DistServe(OSDI'24):系统化论证并实现 prefill/decode 解耦,围绕 goodput 做调度。
  • [P] (BASIC) Splitwise(ISCA):用 phase splitting 设计同/异构集群,优化吞吐/成本/功耗。

INTER

  • [P] (INTER) TaiChi(2025):把 prefill-decode 的"聚合/解耦"统一起来,面向不同 SLO 组合做最优 goodput。
  • [T] (INTER) DistServe 公开视频课件:适合把论文落到"怎么配资源、怎么调度"的细节。
  • [T] (INTER) MLC microserving:把解耦、跨引擎编排做成"几行 Python 可表达"。

ADV

  • [P] (ADV) 从 "goodput" 视角重读 DistServe/TaiChi:把系统目标从 QPS 升级为"满足 SLO 的有效吞吐"。
  • [C] (ADV) SGLang / vLLM 的 kernel & runtime 生态:关注"解耦之后的 KV、batch、graph、kernel"如何协同。
  • [B] (ADV) 用真实 trace 做仿真/回放(参考 Splitwise/FlashInfer-Bench,Inference PerfVIDURMorphServeMooncake):你的系统最终要对抗真实分布。

验收标准 checklist

  • 能清楚定义并计算:TTFT SLO、TPOT SLO、goodput(满足 SLO 的吞吐)。
  • 能解释 prefill/decode 互扰来自哪里(batch/资源耦合/调度)。
  • 能给出一个简化的资源配置方案:prefill-heavy vs decode-heavy 的配比(并解释依据)。
  • 能复现一个"小规模解耦"实验(哪怕 2 机/2 卡),并报告 goodput 变化。
  • 能列出 3 个系统风险点(KV 迁移、网络、尾延迟、队列震荡)及缓解手段。

S6:Benchmark & 回归("没有回归,就没有优化")

一句 insight: 优化要能"上产线",核心是把 GenAI-Perf(TTFT/TPOT/吞吐)MLPerf Inference 这类权威口径纳入回归;MLCommons 也在持续迭代 Inference 结果与规则。

信息流示意图(S6)

复制代码
改动(量化/内核/调度/解耦)
  ↓
固定压测配置(模型/上下文/并发/温度)
  ↓
GenAI-Perf 输出 TTFT/TPOT/P50/P95/token吞吐
  ↓
对齐/参考 MLPerf 规则与结果(能比才有意义)
  ↓
上线门禁:回退就拦截

BASIC

  • [T] (BASIC) GenAI-Perf:LLM serving 指标一站式输出(TTFT/TPOT/token throughput)。

INTER

ADV

验收标准 checklist

  • 有一套固定的 benchmark 配置(模型、batch、context、并发、硬件)。
  • 每次改动都能输出同一张"指标对比表"(至少 TTFT/TPOT/token/s)。
  • 能把 1 次性能回退定位到具体 commit/配置/驱动变化。
  • 能解释"为什么 MLPerf/GenAI-Perf 的指标口径与你线上一致/不一致"。
  • 能写出"上线门禁":什么指标退化会阻止合并。

一页"选型决策树"(该先优化哪一刀)

复制代码
你现在最痛的是哪一个?
├─ TTFT 很大(第一口慢)
│  ├─ prompt 很长/上下文很长 → 优先:Prefill 优化/Chunked Prefill/更快的 GEMM/更强 prefill GPU
│  ├─ CPU/调度慢 → 优先:nsys 找 host bottleneck;换更成熟 runtime(vLLM/TRT-LLM)
│  └─ 频繁重复前缀 → 优先:prefix/KV 复用(运行时能力)
│
├─ TPOT 很大(续杯慢)
│  ├─ decode 明显 memory-bound → 优先:Attention/KV(FlashAttention-3/FlashInfer)+ KV cache 管理
│  ├─ token-by-token 串行顶死 → 优先:Speculative / Medusa / EAGLE-2 + Block Verification
│  └─ batch 太小吃不到量化收益 → 优先:continuous batching + 合理并发;必要时上 Marlin 类 INT4 kernel
│
├─ 显存爆了(batch 上不去/长上下文撑不住)
│  ├─ 先看 KV cache 占用 → 优先:PagedAttention + KV Quant(KIVI)
│  └─ 再看权重占用 → INT4 weight-only(AWQ/GPTQ) 或 W8A8(SmoothQuant)
│
└─ 尾延迟/P95 爆炸("最难伺候那 5%")
   ├─ prefill/decode 互扰明显 → 直接考虑解耦(DistServe/Splitwise 思路)
   └─ SLO 既要 TTFT 又要 TPOT → TaiChi 类"聚合+解耦统一"路线

相关推荐
西岸行者1 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意1 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码2 天前
嵌入式学习路线
学习
毛小茛2 天前
计算机系统概论——校验码
学习
babe小鑫2 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms2 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下2 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。2 天前
2026.2.25监控学习
学习
im_AMBER2 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J2 天前
从“Hello World“ 开始 C++
c语言·c++·学习