第 3 章 · 约 24 分钟
推理与训练负载
请求怎样到来,资源需求与等待如何被改写?
负载不是一条请求
到达过程会改写下界
单次请求的 M、F、R 是起点。真实服务里,请求持续到达、长度不一、有的带着很长的前缀、有的是多轮 Agent。同一套加速器,短问答和长文档的表现可以差出一个数量级。
Prefill 偏计算:一次吃进整段输入,算术强度高。Decode 偏带宽:每步几乎要把权重再读一遍,再扫一遍不断变长的 KV。把两者平均成“每秒多少 token”会掩盖首字时间和后续间隔的分裂。
Prefill
Decode
排队、KV 容量、首字时间
连续到达时,系统像一个有限容量的服务员。KV 把并发上限钉死:96 GB 卡放下 Qwen3-8B 的 16.4 GB 权重后,剩下的空间按每条 8K 请求 1.125 GiB 来分。并发到顶,新请求只能排队。排队等待会直接叠进 TTFT。
提高 decode 吞吐的常用手段是把多条请求打成一批,共享一次权重读取。流体模型里这会抬高服务率;代价是每条请求都要等这一批结束,TPOT 上升。第 8 章会把这个权衡做成调度问题。
训练不是三倍前向就结束
粗算常说“训练 ≈ 3 × 前向”(前向、反向、参数更新相关的额外工作)。对 Qwen3-8B、8192 token、全参数、无重计算,逐项累计前向加反向约 431 TFLOPs,而 6ND 粗算约 403 TFLOPs。差距来自注意力配对、词表头范围和状态更新。
更关键的是状态。混合精度 Adam 每参数约 16 字节:BF16 权重与梯度、FP32 主权重、两份矩。Qwen3-8B 约 131 GB 常驻训练状态——一张能推理它的卡,远远装不下训练它。强化学习还要把生成和训练耦合:生成副本需要新权重,策略概率要和训练端对齐。
实验
Prefill / Decode
Prefill
230.58 ms
算力墙
下限取两者较大者。较短的一根无论再缩短,只要没超过另一根,总时间就不动。
Decode 合计
1.15 s
带宽墙
下限取两者较大者。较短的一根无论再缩短,只要没超过另一根,总时间就不动。
考核
第 3 章考核
4 题
1.同一条 Qwen3-8B 请求。为什么 prefill 常被算力限制,decode 常被带宽限制?
2.混合精度 Adam 训练 Qwen3-8B,常驻状态大约?
3.Agent 电话里,模型单步已经低于 10 ms,用户仍觉得“慢了一拍”。最可能的原因?
4.KV 把并发钉在 64 条。到达突然超过服务率时,首先变坏的是?
全部作答后交卷。