{"record":{"id":"4dbdfba4dbeeb686","repo":"vllm-project/vllm","slug":"adaptive-verification-only-supported-with-dspark","errorCode":null,"errorMessage":"Adaptive verification only supported with DSpark","messagePattern":"Adaptive verification only supported with DSpark","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/config/speculative.py","lineNumber":1142,"sourceCode":"                        self.draft_model_config.hf_config,\n                    )\n                )\n                self.draft_model_config.max_model_len = (\n                    SpeculativeConfig._maybe_override_draft_max_model_len(\n                        self.max_model_len,\n                        self.draft_model_config.max_model_len,\n                        self.target_model_config.max_model_len,\n                    )\n                )\n\n                self.draft_parallel_config = (\n                    SpeculativeConfig.create_draft_parallel_config(\n                        self.target_parallel_config, self.draft_tensor_parallel_size\n                    )\n                )\n\n        if self.method != \"dspark\" and self.enable_adaptive_verification:\n            raise ValueError(\"Adaptive verification only supported with DSpark\")\n\n        return self\n\n    def _validate_suffix_decoding(self):\n        if not has_arctic_inference():\n            raise ImportError(\n                \"Arctic Inference is required for suffix decoding. \"\n                \"Install via `pip install arctic-inference==0.1.1`.\"\n            )\n        if self.num_speculative_tokens is None:\n            # Suffix decoding decides the actual number of speculative tokens\n            # dynamically and treats num_speculative_tokens as a maximum limit.\n            self.num_speculative_tokens = self.suffix_decoding_max_tree_depth\n            logger.warning(\n                \"Defaulted num_speculative_tokens to %s for suffix decoding.\",\n                self.num_speculative_tokens,\n            )\n        # Validate values","sourceCodeStart":1124,"sourceCodeEnd":1160,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/config/speculative.py#L1124-L1160","documentation":"Raised at the end of SpeculativeConfig.__post_init__ when enable_adaptive_verification is true but method != 'dspark'. Adaptive verification (dynamically choosing how many draft tokens to verify) is only implemented for the DSpark worker, so enabling it with eagle/ngram/mtp etc. is rejected.","triggerScenarios":"speculative_config={'method': 'eagle', ..., 'enable_adaptive_verification': True} or any non-dspark method with the flag on (also settable via CLI flag).","commonSituations":"Enabling a newly documented adaptive-verification flag on an existing EAGLE deployment; config templates that turn on all new boolean flags by default.","solutions":["Set enable_adaptive_verification=False (or remove it) when using non-dspark methods","Switch method to 'dspark' if adaptive verification is required"],"exampleFix":"# before\nspeculative_config={\"method\": \"eagle\", \"model\": \"...\", \"enable_adaptive_verification\": True}\n# after\nspeculative_config={\"method\": \"eagle\", \"model\": \"...\", \"enable_adaptive_verification\": False}","handlingStrategy":"validation","validationCode":"if spec_cfg.get(\"enable_adaptive_verification\") and spec_cfg.get(\"method\") != \"dspark\":\n    spec_cfg[\"enable_adaptive_verification\"] = False  # or fail fast in strict mode","typeGuard":"def adaptive_verification_allowed(method: str, enabled: bool) -> bool:\n    return not enabled or method == \"dspark\"","tryCatchPattern":null,"preventionTips":["Audit new boolean flags against the method they were introduced for before turning them on globally","Maintain a compatibility matrix (flag x method) in your deployment config tests"],"tags":["speculative-decoding","dspark","adaptive-verification","invalid-combination"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}