home/tutorial/15 篇论文

15 篇论文导读 · 两圈阅读顺序

第一圈 10 篇打地基 + 第二圈 5 篇追前沿。每篇 1-2 小时,读法:找出"问题—方法—代码对应"三段。

AI infra 这条线,读完第一圈 10 篇 ≈ 拿到 80% 的工程语言,能当 framework 去快速吸收新论文; 第二圈 5 篇把这两年最热的方向(投机解码、PD 分离、量化)补上。 顺序经过设计:每一篇都引出下一篇要回答的新问题——下面的 坐标系关系图和几个可交互的小实验(online softmax、投机解码加速比)就是帮你把这张网看清。

💡 怎么读 infra 论文 · 90 分钟法
不要从摘要读到引用。AI infra 论文几乎统一是这个结构:
  1. Intro 最后一段 → 拿走 contribution 列表(看作者觉得自己解了啥)
  2. Motivation / Background → 拿走"现状什么不好",一定有 figure 1 量化它
  3. Design 主体 → 找第一张系统图,看懂它
  4. Implementation → 略读,知道用了什么技术栈就行
  5. Evaluation 第一张图 → 拿走"性能提升幅度"
  6. Related work跳过,等你自己做研究时再回看
  7. Discussion / Limitations → 必读!这是作者自己承认的边界
全程不超过 90 分钟。写 200 字三段笔记:问题 / 方法 / 跟 vLLM 哪行代码对应。

00先建坐标系:4 条优化轴

下面这些论文乍看很散——有的讲内存,有的讲调度,有的写 CUDA。 但它们其实都在攻同一台机器上的 4 个瓶颈之一。先把这张坐标系装进脑子, 之后每读一篇,第一件事就是问:"它在动哪条轴?" 这是把孤立论文连成知识网的关键。

瓶颈是什么典型手段本页对应论文
显存 capacityKV cache / 权重 / adapter 把 HBM 撑爆,能并发的请求数被显存卡住分页、共享前缀、丢 token、量化PagedAttention · RadixAttention · H2O · S-LoRA · 量化
调度 latency请求长短不齐、prefill 与 decode 互相拖累,throughput↔latency 拉扯iteration-level batching、chunked prefill、PD 分离Orca · Sarathi-Serve · PD-disaggregation
算力 kernelGPU 跑不满——要么 memory-bound 卡在 HBM 带宽,要么 kernel launch / 图开销大IO-aware kernel、算子融合、编译、投机解码FlashAttention(1/2/3) · torch.compile · Speculative Decoding
并行 scale-out单卡装不下 / 算不动,要跨卡甚至跨机,通信成新瓶颈TP / PP / 数据与状态分片、PD 跨节点ZeRO · Megatron-LM · (PD-disaggregation)
📐 一组反复出现的指标 · 先记住
  • TTFT(Time To First Token)= prefill 时延。主要由 算力 + 调度 决定。
  • ITL / TPOT(Inter-Token Latency / Time Per Output Token)= decode 每步时延。decode 是 memory-bound,由 KV cache 大小 + 带宽决定。
  • Throughput = 单位时间出的总 token 数。跟 batch 大小强相关,受 显存 容量上限约束。
  • arithmetic intensity(算术强度)= FLOPs / 字节。低 = memory-bound(如 decode、朴素 attention),高 = compute-bound。判断一篇 kernel 论文省的是 FLOPs 还是带宽,就看它动的是分子还是分母。
这几个词在 vLLM issue、论文 evaluation、面试里天天出现。看不懂指标,就读不懂"提升了多少"。

论文关系图 · 每一篇引出下一篇

顺序不是随机的:解决一个瓶颈,会把下一个瓶颈顶到台面上。 hover 节点看它"逼出了谁",点节点跳到对应导读。点上方色块可按轴筛选。

