LESSON 6.1 · 系统 · 90 分钟
Prefill 与 Decode:两种完全不同的负载
Prefill 与 Decode:两种完全不同的负载:理解compute-bound、memory-bound、latency、throughput,完成“profile 一次完整生成”。属于「让模型快而可靠地说话」学习阶段。
学完你应该能够
- 能不用术语堆砌,解释「Prefill 与 Decode:两种完全不同的负载」解决了什么问题。
- 能围绕 compute-bound、memory-bound、latency 画出变量与因果关系。
- 能完成「profile 一次完整生成」,并用证据而不是感觉判断结果。
核心概念
compute-bound
compute-bound对应两类不同负载:prefill 可并行处理整段输入,通常算力密集;decode 每步只产生一个 token,却反复读取权重与缓存,通常带宽受限。
memory-bound
memory-bound对应两类不同负载:prefill 可并行处理整段输入,通常算力密集;decode 每步只产生一个 token,却反复读取权重与缓存,通常带宽受限。
latency
latency需要在固定质量与负载下比较延迟、吞吐、显存和成本,单独的速度数字没有决策意义。 写出至少一个不变量、shape 约束或成立条件。
throughput
throughput需要在固定质量与负载下比较延迟、吞吐、显存和成本,单独的速度数字没有决策意义。 用反例说明忽略它时系统会怎样失败。
实践任务
profile 一次完整生成
- 预测:在运行代码前,写下你预期的输出、趋势或失败位置。
- 构建:画出关键资源与队列,只保留回答核心问题所需的最小组件。
- 验证:使用固定质量约束下测 p50/p95 延迟、吞吐、显存和成本;保存参数、随机种子与原始结果。
- 迁移:改变并发、序列长度或硬件后重新选择缓存与批处理策略,说明原结论是否仍成立。