总览
本章节范围:把训完 + 对齐完的 LLM 用起来生成 token,这一阶段的工程关键:prefill / decode 二段特征 → KV cache 管理 → sampling 算法 → 量化加速。是模型从"实验室能跑" 到"生产能扛 100K QPS" 的工程主线。 目标读者:工程师 / 研究者;假设已读 07-微调与对齐,知道 aligned model 怎么来的。
范围与边界
- 包含:prefill vs decode 计算特征 (compute-bound vs memory-bound) / arithmetic intensity 与 roofline 直觉 / KV cache 显存计算与管理 (PagedAttention / chunked prefill) / sampling 算法 (greedy / temperature / top-k / top-p / beam / speculative) / 量化简介 (INT8 / FP8 / INT4 / GPTQ / AWQ / SmoothQuant) / PD 分离架构简述。
- 不包含 (各项外链):
- 完整 PagedAttention 算法 + vLLM 完整架构:偏工程实现,本章只到概念
- PD 分离架构详细 (DistServe) → interconnect/05-LLM并行通信/09-跨策略横向/03-推理部署模式
- KV cache 架构压缩 (GQA/MQA/MLA) → knowledge/03-长上下文/05-kv-cache架构压缩
- 长上下文 KV 推理管理 (eviction / streaming) → knowledge/03-长上下文/07-推理-kv管理
- 完整 Flash Attention / FlashDecoding kernel → 不在本知识库
- 服务框架对比 (vLLM / SGLang / TensorRT-LLM) → 工程话题
- 多模态推理 (视觉 + 文本):不展开
名词定义
本章节子文档默认这些名词已定义,不再重复;父总览 1 总览 已定义的 (Prefill / Decode / KV cache / Logits / Inference) 在此不重列。
| 名词 | 定义 |
|---|---|
| Arithmetic intensity | FLOPs / memory bytes ratio,衡量算子的"算力 vs 内存" 偏向 |
| Roofline model | 性能 = min(算力上限,内存带宽 × arithmetic intensity),推理优化的核心分析框架 |
| Compute-bound | 算力是瓶颈,增加 batch / 序列长度不一定降单 token 延迟;prefill 典型 |
| Memory-bound | 显存带宽是瓶颈,计算单元闲置;decode 典型 |
| PagedAttention | vLLM 提出的 KV cache 管理方案,把连续 KV 切成 page 分散存储,提高显存利用率 |
| Chunked prefill | 把长 prompt prefill 切成 chunk,与 decode 交错调度,缓解 prefill 长尾 |
| Greedy decoding | 每步选概率最大的 token,确定性最强但易陷重复 |
| Temperature sampling | logits 除以 T 后 softmax 采样,T < 1 更确定,T > 1 更多样 |
| Top-k sampling | 仅在概率前 k 大的 token 中采样,k 典型 50 |
| Top-p (nucleus) sampling | 选累积概率 ≥ p 的最小 token 集合,p 典型 0.9-0.95 |
| Beam search | 同时维护 k 个候选序列,选总概率最高 (LLM 时代弃用,留给 NMT) |
| Speculative decoding | 用小 draft 模型预测 K 个 token,大 target 模型一次性验证,加速 decode |
| GPTQ / AWQ / SmoothQuant | 主流 PTQ (Post-Training Quantization) 方法,不需重训 |
| INT8 / FP8 / INT4 | 推理常用的低精度数据格式,INT8 最稳,INT4 最激进 |
| PD 分离 (Prefill-Decode disaggregation) | 把 prefill 和 decode 分到不同机器/卡,各自优化,DistServe / Splitwise / Mooncake 代表 |
@tbl-inference-glossary 本章共享名词
子文档索引
按"特征 → 优化 → 算法 → 加速" 顺序排列:
| 篇 | 一句话 | 独占技术内核 (写到深) | 负边界 (不展开) |
|---|---|---|---|
| 02-prefill 与 decode | 两阶段为什么计算特征完全相反 | prefill 一次性 forward 全段 prompt / decode 串行逐 token / arithmetic intensity 推导 (compute-bound vs memory-bound) / roofline model 直觉 / KV cache 让 decode 计算量降 / 现代 PD 分离的工程动机 / MFU vs MBU 指标 | 不展开 PD 分离架构细节 (外链 interconnect/05/09);不讲多 GPU 并行 |
| 03-KV cache | 显存大头 + 管理是关键 | KV cache 显存公式 (含 GQA / MQA 修正) / 随 batch × seqlen 增长曲线 / 显存与 prefill 重算的 trade-off / PagedAttention 解决碎片问题 / KV 量化 (INT8 / INT4) 实证 / chunked prefill 让 prefill 与 decode 共存 | GQA/MQA/MLA 架构压缩外链长上下文;工程框架 (vLLM/SGLang) 仅指 |
| 04-采样与解码 | 从 logits 到 token id | greedy / temperature / top-k / top-p (nucleus) / 各算法直觉与典型超参 / beam search 为何 LLM 时代弃用 / repetition penalty / speculative decoding 加速直觉 | 不展开 beam search 完整算法;不讲 contrastive search / typical sampling 等小众 |
| 05-量化简介 | INT8 / FP8 / INT4 直觉 | weight-only vs activation 量化 / PTQ 主流方法 (GPTQ / AWQ / SmoothQuant) 直觉 / INT8 vs FP8 数值表现 / INT4 weight + FP16 activation 是 llama.cpp / GPTQ 主流 / 业界部署 (TRT-LLM / vLLM / llama.cpp) 简述 / QAT 仅点到 | 不推 GPTQ 完整算法;不展开 QAT; SmoothQuant / AWQ 数学细节仅给直觉 |
@tbl-inference-index 子文档索引 (含边界契约)
推理与训练的根本差异 (再次回顾)
本章核心反复出现的对照:
| 维度 | 训练 | 推理 (decode 阶段) |
|---|---|---|
| 一次前向产出 | 序列每个位置的 logits + 算 loss 反传 | 只取最后位置,采样出 1 个 token |
| 序列维并行 | 完全并行 (一次吃 4K token) | 必须串行 (生成第 $t$ 个要等第 $t-1$ 个) |
| 计算瓶颈 | compute-bound, MFU 看矩阵乘 | memory-bound,瓶颈 KV cache 读取带宽 |
| KV cache | 不用 | 必用 |
| 显存关键 | 激活 + 参数 + 优化器 (Adam 状态 ×2N) | 参数 + KV cache (随 seqlen 增长) |
| 优化方向 | scaling laws / 吞吐 / 训练稳定 | 延迟 / 显存效率 / 多请求并发 |
@tbl-inference-vs-training 推理 vs 训练的核心差异 (在 02-大模型是什么 已介绍,本章深入展开)
LLM 推理在工程上为什么重要
- 算力占比 (训练 99% vs 推理) 是误导性的:推理是"用户侧,长期运行",累积总算力远超训练
- 典型规模:ChatGPT 高峰每秒生成 100K+ token,等价于"每天训练几个 GPT-3"
- 推理 MFU ~1%:训练 MFU 30%+,推理仅 1%,这是 PD 分离 + 量化 + speculative 等优化的根本动机
- 现代部署架构:DistServe / Splitwise / Mooncake 等 PD 分离方案让推理效率提升 3-5×
与外部专题的接缝
| 外链主题 | 在本章哪里引 | 目标 |
|---|---|---|
| PD 分离架构 (DistServe 等) | 02-prefill 与 decode 末尾 | interconnect/05-LLM并行通信/09-跨策略横向/03-推理部署模式 |
| KV 架构压缩 (GQA/MQA/MLA) | 03-KV cache 末尾 | knowledge/03-长上下文/05-kv-cache架构压缩 |
| 长上下文 KV 推理管理 | 03-KV cache 末尾 | knowledge/03-长上下文/07-推理-kv管理 |
| 因果掩码与 KV cache 必要性 | 03-KV cache 节首 | 04-注意力机制/04-因果掩码 |
| Temperature 训练 vs 推理 | 04-采样与解码 节首 | 06-预训练/02-语言建模目标 |
| 推理服务化通信 | 02-prefill 与 decode 末尾 | interconnect/09-推理服务化通信 |
@tbl-inference-external 与外部专题的外链对照
全章节地图:走完最后一步
本章是 06-大模型解构 系列的最后一章。读完 06 章 (Chapter 02-08) 共 27 篇,读者拿到 LLM 从输入到输出的完整内部地图:
| 章 | 主线 |
|---|---|
| 02-大模型是什么 | 全景导览 (单篇) |
| 03-文本如何变成数字 | tokenization / embedding / RoPE 位置编码 |
| 04-注意力机制 | 简化版 → Q/K/V → 因果掩码 → 多头 (4 步递进) |
| 05-组装GPT | FFN / 归一化 / Block 顺序 / 堆叠 |
| 06-预训练 | CLM loss / 训练循环 / scaling laws |
| 07-微调与对齐 | SFT / RLHF / DPO |
| 08-推理 (本章) | prefill/decode / KV cache / 采样 / 量化 |
@tbl-inference-full-map 06-大模型解构 全章节地图
参考资料
教学蓝本:
- Sebastian Raschka. Build a Large Language Model (From Scratch). Manning, 2024. Chapter 8.
关键论文:
- Kwon et al. Efficient Memory Management for Large Language Model Serving with PagedAttention (vLLM). SOSP 2023. https://arxiv.org/abs/2309.06180
- Pope et al. Efficiently Scaling Transformer Inference. 2022. https://arxiv.org/abs/2211.05102 (推理优化经典)
- Leviathan et al. Fast Inference from Transformers via Speculative Decoding. ICML 2023. https://arxiv.org/abs/2211.17192
- Frantar et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers. ICLR 2023. https://arxiv.org/abs/2210.17323
章内交叉引用:父总览 1 总览 给全章节地图与共享名词 / 形状约定。