什么是 预填充(Prefill)?
预填充(Prefill)是 LLM 推理中并行处理完整输入提示词,并在逐 token 解码开始前生成初始键值缓存的阶段。
工作原理
预填充是自回归 LLM 推理中的第一个主要计算阶段。在预填充期间,模型读取所有输入 token,围绕提示词计算注意力,并存储解码阶段可以复用的 key-value 状态。长提示词、大量检索上下文和多轮对话都会让预填充变得昂贵。因此,即使输出很短,提示词长度、上下文缓存、RAG 分块选择和批处理策略也可能主导首 Token 延迟。
主要特点
- 在生成第一个 token 前处理完整输入提示词
- 构建后续解码步骤复用的 KV Cache
- 对输入 token 数和上下文长度高度敏感
- 长提示词场景下常是 TTFT 的主要来源
- 可通过上下文缓存、提示词裁剪和高效批处理优化
常见用途
- 诊断长上下文提示词导致的首 Token 延迟升高
- 估算包含大量检索分块的 RAG 请求服务成本
- 为重复系统提示词或共享前缀应用上下文缓存
- 为聊天应用设计提示词预算
- 区分输入处理延迟和输出生成延迟
示例
loading...
Loading code...常见问题
为什么预填充会影响首 Token 延迟?
模型必须先处理输入提示词并构建可复用注意力状态,才能输出第一个 token。
预填充可以并行吗?
输入 token 上的预填充比逐 token 解码更容易并行,但在长上下文下仍然昂贵。
如何降低预填充成本?
减少不必要上下文、改进 RAG 选择、缓存共享前缀,并选择针对长提示词优化的服务引擎。
预填充和提示词分词是一回事吗?
不是。分词把文本转换为 token ID;预填充是模型对这些输入 token 执行前向计算。