[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.skip_first_delayer = True
assert (
server_args.disaggregation_mode == "null"
), "To use PrefillDelayer, disaggregation_mode must be null."
assert (
not server_args.disable_overlap_schedule
), "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.max_prefill_bs: int = 0
if self.server_args.enable_prefill_delayer:
self.prefill_delayer = PrefillDelayer(
dp_size=self.dp_size,
attn_tp_size=self.attn_tp_size,
cpu_group=self.tp_cpu_group,
server_args=self.server_args,
metrics_collector=(
self.metrics_collector if self.enable_metrics else None
),
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"
),
)
if self.server_args.disaggregation_mode == "decode":
logger.info(
"Ignoring --enable-prefill-delayer on decode engine "
"(no prefill scheduling path; delayer would be a no-op)."
)
else:
self.prefill_delayer = PrefillDelayer(
dp_size=self.dp_size,
attn_tp_size=self.attn_tp_size,
cpu_group=self.tp_cpu_group,
server_args=self.server_args,
metrics_collector=(
self.metrics_collector if self.enable_metrics else None
),
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.
self.enable_priority_preemption = (