[PD+DP] Allow PrefillDelayer in disaggregated-prefill mode (#23588)
This commit is contained in:
@@ -70,9 +70,6 @@ class PrefillDelayer:
|
|||||||
self._curr_state: Optional[_State] = None
|
self._curr_state: Optional[_State] = None
|
||||||
self.skip_first_delayer = True
|
self.skip_first_delayer = True
|
||||||
|
|
||||||
assert (
|
|
||||||
server_args.disaggregation_mode == "null"
|
|
||||||
), "To use PrefillDelayer, disaggregation_mode must be null."
|
|
||||||
assert (
|
assert (
|
||||||
not server_args.disable_overlap_schedule
|
not server_args.disable_overlap_schedule
|
||||||
), "To use PrefillDelayer, disable_overlap_schedule must be False."
|
), "To use PrefillDelayer, disable_overlap_schedule must be False."
|
||||||
|
|||||||
@@ -982,22 +982,28 @@ class Scheduler(
|
|||||||
self.prefill_delayer: Optional[PrefillDelayer] = None
|
self.prefill_delayer: Optional[PrefillDelayer] = None
|
||||||
self.max_prefill_bs: int = 0
|
self.max_prefill_bs: int = 0
|
||||||
if self.server_args.enable_prefill_delayer:
|
if self.server_args.enable_prefill_delayer:
|
||||||
self.prefill_delayer = PrefillDelayer(
|
if self.server_args.disaggregation_mode == "decode":
|
||||||
dp_size=self.dp_size,
|
logger.info(
|
||||||
attn_tp_size=self.attn_tp_size,
|
"Ignoring --enable-prefill-delayer on decode engine "
|
||||||
cpu_group=self.tp_cpu_group,
|
"(no prefill scheduling path; delayer would be a no-op)."
|
||||||
server_args=self.server_args,
|
)
|
||||||
metrics_collector=(
|
else:
|
||||||
self.metrics_collector if self.enable_metrics else None
|
self.prefill_delayer = PrefillDelayer(
|
||||||
),
|
dp_size=self.dp_size,
|
||||||
max_delay_passes=self.server_args.prefill_delayer_max_delay_passes,
|
attn_tp_size=self.attn_tp_size,
|
||||||
token_usage_low_watermark=self.server_args.prefill_delayer_token_usage_low_watermark,
|
cpu_group=self.tp_cpu_group,
|
||||||
device=(
|
server_args=self.server_args,
|
||||||
self.tp_group.device
|
metrics_collector=(
|
||||||
if self.server_args.disable_overlap_schedule
|
self.metrics_collector if self.enable_metrics else None
|
||||||
else "cpu"
|
),
|
||||||
),
|
max_delay_passes=self.server_args.prefill_delayer_max_delay_passes,
|
||||||
)
|
token_usage_low_watermark=self.server_args.prefill_delayer_token_usage_low_watermark,
|
||||||
|
device=(
|
||||||
|
self.tp_group.device
|
||||||
|
if self.server_args.disable_overlap_schedule
|
||||||
|
else "cpu"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
# NOTE: preemption is enabled by default for priority scheduling.
|
# NOTE: preemption is enabled by default for priority scheduling.
|
||||||
self.enable_priority_preemption = (
|
self.enable_priority_preemption = (
|
||||||
|
|||||||
Reference in New Issue
Block a user