一句话定义
推理是让训练好的模型对新输入做前向计算;生成是自回归地一个 token 一个 token 产出文本。一次请求通常分成 Prefill 和 Decode 两个阶段。
为什么需要区分
Prefill 把整段 prompt 并行送进模型,计算密集,决定首 token 延迟(TTFT);Decode 每步只生成一个 token,受显存带宽限制,决定每 token 耗时(TPOT)。两者的优化手段完全不同。
怎么工作
- Prefill:并行处理 prompt,计算并保存 KV Cache。
- Decode:每步用上一步的 KV Cache,生成一个新 token。
- 新 token 追加到序列,重复 Decode,直到结束。
- 结果可以流式输出,用户不必等整段生成完。
关键取舍
- Prefill 看算力和批处理;Decode 看 KV Cache、量化和解码策略。
- batch 越大吞吐越高,但延迟和显存也会上升。
- GPU 推理不是必然更快:小模型、低并发或数据搬运多时,CPU/边缘设备可能更合适。
- 流式输出改善体验,但不改变总生成时间。
常见误区
- 推理不是训练:不更新权重,只做前向。
- Prefill 和 Decode 不是一回事:一个并行、一个逐 token。
- GPU Inference 一定比 CPU 快:要看模型大小、batch、内存带宽。
- 生成速度只看模型:KV Cache、批处理、解码策略同样关键。
用在哪里
- 在线对话、代码补全、RAG 回答、Agent 工具调用。
- 离线批处理、边缘推理、流式语音/文本。
- 优化 TTFT 看 Prefill,优化 TPOT 看 Decode。
相关概念
- KV Cache:Decode 阶段的核心缓存。
- PagedAttention:KV Cache 的分页管理。
- Continuous Batching:请求级动态批处理。
- 投机解码:用草稿模型加速 Decode。