什么是 预填充(Prefill)?

预填充(Prefill)是 LLM 推理中并行处理完整输入提示词,并在逐 token 解码开始前生成初始键值缓存的阶段。

工作原理

预填充是自回归 LLM 推理中的第一个主要计算阶段。在预填充期间,模型读取所有输入 token,围绕提示词计算注意力,并存储解码阶段可以复用的 key-value 状态。长提示词、大量检索上下文和多轮对话都会让预填充变得昂贵。因此,即使输出很短,提示词长度、上下文缓存、RAG 分块选择和批处理策略也可能主导首 Token 延迟。

主要特点

  • 在生成第一个 token 前处理完整输入提示词
  • 构建后续解码步骤复用的 KV Cache
  • 对输入 token 数和上下文长度高度敏感
  • 长提示词场景下常是 TTFT 的主要来源
  • 可通过上下文缓存、提示词裁剪和高效批处理优化

常见用途

  1. 诊断长上下文提示词导致的首 Token 延迟升高
  2. 估算包含大量检索分块的 RAG 请求服务成本
  3. 为重复系统提示词或共享前缀应用上下文缓存
  4. 为聊天应用设计提示词预算
  5. 区分输入处理延迟和输出生成延迟

示例

loading...
Loading code...

常见问题

为什么预填充会影响首 Token 延迟?

模型必须先处理输入提示词并构建可复用注意力状态,才能输出第一个 token。

预填充可以并行吗?

输入 token 上的预填充比逐 token 解码更容易并行,但在长上下文下仍然昂贵。

如何降低预填充成本?

减少不必要上下文、改进 RAG 选择、缓存共享前缀,并选择针对长提示词优化的服务引擎。

预填充和提示词分词是一回事吗?

不是。分词把文本转换为 token ID;预填充是模型对这些输入 token 执行前向计算。

相关工具

相关术语

相关文章