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: