01. Prefill 和 Decode 有什么区别?
整理推理阶段两个核心阶段的差异。
简单回答
Prefill 是把已有输入上下文一次性编码进去,Decode 是在已有上下文基础上逐 token 继续生成。
详细解析
- Prefill 阶段通常并行度更高,因为整段输入可以一起处理。
- Decode 阶段是自回归生成,每次只生成少量 token,因此对时延更敏感。
- 很多线上优化要分阶段看,因为影响 Prefill 的瓶颈和影响 Decode 的瓶颈并不一样。
- 例如长 prompt 会显著拖慢 Prefill,而长回答过程更考验 Decode 吞吐和 KV Cache。
面试时可以这样答
面试时最好明确说一句:它们不是两个模型,而是同一次推理中的两个阶段。
常见追问
- 为什么 Decode 更难做高吞吐?
- RAG 会主要影响哪个阶段?