From a7983f0550ae38c82bad943aadf37d883e15e9b7 Mon Sep 17 00:00:00 2001 From: yyzxw <1020938856@qq.com> Date: Thu, 18 Sep 2025 14:41:43 +0800 Subject: [PATCH 1/2] fix: speculative-config-parse-error (#24888) Signed-off-by: zxw <1020938856@qq.com> --- vllm/engine/arg_utils.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/vllm/engine/arg_utils.py b/vllm/engine/arg_utils.py index 8c7a1b413cdb..e1699d4e14cf 100644 --- a/vllm/engine/arg_utils.py +++ b/vllm/engine/arg_utils.py @@ -1463,12 +1463,17 @@ def _is_v1_supported_oracle(self, model_config: ModelConfig) -> bool: return False # V1 supports N-gram, Medusa, and Eagle speculative decoding. - if (self.speculative_config is not None - and self.speculative_config.get("method") == "draft_model"): - raise NotImplementedError( - "Speculative decoding with draft model is not supported yet. " - "Please consider using other speculative decoding methods " - "such as ngram, medusa, eagle, or deepseek_mtp.") + if self.speculative_config is not None: + if isinstance(self.speculative_config, dict): + method = self.speculative_config.get("method") + else: + method = getattr(self.speculative_config, "method", None) + + if method == "draft_model": + raise NotImplementedError( + "Draft model speculative decoding is not supported yet. " + "Please consider using other speculative decoding methods " + "such as ngram, medusa, eagle, or deepseek_mtp.") V1_BACKENDS = [ "FLASH_ATTN_VLLM_V1", From 9b510f5f4bdebee8b60009726110d1823551023d Mon Sep 17 00:00:00 2001 From: Harry Mellor <19981378+hmellor@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:57:34 +0100 Subject: [PATCH 2/2] Don't assume the dict will always have `method` Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com> --- vllm/engine/arg_utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vllm/engine/arg_utils.py b/vllm/engine/arg_utils.py index e1699d4e14cf..a9c3a80a9c82 100644 --- a/vllm/engine/arg_utils.py +++ b/vllm/engine/arg_utils.py @@ -1464,10 +1464,11 @@ def _is_v1_supported_oracle(self, model_config: ModelConfig) -> bool: # V1 supports N-gram, Medusa, and Eagle speculative decoding. if self.speculative_config is not None: + # speculative_config could still be a dict at this point if isinstance(self.speculative_config, dict): - method = self.speculative_config.get("method") + method = self.speculative_config.get("method", None) else: - method = getattr(self.speculative_config, "method", None) + method = self.speculative_config.method if method == "draft_model": raise NotImplementedError(