什么是 预填充(Prefill)?
预填充(Prefill)是 LLM 推理中处理请求内未缓存输入 Token、生成首个输出所需状态,并构建供后续解码复用的 KV Cache 或其他模型状态的阶段。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
测量边界
Prefill Latency 是引擎内部区间,通常从请求首次被调度开始,到产生首个输出的模型步骤结束。[vLLM 指标设计](https://docs.vllm.ai/en/stable/design/metrics/)记录 Queue、Scheduled 与 New Tokens 事件,使这些区间能够分离。TTFT 范围更大,因为客户端还可能观察到请求传输、鉴权、准入、排队、分词和首个非空输出的回传。不同 Benchmark 与 Runtime 的事件定义并不统一,必须记录边界,不能直接相减一组未说明语义的时间戳。仅凭客户端 Trace 通常无法隔离 Kernel 级 Prefill 时间。
状态与调度
未缓存的提示词位置会生成后续 Decode 复用的 Attention 状态。前缀缓存可以减少实际处理位置,但 Cache Lookup、租户隔离和 Miss 仍属于系统成本。[SARATHI](https://arxiv.org/abs/2308.16369) 研究了让提示词分块与 Decode 交错的 Chunked Prefill;其收益只适用于论文中的模型和硬件。[DistServe](https://arxiv.org/abs/2401.09670) 把生成的 KV 状态传给 Decode Worker,可能提高某些负载的 SLO 合格容量,也会增加路由与传输成本。
基准契约
可复现的 Prefill 结果应固定模型与 Tokenizer、未缓存与命中 Token 数、预处理、批次、到达分布、调度、硬件、精度、Cache 状态和计时边界。[AIPerf 指标参考](https://docs.nvidia.com/aiperf/reference/ai-perf-metrics-reference)区分请求级、聚合与派生指标。应报告 p50/p95/p99 Latency、输入 TPS、Queue Time、TTFT、Decode Latency、失败率和质量。不能对比 Warm Cache Hit 与 Cold Prompt,也不能用全部输入 Token 除以 TTFT 后称为纯模型吞吐而不说明近似边界。
主要特点
- 在稳定逐 Token 生成前处理未缓存输入位置
- 构建 Decode 使用的 KV Cache 或架构专属状态
- 可以按单次前向、调度器分块或独立服务阶段执行
- 贡献于 TTFT,但不等于客户端、网关、排队和回传总耗时
- 与 Decode 共置时会竞争计算、显存与调度容量
- 报告结果时必须给出提示词形态、缓存状态、负载和事件定义
常见用途
- 把慢响应中的排队时间与提示词处理时间分开
- 按未缓存输入 Token 为长上下文、RAG 和多模态负载规划容量
- 验证前缀缓存是否真实减少计算且没有跨租户复用
- 在 TTFT 与 ITL SLO 下选择分块、共置或分离式 Prefill
- 发现模型、Tokenizer、调度器、Kernel 或硬件变更后的回退
示例
Loading code...常见问题
Prefill 与分词或 TTFT 是一回事吗?
不是。分词把输入映射为 Token ID;Prefill 对未缓存输入位置执行模型计算并生成可复用状态;TTFT 是更宽的客户端观测区间,还可能包含网络、鉴权、排队、预处理和首个非空输出回传。
Prefill 总会一次处理完整提示词吗?
不会。Cold Request 可能要处理全部提示词,Prefix Cache Hit 只处理未命中的后缀,调度器也可能把长 Prefill 拆成多个 Chunk。报告结果时应同时给出未缓存 Token 数和调度模式。
Prefill 一定受算力限制吗?
没有统一瓶颈。Prefill 通常具有较高矩阵计算并行度,但 Attention 形态、模型架构、批次、显存流量、通信、缓存和多模态编码都可能改变限制因素。
应该如何测量 Prefill 性能?
使用从调度到首个输出模型步骤的引擎时间戳,报告 Latency 分位数和未缓存输入 Token Throughput。Queue Time、TTFT 与网络回传应单独记录,并固定模型、Tokenizer、缓存状态、工作负载、Runtime 与硬件。
Chunked Prefill 或 Prefill/Decode 分离何时有价值?
只有测得阶段干扰或容量不平衡导致 TTFT 与 ITL 无法达标时才有价值。分块会在提示词完成时间与 Decode 公平性之间权衡;分离会增加 KV 传输和路由成本,都应与共置基线比较。