论文导航盘 hover = 看引出关系 · 点击 = 跳转
实线箭头 = "前者解决后暴露的新问题,由后者回答"。虚线 = 同一思路的工程迭代 / 复用。
阅读进度 · 自动保存到本机 0 / 0

01必读 7 篇 · 按月对齐

① PagedAttention (vLLM) · SOSP 2023 M2 显存

Kwon et al. · "Efficient Memory Management for Large Language Model Serving with PagedAttention"
arxiv.org/abs/2309.06180 · github.com/vllm-project/vllm

三段摘要

关键图

看完读的代码

追问

  1. block size 为什么是 16?(论文 §6.4,回看 M2 §5.3)
  2. 为什么 prefill 通常不用 PagedAttention kernel?
  3. swap-out 比 recompute 在哪些 workload 下更优?(论文 §5.4)

② Orca · OSDI 2022 M3 调度

Yu et al. · "Orca: A Distributed Serving System for Transformer-Based Generative Models"
usenix.org/conference/osdi22

三段摘要

关键图

看完读的代码

追问

  1. Orca 的 selective batching 跟 Sarathi-Serve 的 chunked prefill 解的是同一个问题吗?哪个更通用?
  2. iteration-level scheduling 的代价是什么?(每 step 都要 reschedule + 重组 batch tensor)

③ Sarathi-Serve · OSDI 2024 M3 调度

Agrawal et al. · "Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve"
arxiv.org/abs/2403.02310

三段摘要

关键图

看完读的代码

追问

  1. chunk size 怎么选?跟 token budget 是什么关系?
  2. chunked prefill 啥时候该开?(很短 prompt 的 workload;chunk 太多 overhead 反而升)

④ SGLang / RadixAttention · NeurIPS 2024 M2 显存

Zheng et al. · "SGLang: Efficient Execution of Structured Language Model Programs"
arxiv.org/abs/2312.07104

三段摘要

关键图

看完读的代码

追问

  1. RadixAttention 对 system-prompt-only 共享场景有优势吗?(几乎没有;vLLM 的整块命中已经够)
  2. Radix tree 的 lookup 开销是 O(树深),会成为瓶颈吗?(实测一般不会,因为同 prefix 的请求会聚集)
  3. vLLM 社区有人在做 RadixAttention 风格的改进吗?(搜 issue tracker)

⑤ FlashAttention (v1) · NeurIPS 2022 M4 算力

Dao et al. · "FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness"
arxiv.org/abs/2205.14135

三段摘要

关键图

交互online softmax · 为什么 attention 能分块

朴素 softmax 要先扫一遍拿到全局 maxΣexp,所以必须把整行 N 个分数都拿在手里——这正是 N×N 矩阵落 HBM 的根源。 FlashAttention 的 trick:维护「running max m」「running 分母 ℓ」「running 输出 o」,每来一块就用一个缩放因子 e^(m_old−m_new) 把旧结果校正一下,于是分数永远只需在 SRAM 里放一小块。 一步步走完,结果跟一次性算的 softmax 数值一致

下面是一行 6 个 attention 分数,切成 3 块(每块 2 个),每块带一个标量 value。点「下一块」喂入一块,看 m / ℓ / o 怎么增量更新。

running max m
running 分母 ℓ
running 输出 o = (Σ p·v)/ℓ
点「下一块」开始。

看完读的代码

追问

  1. FlashAttention 不省 FLOPs,省什么?
  2. v1 → v2 主要改了什么?(work partitioning,把 head 维度的归约放到 outer loop)
  3. v3 加了什么 Hopper 特性?(TMA + WGMMA + 异步)

⑥ H2O · NeurIPS 2023 M2/M3 之间 显存

Zhang et al. · "H2O: Heavy-Hitter Oracle for Efficient Generative Inference of Large Language Models"
arxiv.org/abs/2306.14048

三段摘要

OS 对照

这其实是 working set theory + LRU 的现代版。OS 上 "working set" 指进程实际用到的页面集合;H2O 上 "heavy hitter" 指 attention 实际关注的 token。eviction 决策从"最少用"变成"最低 attention score"。

