{"record":{"id":"8f28205a6ee5641c","repo":"vllm-project/vllm","slug":"async-scheduling-is-not-compatible-with-disable-pa","errorCode":null,"errorMessage":"Async scheduling is not compatible with disable_padded_drafter_batch=True.","messagePattern":"Async scheduling is not compatible with disable_padded_drafter_batch=True\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/config/vllm.py","lineNumber":1176,"sourceCode":"                raise ValueError(\n                    \"Async scheduling is not compatible with ROCm DeepEP \"\n                    \"high-throughput DBO. Please use --no-async-scheduling or \"\n                    \"select a different all2all backend.\"\n                )\n            if self.speculative_config is not None:\n                if (\n                    self.speculative_config.method not in get_args(EagleModelTypes)\n                    and self.speculative_config.method not in get_args(NgramGPUTypes)\n                    and self.speculative_config.method != \"draft_model\"\n                    and self.speculative_config.method != \"dspark\"\n                ):\n                    raise ValueError(\n                        \"Currently, async scheduling is only supported \"\n                        \"with EAGLE/MTP/Draft Model/NGram GPU/DSpark kind of \"\n                        \"speculative decoding\"\n                    )\n                if self.speculative_config.disable_padded_drafter_batch:\n                    raise ValueError(\n                        \"Async scheduling is not compatible with \"\n                        \"disable_padded_drafter_batch=True.\"\n                    )\n            if not executor_supports_async_sched:\n                raise ValueError(\n                    f\"`{executor_backend}` does not support async scheduling yet.\"\n                )\n        elif self.scheduler_config.async_scheduling is None:\n            # Enable async scheduling unless there is an incompatible option.\n            if (\n                self.model_config is not None\n                and self.model_config.runner_type == \"pooling\"\n            ):\n                # The current implementation of asynchronous scheduling negatively\n                # impacts performance of pooling models, so we disable by default.\n                logger.debug(\n                    \"Disabling asynchronous scheduling by default for pooling model.\"\n                )","sourceCodeStart":1158,"sourceCodeEnd":1194,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/config/vllm.py#L1158-L1194","documentation":"Padded drafter batches are an internal invariant of the async scheduling + speculative decoding path. Setting `disable_padded_drafter_batch=True` in the speculative config while async scheduling is explicitly enabled makes the two mechanisms incompatible, so VllmConfig raises this error during validation.","triggerScenarios":"Launching with `--async-scheduling` and a speculative config containing `\"disable_padded_drafter_batch\": true` (e.g. via --speculative-config JSON).","commonSituations":"Users copying a tuned speculative config (where padding was disabled to save compute) into a launch that also enables async scheduling for throughput.","solutions":["Remove `disable_padded_drafter_batch` from the speculative config (let it default to False).","Or disable async scheduling with `--no-async-scheduling` if padded-drafter-batch disabling is more important."],"exampleFix":"# before\n--async-scheduling --speculative-config '{\"method\":\"eagle\",\"model\":\"...\",\"disable_padded_drafter_batch\":true}'\n\n# after\n--async-scheduling --speculative-config '{\"method\":\"eagle\",\"model\":\"...\"}'","handlingStrategy":"validation","validationCode":"if async_scheduling and spec_config.get(\"disable_padded_drafter_batch\"):\n    spec_config.pop(\"disable_padded_drafter_batch\")  # incompatible with async sched","typeGuard":null,"tryCatchPattern":"try:\n    LLM(**args)\nexcept ValueError as e:\n    if \"disable_padded_drafter_batch\" in str(e):\n        args[\"speculative_config\"].pop(\"disable_padded_drafter_batch\", None)\n        LLM(**args)\n    else:\n        raise","preventionTips":["Do not copy tuned speculative configs wholesale into async-scheduling launches","Pre-check speculative_config keys against known incompatibilities"],"tags":["async-scheduling","speculative-decoding","startup-config"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}