跳到主要内容

总览

本章节范围:把训完 + 对齐完的 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 分离架构简述。
  • 不包含 (各项外链)

名词定义

本章节子文档默认这些名词已定义,不再重复;父总览 1 总览 已定义的 (Prefill / Decode / KV cache / Logits / Inference) 在此不重列。

名词定义
Arithmetic intensityFLOPs / memory bytes ratio,衡量算子的"算力 vs 内存" 偏向
Roofline model性能 = min(算力上限,内存带宽 × arithmetic intensity),推理优化的核心分析框架
Compute-bound算力是瓶颈,增加 batch / 序列长度不一定降单 token 延迟;prefill 典型
Memory-bound显存带宽是瓶颈,计算单元闲置;decode 典型
PagedAttentionvLLM 提出的 KV cache 管理方案,把连续 KV 切成 page 分散存储,提高显存利用率
Chunked prefill把长 prompt prefill 切成 chunk,与 decode 交错调度,缓解 prefill 长尾
Greedy decoding每步选概率最大的 token,确定性最强但易陷重复
Temperature samplinglogits 除以 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 idgreedy / 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-组装GPTFFN / 归一化 / 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.

关键论文:

章内交叉引用:父总览 1 总览 给全章节地图与共享名词 / 形状约定。