追问

  1. vLLM 当前 evict 策略是 H2O 风格吗?(不是,vLLM 用整块 LRU。H2O 思想在 SnapKV、StreamingLLM 等论文里更接近)
  2. "丢 KV"会损失什么?什么 workload 不能用?(需要长期记忆的任务,如代码、长文档 QA)

⑦ S-LoRA · MLSys 2024 M5+ 显存

Sheng et al. · "S-LoRA: Serving Thousands of Concurrent LoRA Adapters"
arxiv.org/abs/2311.03285

三段摘要

OS 对照

多租户隔离 + 资源共享。OS 的 namespace / cgroup 让不同租户用同一份内核;S-LoRA 让不同 adapter 用同一份 base model。

看完读的代码

02选读 3 篇 · 看兴趣选支

⑧ ZeRO · SC 2020 训练向 并行

Rajbhandari et al. · "ZeRO: Memory Optimizations Toward Training Trillion Parameter Models"
arxiv.org/abs/1910.02054

⑨ Megatron-LM (TP/PP) · 系列论文 训练向 并行

⑩ torch.compile / Inductor · ASPLOS 2024 编译器向 算力

Ansel et al. · "PyTorch 2: Faster Machine Learning Through Dynamic Python Bytecode Transformation and Graph Compilation"
pytorch.org/assets/pytorch2-2.pdf

03第二圈 · 2023–2025 前沿(再读 5 篇)

上面 10 篇是地基。但 serving 这两年最热的几个方向,地基里只埋了伏笔没展开。 走完第一圈、能用 4 条轴给论文归类之后,再来读这 5 篇——你会发现它们每一篇都精确地站在前面某篇的"追问"上。这就是螺旋上升的第二圈。

读这一圈之前,先自问
decode 阶段 GPU 算力其实大量闲置(memory-bound,卡在搬 KV 而不是算),为什么? 如果一次 forward 的成本主要花在"把权重和 KV 从 HBM 搬进来",那顺带多算几个 token 几乎不要钱——这句话能引出下面整整两篇。

⑪ Speculative Decoding · ICML 2023 M3/M4 算力

Leviathan et al. · "Fast Inference from Transformers via Speculative Decoding"(Google)· 同期 DeepMind 有等价的 "Accelerating LLM Decoding with Speculative Sampling"
arxiv.org/abs/2211.17192

三段摘要

关键直觉

交互投机解码加速比 · 拉一拉看拐点
0.70
4
0.15
每次 target forward 平均出几个 token
E = (1−αγ+1)/(1−α)
实际加速比
E ÷ (1 + γ·c)

看完读的代码

追问

  1. 为什么接受采样能保证"分布无损"?(提示:modified rejection sampling,对 draft 概率高估的部分按比例回退)
  2. 什么 workload 下投机解码反而变慢?(α 低 + γ 大 + draft 不便宜——拉上面的算盘到 α=0.4、γ=8 试试)
  3. EAGLE / Medusa 跟原始投机解码差在哪?(draft 不再是独立小模型,而是复用 target 的隐藏态做轻量预测头)

⑫ Prefill–Decode 分离 · OSDI 2024 等 M3 调度 并行

DistServe(Zhong et al., OSDI 2024)· Splitwise(ISCA 2024)· Mooncake(Moonshot/Kimi, FAST 2025)
DistServe arxiv.org/abs/2401.09670 · Mooncake arxiv.org/abs/2407.00079

三段摘要

OS / 系统对照

这是把"一个进程干所有活"拆成专用流水线阶段 + 阶段间显式传递中间态——很像 OS 里把通用 CPU 路径拆成 DMA 引擎 / 专用协处理器,再用共享内存或总线传数据。瓶颈也随之从"计算"挪到"KV cache 怎么搬得快、放得下"。

看完读的代码 / 实战

