@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 3adffd5b90
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 10, 10:15 UTC

[Misc] Enable async scheduling by default with spec decoding (#31998)

Signed-off-by: Nick Hill <nickhill123@gmail.com>

Nick Hill committed Jan 9, 2026 at 15:09 UTC 3adffd5b9038c9ea94cb764c5cfe9f67d0207ec8
1 file changed +27 -22
vllm/config/vllm.py
+27 -22
@@ -582,11 +582,8 @@ class VllmConfig:
582 )
583 if self.speculative_config.disable_padded_drafter_batch:
584 raise ValueError(
585 - "async scheduling for EAGLE/MTP kind of speculative "
586 - "decoding is enabled, but disable_padded_drafter_batch=True "
587 - "disable_padded_drafter_batch=True is not supported for "
588 - "this situation now. please set "
589 - "disable_padded_drafter_batch=Fasle"
585 + "Async scheduling is not compatible with "
586 + "disable_padded_drafter_batch=True."
587 )
588 if not executor_supports_async_sched:
589 raise ValueError(
@@ -597,32 +594,40 @@ class VllmConfig:
594 elif self.scheduler_config.async_scheduling is None:
595 # Enable async scheduling unless there is an incompatible option.
596 if self.parallel_config.pipeline_parallel_size > 1:
600 - logger.warning(
597 + logger.warning_once(
598 "Async scheduling is not yet supported with "
602 - "pipeline_parallel_size > 1 and will be disabled."
599 + "pipeline_parallel_size > 1 and will be disabled.",
600 + scope="local",
601 )
602 self.scheduler_config.async_scheduling = False
605 - elif self.speculative_config is not None:
606 - if self.speculative_config.method not in get_args(EagleModelTypes):
607 - logger.warning(
608 - "Async scheduling not supported with %s-based "
609 - "speculative decoding and will be disabled.",
610 - self.speculative_config.method,
611 - )
612 - else:
613 - logger.warning(
614 - "Async scheduling will be disabled because some features do "
615 - "not currently work in conjunction with speculative decoding. "
616 - "To use async scheduling with spec decoding anyway, "
617 - "enable it explicitly via async_scheduling=True."
618 - )
603 + elif (
604 + self.speculative_config is not None
605 + and self.speculative_config.method not in get_args(EagleModelTypes)
606 + ):
607 + logger.warning_once(
608 + "Async scheduling not supported with %s-based "
609 + "speculative decoding and will be disabled.",
610 + self.speculative_config.method,
611 + scope="local",
612 + )
613 + self.scheduler_config.async_scheduling = False
614 + elif (
615 + self.speculative_config is not None
616 + and self.speculative_config.disable_padded_drafter_batch
617 + ):
618 + logger.warning_once(
619 + "Async scheduling is not compatible with "
620 + "disable_padded_drafter_batch=True and will be disabled.",
621 + scope="local",
622 + )
623 self.scheduler_config.async_scheduling = False
624 elif not executor_supports_async_sched:
621 - logger.warning(
625 + logger.warning_once(
626 "Async scheduling will be disabled because it is not supported "
627 "with the `%s` distributed executor backend (only `mp`, `uni`, and "
628 "`external_launcher` are supported).",
629 executor_backend,
630 + scope="local",
631 )
632 self.scheduler_config.async_scheduling = False
633 else: