📑 本页目录(点开跳转)
06d · 降延迟,以及三个指标怎么权衡
⏱ 26 分钟 | ⭐ 显存和吞吐都够了,用户还是觉得慢的时候看这页
🎯 一句话
上一页把模型压小、把卡榨满,解决的是「装不装得下、够不够多」。 这一页解决「够不够快」 —— 投机解码和几种缓存怎么降延迟,以及为什么 TTFT、TPOT、吞吐这三个指标不可能同时最优,你必须先挑一个。
⚡ 武器三:投机解码(降低延迟)
因果链
💡 为什么能白赚:正因为 decode 是访存密集的,GPU 算力本来就在空转——并行验证 5 个 token 几乎不额外花时间。
变体:Medusa(多头并行预测)、EAGLE、n-gram 查表(无需额外模型)。
🎲 三大武器管的都是「这一步跑得多快」——但还有一半不在这一章。 Decode 每一步吐出来的其实是一个概率分布,「从分布里挑哪个词」是完全另一套东西:
temperature、top_p、那几个 penalty 全住在那里,和速度优化正交。两章的分工看现象就能分清:慢、贵、显存不够 → 留在这一章; 输出飘、复读、每次结果不一样、JSON 间歇性打不开 → 去 06b · 解码策略。
⚠️ 顺带说,两章有一个真实的交集:T=0 也不保证逐位复现——归约顺序会随 batch 组成变化, 而动态 batch 正是上面武器二连续批处理造成的。吞吐优化和逐位复现是一对天然矛盾,那条在 06b 讲透。
🧰 其他常用手段
| 手段 | 作用 |
|---|---|
| GQA/MQA | 多个 Q 头共享 K/V 头 → KV Cache 省好几倍(原理见主线 2 · 模型怎样看懂一句话,完整展开见AI基础设施 16) |
| Prefix Caching | 相同的系统提示词只算一次,多请求复用 ⭐ 省钱利器 |
| FlashAttention | 减少显存读写,长上下文提速明显 |
| 张量并行 | 一个模型切到多张卡上(放不下时的必选) |
| 算子融合 / CUDA Graph | 减少 kernel 启动开销 |
💰 Prefix Caching 对做 Agent 的人特别重要:Agent 每轮都重发完整历史(智能体教程第 1 章), 前缀完全相同——缓存后能省掉绝大部分 prefill 成本。这也是为什么「稳定内容放前面、动态内容放后面」是条金规则。
🚨 Prefix Caching 的杀手:三个会让命中率归零的写法
流程图
🔑 一句话:前缀一个字符变了,从那里往后的缓存全部失效。 这是最容易犯、代价最大、也最容易修的一个错——改一下顺序就能省掉大半账单。
🎯 三个指标,别只盯一个
信息关系
| 你的场景 | 该优先什么 |
|---|---|
| 对话产品(有人在等) | TTFT ⭐ ——首字出来得快,用户就觉得快 |
| Agent / 批处理任务 | 吞吐 ——没人盯着,把卡榨满 |
| 代码补全 | TPOT ——要跟得上打字速度 |
💡 一个便宜的心理学优化:开流式输出。 总时长没变,但用户看到字在动,感知延迟大幅下降—— 这往往比任何推理优化都划算。
🔗 想再深一层,去哪一套
| 去哪 | 为什么 |
|---|---|
| AI基础设施 19 · 投机解码 | ⭐ 武器三的完整展开:接受-拒绝规则、加速比公式、什么场景是白赚 |
| 模型上线之后 18 · 成本与容量 | ⭐ 省下来的算力怎么换算成容量:排队、超时、雪崩 |
| 智能体工程教程 04 · 上下文工程 | Prefix Caching 为什么对 Agent 特别值钱 —— 那一章的原话是「Agent 每轮都重发完整历史,前缀完全相同 → 可以被缓存复用」,并给了「稳定内容在前、动态在后」的写法 |
| AI全栈 05 · 流式输出 | 「最便宜的延迟优化是开流式」那一条,工程上怎么真的接起来 |
📦 深挖的话要学什么
📍 每条后面标了它在哪: 📗 本库有 = 站内已经讲透,点进去就行;📙 半有 = 站内讲了一半,另一半得外找; 📕 要外找 = 站内没有,得去论文或别处。 (这份清单以前只列词不说去哪,指到的坑有些站内根本没挖过,按图索骥会扑空。) ⭐ 这一章是全导论「本库有」比例最高的一章——《AI基础设施》基本是它的完整展开版。
- 原理:Roofline 模型(算力 vs 带宽瓶颈分析)、算术强度 → 📗 本库有:AI基础设施 04 · Roofline与MFU + 03 · 显存与带宽墙。本章开头"Prefill 受算力限制、Decode 受带宽限制"是结论,Roofline 是那个能让你自己算出来的工具——知道算术强度怎么算,你就能在买卡之前判断某个负载到底卡在哪一边
- 量化:对称/非对称、per-tensor/per-channel/per-group、GPTQ 与 AWQ 的算法差异、KV Cache 量化、量化感知训练 → 📗 本库有,整条都有:AI基础设施 18 · 量化——离群值为什么是 LLM 量化的核心难题、per-group(每 128 个权重一组)为什么成了主流、AWQ 的"只有 1% 的权重重要"、GPTQ、KV Cache 量化,以及 PTQ vs QAT(⭐ 结论是 LLM 时代 PTQ 一边倒,因为 QAT 要重训,70B 重训一遍的成本和"掉的那 1 分"完全不成比例——所以这一项你多半不会用到,但值得知道为什么不用)
- 服务框架:vLLM / SGLang / TensorRT-LLM / TGI 的架构与选型 → 📗 本库有:AI基础设施 20 · 推理服务化 的七引擎横评 + 四问决策树,TGI 也在里面(它属于"生态贴合"型选择——不是更快,是你已经在 HF 那套里了)。⚠️ 去之前先记住那一章最反直觉的一条:引擎之间通常只差 20–50%,而配置有没有调对差的是几倍——大部分"快 3 倍"的评测拆开看都是一边开了连续批处理一边没开。先调配置,再换引擎
- 调度:连续批处理、PagedAttention、分块预填充(chunked prefill)、prefill/decode 分离部署 → 📗 本库有:AI基础设施 17 · 连续批处理与PagedAttention 四项全覆盖,还多给了一笔本章没有的账——P/D 分离不是免费午餐:分开之后 KV 要跨机搬,而 InfiniBand 带宽只有 HBM 的约 1/60
- 投机解码:草稿模型选择、接受率优化、Medusa/EAGLE → 📗 本库有:AI基础设施 19 · 投机解码。本章「武器三」讲了它为什么有效,那一章讲的是怎么让它真的有效:加速比由接受率 α 和草稿成本 c 两个变量决定(c 通常要 ≤1/10 才划算;代码任务因为模式可预测,α 能到 0.85 以上),Medusa(加预测头,草稿成本近零但猜得糙)和 EAGLE(把自回归挪到特征层换接受率)各自的位置
- 性能工程:压测方法、TTFT/TPOT/吞吐三角权衡、成本建模 → 📗 本库有:AI基础设施 20 · 推理服务化 的「先定 SLO 再谈优化」和「压测:画出你的延迟-吞吐曲线」,成本那一侧在 AI基础设施 23 · 可观测性与成本。本章的"三个指标别只盯一个"到这里变成可执行的流程
- 实操:用 vLLM 部署一个模型,做一次完整压测
→ 📙 半有:该开哪些参数、压测该画什么曲线、上线检查清单,AI基础设施 17 和 20 都给了(含
enable_chunked_prefill/enable_prefix_caching/kv_cache_dtype这几个具体开关);AI基础设施 24 · 实战与挑战项目 有对应的动手项目。但"从零装一台机器跑起来"这段环境搭建站内没有,要外找(vLLM 官方 quickstart)
需要的前置:第 2 章 Transformer + Linux/GPU 基础。不需要深厚数学。
⚖️ 要不要深挖
| 你的情况 | 建议 |
|---|---|
| 只用 API,量不大 | ⛔ 不用。知道 Prefix Caching 会用就行 |
| API 账单开始肉疼 | 🟡 先做提示词优化和缓存,再考虑自建 |
| 数据不能出内网 / 有合规要求 | ✅ 必须,配合第 7 章 |
| 有稳定的大流量,自建更划算 | ✅ 必须,这块直接省真金白银 |
| 做 AI 基础设施 / 平台岗 | ✅ 核心技能 |
🔑 我的判断:这块工程性极强、几乎不涉及数学,对有后端背景的人上手很快。 价值判断很简单:看你的账单。如果每月 API 花费还不够租一张 GPU,就别折腾自建。 但「Prefix Caching + 提示词结构优化」是所有人现在就该做的,本章内容已经够。
✅ 检查点
- 投机解码为什么能「白赚」速度?
- Prefix Caching 对 Agent 场景为什么特别有价值?哪三个写法会让命中率归零?
- TTFT / TPOT / 吞吐三个指标怎么互相冲突?对话产品该优先哪个?
- 最便宜的「延迟优化」是什么?为什么它有效?
👀 答案
- 因为 decode 是访存密集的,GPU 算力本来就在空转 —— 大模型并行验证 5 个 token 和生成 1 个 token 的耗时几乎一样,所以只要小模型猜中率够高就是净赚,而且输出分布和原模型完全一致。
- Agent 每轮都重发完整历史,前缀完全相同,缓存后能省掉绝大部分 prefill 成本。三个会让命中率归零的写法见正文那一节 —— 共同点都是把会变的东西放到了前面。
- 加大 batch → 吞吐↑ 但 TTFT 和 TPOT 变差(要排队);减小 batch → 延迟↓ 但吞吐↓(卡在空转)。对话产品该优先 TTFT:首字出来得快,用户就觉得快。
- 开流式输出。总时长一点没变,但用户看到字在动,感知延迟大幅下降 —— 这往往比任何推理优化都划算。
🛑 可以停在这里
⚠️ 什么时候回来:你已经知道该优化哪个指标了,但输出本身有问题 —— 一会儿飘一会儿复读、同样的输入两次结果不一样。那不是推理优化的事,是解码策略的事,从 06b 进去。
⚡ 走神救援
先记住这几件事
- TTFT 看多久出现首个结果,TPOT 看后续生成速度,吞吐看单位时间完成多少工作。
- 投机解码与前缀缓存利用可复用的计算,是否有效要结合命中率和负载测量。
- 先明确产品最在乎哪个指标,再比较优化后的代价与收益。
下一节 👉 06b-解码策略.md