Chunked Prefill
什么是Chunked Prefill
Chunked Prefill(Splitfuse)特性的目的是将长prompt request分解成更小的块,并在多个forward step中进行调度,只有最后一块的forward完成后才开始这个prompt request的生成。将短prompt request组合以精确填充step的空隙,每个step的计算量基本相等,达到所有请求平均延迟更稳定的目的。
关键行为:
- 长prompts被分解成更小的块,并在多个迭代中进行调度,只有最后一遍迭代执行输出生成token。
- 构建batch时,一个prefill块和其余槽位用decode填充,降低仅decode组batch的成本。
其优势主要包括:
- 提升效率:通过合理组合长短prompt,保持模型高吞吐量运行。
- 增强一致性:统一前向传递大小,降低延迟波动,使生成频率更稳定。
- 降低时延:通过平衡prefill和decode的计算利用率,降低请求P90_ttft(time to first token)、P90_tpot(time per output token)时延。在短输入、短输出且高并发的场景优势明显。
约束限制
- 该特性不能和PD分离、Prefix Cache、KV Cache量化特性、multi-lora特性同时使用。
- LLama系列、Qwen系列模型支持此特性。
Chunked Prefill参数配置
Chunked Prefill的依赖参数如下表所示。