diff --git a/python/sglang/srt/managers/prefill_delayer.py b/python/sglang/srt/managers/prefill_delayer.py index 31c02be29..0b8936a73 100644 --- a/python/sglang/srt/managers/prefill_delayer.py +++ b/python/sglang/srt/managers/prefill_delayer.py @@ -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." diff --git a/python/sglang/srt/managers/scheduler.py b/python/sglang/srt/managers/scheduler.py index 8c7c63959..a6916a88b 100644 --- a/python/sglang/srt/managers/scheduler.py +++ b/python/sglang/srt/managers/scheduler.py @@ -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 = (