SplitFuse特性介绍
SplitFuse特性的目的是将长prompt request分解成更小的块,并在多个forward step中进行调度,只有最后一块的forward完成后才开始这个prompt request的生成。将短prompt request组合以精确填充step的空隙,每个step的计算量基本相等,达到所有请求平均延迟更稳定的目的。
两个关键行为:
其优势主要包括:
限制与约束
Atlas 800I A2 推理产品 硬件支持此特性。- LLaMa3.1-70b浮点模型和Qwen2-72B浮点模型支持对接此特性。
- 该特性不能和PD分离、Multi-LoRA、并行解码、Prefix Cache、多机推理和长序列特性同时使用。
- 该特性暂不支持与量化特性同时使用。
- 该特性暂不支持python组图。
- SplitFuse暂不支持以下后处理模式:
- 忽略结束符继续推理。
- 遇到stop词时答案是否包含stop词。
- 回答是否跳过特殊token。
- 推理在特定字符串停止。
- 推理在特定token_id停止。
配置项 |
取值类型 |
取值范围 |
配置说明 |
---|---|---|---|
templateType |
std::string |
"Standard"或"Mix" |
"Mix"为prefill和decode可一起组batch。 "Standard"为默认值(特性不开启时为必填项),表示prefill和decode各自分别组batch。 |
policyType |
uint32_t |
|
建议:一般使用FCFS策略;对于追求极限吞吐的场景建议使用SJF,但是可能会导致长输入等待时间大幅增长;对于希望在吞吐和长输入等待取平衡的使用场景,建议使用Skip-Join MLFQ或SJF-MLFQ策略。 |
enableSplit |
bool |
|
约束:开启时templateType必须为Mix(特性不开启时非必填项)。 |
splitType |
bool |
|
默认值:false。 |
splitStartType |
bool |
|
默认值:false。 |
splitChunkTokens |
uint32_t |
>=1 |
当前参与组batch的总token个数。 默认值:512,建议不低于512。 |
splitStartBatchSize |
uint32_t |
[0,maxBatchSize] |
当batch数达到该值时开启切分。 默认值:16。 |
父主题: 特性介绍