追问

  1. KV cache 跨节点传输的开销,什么时候会吃掉分离带来的收益?(短 prompt / 小模型时)
  2. 分离架构下,PagedAttention 的 block 还需要吗?(需要——但现在还多了一层"跨节点的块迁移")
  3. 跟 Sarathi 的 chunked prefill 是替代还是互补?(互补:一个管"合跑时怎么调和",一个管"该不该合跑")

⑬ 量化:AWQ / SmoothQuant / FP8 / KV 量化 M2/M4 显存 算力

SmoothQuant(Xiao et al., ICML 2023)· AWQ(Lin et al., MLSys 2024 best paper)· KIVI(KV cache 量化, 2024)
AWQ arxiv.org/abs/2306.00978 · SmoothQuant arxiv.org/abs/2211.10438

三段摘要

关键直觉

看完读的代码

追问

  1. 为什么 KV cache 量化里 key 和 value 用不同的量化粒度?(提示:outlier 在 key 上沿通道分布)
  2. W4A16 在 prefill(compute-bound)阶段还省时间吗?(不一定——反量化开销可能吃掉收益)
  3. 量化和投机解码能叠加吗?draft 模型用量化是不是天作之合?

⑭ FlashAttention-2 / 3 M4 算力

Dao, "FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning"(2023)· Shah et al., "FlashAttention-3"(NeurIPS 2024,Hopper 专用)
FA2 arxiv.org/abs/2307.08691 · FA3 arxiv.org/abs/2407.08608

原页把 v2/v3 塞进了 FlashAttention 的"追问",但它们其实是读懂现代 GPU 编程的钥匙,值得单列:

追问

  1. v2 为什么把并行维度从 batch×head 扩到 sequence?(长序列、小 batch 时 SM 喂不满)
  2. TMA 解决了 v2 的什么痛点?(搬数据和算 overlap 不起来,SM 等数据)

⑮ 看兴趣加餐 · 两条岔路 选读

✓ 第二圈读完,你应该能回答
给定一个 workload(比如"长 prompt、短输出、高并发"或"短 prompt、长输出、低延迟"),你能说出该上这 15 篇里的哪几招、为什么、按什么顺序——这就是 serving 工程师的核心判断力。下一节直接来测。

04面试速测 · 主动回忆

页面里反复说"面试高频考点"。光看不算会——先在心里(或纸上)答完,再点开对答案。答不上来的,回对应论文重读。

