推理优化(Inference Optimization)
专题类型:主学习路线 主服务目标:请求性能与 Serving 决策
页面导语
本专题面向希望定位 LLM 请求瓶颈、优化延迟与吞吐,并能做出 Serving 选择的学习者。学习重点是把请求性能问题转化为可测量的指标、可验证的机制和可复查的部署决策。
想沿着一个在线服务问题连续学习时,先读推理优化问题链:从性能症状到项目决策;想按知识和实验顺序学习时,从下方 Task0 开始。
如何开始
按知识顺序学习时,从 Part 02 的 2.6 核心推理优化 进入,再按 Task0–6 依次学习。想先运行真实服务时,先按使用指南完成 vLLM / SGLang 预检,再运行 66 的最小 backend 实验;遇到 Attention、KV Cache、MoE 或 dtype 知识缺口时,回补对应 Notebook。
路线图把请求阶段、Task0–6 的学习顺序和各阶段的验证出口放在一起。
主学习路线与验证出口
下表按“要回答的问题 → 学习入口 → 验证出口”组织;先沿学习顺序阅读机制,再根据问题选择扩展内容和项目。
| Task / 主题 | 本阶段要回答的问题 | 学习入口与验证出口 | 学习顺序 | 主要正文入口 |
|---|---|---|---|---|
| Task0 · 请求结构与指标 | 一次请求如何经过 Attention、Prefill 和 Decode,并用 TTFT、TPOT 观察它? | 核心:Part 02 · 04 Attention(MHA / GQA) | 先理解 Attention,再建立请求和指标 | 01 请求链路与指标 |
| Task1 · Prefill 与 Attention Kernel | 为什么 Prefill 会受访存和中间矩阵影响,FlashAttention 改变了什么? | 核心:Part 01 · 03 GPU 架构与显存 → Part 01 · 14 FlashAttention 显存模型 → Part 02 · 20 FlashAttention 模拟;扩展:Part 01 · 24 SRAM 优化 | GPU 约束 → 访存与 Tiling → Prefill | 02 Prefill 与 Attention Kernel |
| Task2 · 单请求 Decode 与生成策略 | 单条请求如何逐步生成 token,采样、推测和多 Token 解码改变了什么? | 核心:Part 01 · 11 KV Cache 增长 → Part 02 · 21 解码策略;扩展:Part 02 · 23 投机解码、Part 02 · 35 多 Token 解码;项目:Part 02 · 68 投机解码基准 | 单步生成 → 策略比较 → Decode 加速 | 03 解码策略 |
| Task3 · KV Cache 状态与生命周期 | KV Cache 如何保存状态、分页分配、复用前缀并控制容量边界?架构变化会改变什么? | 核心:Part 02 · 22 vLLM PagedAttention → Part 02 · 24 SGLang RadixAttention → Part 02 · 34 Prefix Cache 与 Chunked Prefill;项目:Part 02 · 69 Prefix Cache;扩展:Part 02 · 71 MLA | 状态保存 → 分页分配 → 前缀复用 → 容量治理 → 架构扩展 | 04 KV Cache 生命周期与复用 |
| Task4 · 多请求调度与 Serving | 多请求如何从单步执行,逐层组织成批次、服务池和可控的服务质量? | 核心:Part 02 · 36 Decode 调度 → Part 02 · 37 KV Cache 调度 → Part 02 · 38 Prefill / Decode 分离;项目:Part 02 · 70 Serving 调度;扩展:Part 02 · 39 推理回退与分层、Part 02 · 79–81 分布式项目 | 单步选请求 → Cache 接纳与暂停 → 批次与队列组织 → PD 服务池 → Serving 验证 | 07 Serving 调度与 PD 分离 |
| Task5 · 量化部署与成本 | 权重和 KV 量化如何改变显存、速度、质量与 backend 选择? | 核心:Part 01 · 21 量化理论与 INT4/INT8 → Part 02 · 25 W8A16 → Part 02 · 40 GPTQ / AWQ → Part 02 · 41 FP8 / KV Cache 量化;项目:Part 02 · 67 量化推理与部署;GGUF 走独立 backend | 表示与时机 → 权重 / KV 量化 → backend 验证 | 05 量化推理与部署 |
| Task6 · 基准比较与部署决策 | 如何在统一 workload 下比较模型、backend 和策略,并根据指标、质量和证据等级做出部署决策? | 项目:Part 02 · 66 推理性能比较 → Part 02 · 72 多模型部署对比;汇总 66–72 的结果 | 统一 workload → baseline / candidate → 模型与 backend 对照 → 检查质量 → 输出 accept / tune / reject | 06 基准测试与决策 |
按需回补:架构与共享前置
遇到架构、MoE、dtype 或精度方面的知识缺口时,从下表回补对应入口,再回到当前 Task 继续学习。
| 补充主题 | Notebook 入口 | 建议时机 |
|---|---|---|
| 架构基础 | 05 LLaMA3 Block、08 Architecture Tricks | Task0 后按需阅读 |
| MoE 架构 | 06 MoE Router、07 MoE Load Balancing | 需要 MoE 或进入多卡前 |
| 硬件与精度 | Part 01 · 01 数据类型与精度 | 需要补充 dtype、精度或表示基础时 |
| MoE 计算 | Part 01 · 22 MoE 参数与计算 | 学 MoE 或分布式前按需回补 |
跨专题入口
项目入口已经列在上面的主学习路线表中;需要按现象分流时阅读推理优化判断手册,需要沿请求问题链连续阅读时阅读推理优化问题链。如果问题跨到其他方向,可转到性能分析、显存优化、量化与压缩、算子优化或编译与图优化。
环境与验证
按实验目标选择环境组合:CPU 环境用于机制和指标逻辑,GPU 或 backend 环境用于真实性能与部署结果。
| 实验类型 | 环境组合 | 适用内容 |
|---|---|---|
| CPU 机制 | base.txt + torch-cpu.txt | Attention、解码、指标和机制模拟 |
| GPU / Transformers | base.txt + torch-cu128.txt | GPU 延迟、吞吐和显存测量 |
| vLLM backend | torch-cu128.txt + inference-vllm.txt | 66–72 的 vLLM 实验 |
| SGLang backend | torch-cu128.txt + inference-sglang.txt | 66、69、70、72 的 SGLang 对照实验 |
| Profiling | torch-cu128.txt + profiling.txt | trace、TensorBoard 和性能证据 |
每次真实实验都记录模型、后端、数据类型、序列长度、并发度和结果文件;用报告中的 evidence level 区分 smoke test 与稳定 benchmark。
开始真实实验前,先看使用指南中的环境边界;需要逐条执行时,使用66–72 推理项目验证清单。
