01. Prefill 和 Decode 有什么区别?

整理推理阶段两个核心阶段的差异。

简单回答

Prefill 是把已有输入上下文一次性编码进去,Decode 是在已有上下文基础上逐 token 继续生成。

详细解析

  • Prefill 阶段通常并行度更高,因为整段输入可以一起处理。
  • Decode 阶段是自回归生成,每次只生成少量 token,因此对时延更敏感。
  • 很多线上优化要分阶段看,因为影响 Prefill 的瓶颈和影响 Decode 的瓶颈并不一样。
  • 例如长 prompt 会显著拖慢 Prefill,而长回答过程更考验 Decode 吞吐和 KV Cache。

面试时可以这样答

面试时最好明确说一句:它们不是两个模型,而是同一次推理中的两个阶段。

常见追问

  • 为什么 Decode 更难做高吞吐?
  • RAG 会主要影响哪个阶段?