[PD+DP] Allow PrefillDelayer in disaggregated-prefill mode (#23588)

This commit is contained in:
Byron Hsu
2026-04-23 14:51:16 -07:00
committed by GitHub
parent 2882a136bf
commit 17210350fd
2 changed files with 22 additions and 19 deletions
@@ -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."
+22 -16
View File
@@ -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 = (