mini-infer系统实战-00-导读:从最小推理链路到 MoE Expert Parallel 的项目路线

阅读这篇后应获得什么

  • 看清这套文章不是“项目日记汇总”,而是一条围绕 LLM 推理系统演进组织出来的工程主线。
  • 知道应该先理解哪几类核心问题:KV Cache、调度、服务化、高级加速、多卡并行,以及 MoE Expert Parallel。
  • 明确它和站内 Transformer、vLLM、CUDA、GPU、LLM Serving 几条线分别是什么关系。

这个系列解决什么问题

一句话概括:从一个最小可运行的 HuggingFace 推理链路出发,逐步把 mini-infer 推进成一个覆盖缓存管理、连续批处理、服务化、高级加速、多卡扩展和 MoE 原型验证的推理系统实践闭环。

它和很多“讲概念”的推理文章不同,价值不只在于解释术语,而在于把这些术语都落回真实工程问题:为什么串行 decode 不够、为什么 Paged KV Cache 会成为分水岭、为什么调度和服务层必须一起看、为什么 CUDA Graph / Flash Decoding / Prefix Caching 这些优化最后都要回到 workload 和 benchmark 口径上。

与站内其他文章的关系

文章 作用
现代大模型推理的核心技术全景 先建立 Prefill、Decode、KV Cache、调度和并行的总体问题图。
AI-Infra学习之旅-从 Transformer Block 到 KV Cache:站在推理视角理解 Transformer 先从模型层理解 KV Cache、Attention、Prefill/Decode 是怎么来的。
vLLM系统拆解-00-导读:从架构、调度到面试表达的学习路线 适合把这套自研项目实践和成熟推理框架设计放在一起看。
PyTorch推理工程-09-最小推理项目 如果你更关心最小工程闭环,可以把它当成这套系列的轻量前置。
从 ASGI 到推理服务:FastAPI、Starlette、Uvicorn 在 mini-infer 里如何协作 对服务化阶段的 ASGI / FastAPI 栈做更细的概念拆解。
把推理引擎接成标准接口:结合 mini-infer 讲清 OpenAI-Compatible HTTP API 对 Phase 9 附近的接口层设计做更细的协议级说明。
为什么大模型服务需要流式返回:结合 mini-infer 讲清 SSE 的协议、实现与断连处理 对流式返回和断连处理补足服务层视角。

系列结构

  • 0105:先把最小推理链路搭起来,再逐步把瓶颈从“能不能跑”推进到“为什么还跑不快”。
  • 0610:把注意力实现、Triton kernel、抢占调度、服务化和阶段复盘串成第一轮完整闭环。
  • 1119:进入更典型的系统优化主题,包括 chunked prefill、prefix caching、speculative decoding、CUDA graph、flash decoding、TP、MLA、PD 解耦和量化。
  • 2024:把重心转到 MoE Expert Parallel,讨论 dispatch、all-to-all、expert sharding、packed communication、control plane 和 grouped execution。

路线图

1
2
3
4
5
6
7
8
00 导读
-> 01 最小推理链路 -> 02 Paged KV Cache / Batch Decode -> 03 向量化 KV Gather
-> 04 双卡扩展 -> 05 Decode Profiling -> 06 True PagedAttention -> 07 Triton Decode Kernel
-> 08 Preemption / 优先级调度 -> 09 HTTP 服务化 -> 10 阶段复盘
-> 11 Chunked Prefill -> 12 Prefix Caching -> 13 Speculative Decoding
-> 14 CUDA Graph -> 15 Flash Decoding -> 16 Tensor Parallelism -> 17 MLA -> 18 PD 解耦 -> 19 量化
-> 20 MoE Dispatch / All-to-All -> 21 Expert Sharding -> 22 Packed Communication
-> 23 Control Plane -> 24 Grouped Execution

篇目索引

编号 文章 主题
01 最小推理链路:为什么要从 HuggingFace generate() 走向自己的引擎 最小闭环、HF 基线、past_key_values
02 Paged KV Cache 与 Batch Decode:从串行推理到 mini-vLLM Paged KV Cache、连续批处理
03 向量化 KV Gather:为什么 batch 吞吐能从 49% 拉到 88% gather 向量化、吞吐瓶颈
04 双卡扩展的第一课:Replica 和 Pipeline Parallel 为什么没有想象中有效 Replica、PP、扩展代价
05 Decode Profiling:还差的 12% 性能到底丢在哪里 torch.profiler、根因定位
06 True PagedAttention:从一次 .item() 读懂推理链路的脆弱点 flash_attn、block_table、链路清理
07 Triton Decode Kernel:自己写一个 attention kernel 到底在补什么 Triton、decode kernel、SM 利用率
08 Preemption 与优先级调度:KV Swap、抢占和真实 bug preemption、swap、调度稳定性
09 HTTP 服务化:异步包装、Continuous Batching 与流式解码的三个坑 OpenAI 兼容 API、流式输出、异步引擎
10 阶段复盘:从串行 Decode 到 OpenAI 兼容 HTTP 服务 阶段闭环、系统总览
11 Chunked Prefill:长 prompt 为什么会饿死并发请求 chunked prefill、TTFT / ITL
12 Prefix Caching:前缀复用为什么不是简单命中缓存 前缀复用、命中边界
13 Speculative Decoding:正确性、接受率与双 forward 代价 投机解码、acceptance rate
14 CUDA Graph:静态图怎么和动态调度共存 CUDA Graph、动态图折中
15 Flash Decoding:Split-K Attention 为什么能把 SM 利用率拉起来 Split-K、Flash Decoding
16 Tensor Parallelism:从 Pipeline Parallel 走向真正的权重切分 TP、权重切分、通信
17 MLA Attention:从 KV Cache 压缩到矩阵吸收 MLA、KV 压缩、矩阵吸收
18 PD 解耦:把 Prefill 和 Decode 拆进两个进程之后发生了什么 PD 解耦、Prefill / Decode 分离
19 量化推理:把 Linear 改成 INT8 之后,问题才刚开始 W8A8、benchmark 口径、性能根因
20 MoE 推理主线:关键不在 Router,而在 Dispatch 与 All-to-All Dispatch、All-to-All、MoE 原型
21 Expert Sharding:真正的收益不只是“把权重切一半” expert shard、权重与通信
22 Packed Communication:难点不是 bytes 公式,而是实现和 benchmark 口径一起做对 packed path、benchmark 口径
23 Control Plane:最难的不是统计出来,而是先量对 control plane、测量和解释
24 Grouped Execution:过线之后,更重要的是把收益和代价讲清楚 local expert execution、收益与代价

阅读顺序建议

  • 想先补最小闭环和基础链路:读 0102030506
  • 想重点理解在线推理系统为什么一定会走到服务化和调度:读 0809101112
  • 想把优化链补全:读 13141516171819
  • 想把视角推进到 MoE Expert Parallel:从 20 开始连读到 24

读完之后你应该建立的判断

  • 一个推理系统的关键能力,不是某个单点优化,而是缓存、调度、服务层、执行链和 benchmark 口径能不能一起闭环。
  • 很多优化并不是“更快的 kernel”这么简单,而是要先把测量窗口、对比基线和 workload 口径量对。
  • 自己做一遍 mini-infer 这种项目,最大的价值不是得到一个 production-ready 框架,而是把推理系统里的主矛盾摸清楚。