Q1 · 一句话讲清 PagedAttention 解决了什么、用了什么 OS 概念
朴素 KV cache 给每请求预分配连续 max_len 段 → 内/外碎片 + 无法共享,显存利用率仅 20–40%。PagedAttention 借虚拟内存分页:固定大小 block + block table 间接寻址,按需分配、前缀可共享(COW-like),利用率拉到 ~96%,吞吐 2–4×。对应 OS 的页表,prefix caching 对应 page cache / COW
Q2 · FlashAttention 省的是 FLOPs 还是带宽?为什么能分块?
带宽(HBM 流量从 O(N²) 降到 O(N·d)),FLOPs 不减反略增。能分块是因为 online softmax:维护 running max / running 分母,每来一块用 e^(m_old−m_new) 校正旧的部分和,于是 N×N 矩阵永不落 HBM。结果与一次性 softmax 数值一致(见上面的交互)。
Q3 · Orca 的 iteration-level scheduling 和 Sarathi 的 chunked prefill,各解决什么?
Orca:static batching 里短请求要等长请求,浪费大 → 每个 token step 重新组 batch(continuous batching),出一个进一个。Sarathi:continuous batching 里 prefill 一旦混进 decode batch,会把那一步的延迟拉爆 → 把长 prompt 的 prefill 切 chunk,跟若干 decode 拼成计算量稳定的 step,稳住 ITL。前者管"何时进出 batch",后者管"prefill 怎么不拖累 decode"。
Q4 · decode 为什么是 memory-bound?这把哪两篇前沿论文"逼"了出来?
decode 一步只算 1 个 token,但要把整个模型权重 + 全部 KV 从 HBM 搬一遍——计算量极小、搬运量极大,算术强度低 → 卡在带宽。由此引出:投机解码(用闲置算力一次验证多个 token,把多次小 forward 压成少数大 forward)和量化(直接减少要搬的字节数)。
Q5 · 为什么要把 prefill 和 decode 拆到不同 GPU?代价是什么?
prefill compute-bound、decode memory-bound,合跑互相拖累,且 TTFT/ITL 双 SLO 本质冲突。拆开后各自独立优化并行度与扩缩容,goodput 更高(DistServe/Splitwise/Mooncake)。代价:KV cache 要跨节点传输(NVLink/RDMA),短 prompt / 小模型时传输开销可能吃掉收益。
Q6 · block size 为什么常取 16?太大太小各有什么问题?
太小 → block table 项变多、元数据 + 间接寻址开销升、kernel 里 gather 更碎。太大 → 回到内部碎片(一个 block 没填满就浪费)、前缀共享粒度变粗。论文 §6.4 消融:4–32 几乎持平,64+ 掉。16 是吞吐与碎片的折中。
Q7 · 给你"长 prompt、短输出、超高并发"的 workload,你会上哪几招?
瓶颈在 prefill 算力 + 高并发的显存。优先:chunked prefill(稳住延迟)、prefix caching / RadixAttention(长 prompt 多半共享系统提示)、PD 分离(prefill 池专吃算力)、FP8/量化 提 prefill 算力与容量。投机解码收益小(输出短)。这种"按轴开药方"的能力就是面试想考的判断力。

05论文笔记模板

每篇读完,在 ~/infra/papers/ 建一个 .md 文件,固定 4 段:

# <论文名> · <会议> · <读完日期>

## 问题 (50 字)
现状是什么;现状不好在哪。最好一个具体数字("X% 浪费" / "Y× 慢")。

## 方法 (100 字)
核心 idea 一句话;最关键的 mechanism (机制) 一段。
画一张超简单的草图(手绘扫描或 ascii art)。

## 对账 (50 字)
跟 vLLM 哪行代码 / 哪个模块对得上?
找不到也写"对应模块是 X,但 vLLM 还没实现这个"。

## 我学到了 (100 字 可选)
反直觉点、巧妙工程、可以借用到 mini-vLLM 的地方。
对未来要不要深入这个方向的判断。
✓ 论文阅读量目标
6 个月走完,你应该有 ~15-20 篇论文笔记(这页的 10 篇地基 + 5 篇前沿 + 你自己 follow 的)。 这是 senior infra 工程师的"概念资本"。面试时随手能援引 = 真的懂

06跟踪谁的 Twitter / arXiv / blog

4.1 必关注的人 (vLLM/serving 圈)

4.2 必关注的 blog

4.3 arXiv 关键分类

arxiv.org/list/cs.DC/recent 每周扫一次标题。看到带 "LLM" / "serving" / "inference" / "KV" / "attention" / "speculative" / "disaggregat" / "quantization" / "MoE" 的,标个星,周末批量读。

07会议时间表

infra 论文集中在这几个会议,知道时间能预判什么时候关注什么:

会议关注度截稿月论文出炉
OSDI (USENIX OS)顶级5月/12月7月/4月
SOSP (ACM OS)顶级,偶年5月10月
NSDI (网络系统)顶级9月4月
MLSys核心10月5月
ASPLOS核心 (编译器/系统/架构)滚动4月/10月
NeurIPS / ICLR / ICML偶有 infra 论文 (在 system track)各月各月
EuroSys欧洲 OS / 系统10月4月

读 paper 的实战:OSDI / SOSP / MLSys 出新 issue 时去翻 program,标几个跟你方向相关的,加进 papers/ todo。

08读论文的反原则