Chunked Prefill 与 128K 长文推理部署
Chunked Prefill 采用分块策略,将预填充(Prefill)阶段请求拆解为小规模子任务,与解码(Decode)请求混合批处理执行。可以更好地平衡计算密集型(Prefill)和访存密集型(Decode)操作,优化GPU资源利用率,减少单次Prefill的计算量和显存占用,从而降低显存峰值,避免显存不足的问题。
在启用 Chunked Prefill 机制后,调度策略采用以下优先级规则:
- 解码请求优先处理:系统会优先将所有待处理的解码请求(Decode)进行批量整合,确保生成类任务获得即时响应能力。
- 弹性分块机制:当存在等待处理的预填充任务时,系统会在
max_num_batched_tokens
预算范围内(即当前批次可容纳的最大 token 数量)调度预填充(Prefill)操作。若单个预填充请求的 token 量超过剩余预算容量,系统会自动将其拆分为多个符合预算限制的子块(Chunks)。
通过 Chunked Prefill 机制,可以有效降低 Token 间时延(Inter-Token Latency),同时优化显存占用,支持更大长度的输入。
更多信息请查阅相关论文 https://arxiv.org/pdf/2308.16369。
使用与调优
在 FastDeploy 中开启 Chunked Prefill 时,可以通过 max_num_batched_tokens
参数调节服务性能:
- 较小的
max_num_batched_tokens
可以获得更好的 Token 间时延(Inter-Token Latency)。 - 更大的
max_num_batched_tokens
可以获得更好的首 Token 时延(Time To First Token)。 - 建议配置
max_num_batched_tokens > 8096
,当在算力充足的硬件上部署小模型时,可以进一步增大max_num_batched_tokens
来获得更高的吞吐量。
适用场景
- 长文推理部署,如 128K 长文推理部署等场景。可以通过 Chunked prefill 技术降低显存峰值,避免显存不足的问题。
- 生成类任务,通过 Chunked prefill 技术可以降低 Token 间时延(Inter-Token Latency),提高生成类任务的响应速度。