{"record":{"id":"42d0b9dfc54dd3e6","repo":"vllm-project/vllm","slug":"dspark-draft-topk-is-only-supported-by-qwen3dspark","errorCode":null,"errorMessage":"dspark_draft_topk is only supported by Qwen3DSparkModel","messagePattern":"dspark_draft_topk is only supported by Qwen3DSparkModel","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/config/speculative.py","lineNumber":1114,"sourceCode":"                    if dspark_draft_topk is None:\n                        dspark_draft_topk = getattr(\n                            hf_config, \"dspark_draft_topk\", None\n                        )\n                    if dspark_draft_topk is not None:\n                        draft_vocab_size = (\n                            getattr(hf_config, \"draft_vocab_size\", None)\n                            or hf_config.vocab_size\n                        )\n                        if not 1 <= dspark_draft_topk <= draft_vocab_size:\n                            raise ValueError(\n                                \"dspark_draft_topk must be between 1 and the \"\n                                f\"draft vocabulary size ({draft_vocab_size})\"\n                            )\n                        if (\n                            \"Qwen3DSparkModel\"\n                            not in self.draft_model_config.architectures\n                        ):\n                            raise ValueError(\n                                \"dspark_draft_topk is only supported by \"\n                                \"Qwen3DSparkModel\"\n                            )\n                        hf_config.dspark_draft_topk = dspark_draft_topk\n\n                self.draft_tensor_parallel_size = (\n                    SpeculativeConfig._verify_and_get_draft_tp(\n                        self.target_parallel_config,\n                        self.draft_tensor_parallel_size,\n                        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                    )","sourceCodeStart":1096,"sourceCodeEnd":1132,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/config/speculative.py#L1096-L1132","documentation":"Raised when dspark_draft_topk is active (user-set or defaulted from hf_config) but the draft model's architectures list does not contain Qwen3DSparkModel. Only the Qwen3DSpark draft head implements the top-k restricted draft vocabulary, so other DSpark drafts reject the option.","triggerScenarios":"speculative_config={'method': 'dspark', 'model': '<non-Qwen3DSpark draft>', 'dspark_draft_topk': 4}; or a K3DSparkModel draft whose checkpoint config carries a leftover dspark_draft_topk field.","commonSituations":"Pointing dspark_draft_topk at a custom/fine-tuned DSpark draft that is not based on Qwen3DSparkModel; config copied from a Qwen3 DSpark deployment and reused with another draft.","solutions":["Remove dspark_draft_topk from the config when the draft is not Qwen3DSparkModel","Switch the draft model to a Qwen3DSparkModel checkpoint to use top-k drafting"],"exampleFix":"# before\nspeculative_config={\"method\": \"dspark\", \"model\": \"my-k3-draft\", \"dspark_draft_topk\": 4}\n# after\nspeculative_config={\"method\": \"dspark\", \"model\": \"my-k3-draft\"}","handlingStrategy":"validation","validationCode":"if topk is not None and \"Qwen3DSparkModel\" not in draft_config.architectures:\n    raise ValueError(\"dspark_draft_topk requires a Qwen3DSparkModel draft\")","typeGuard":"def supports_dspark_topk(draft_architectures: list[str]) -> bool:\n    return \"Qwen3DSparkModel\" in draft_architectures","tryCatchPattern":null,"preventionTips":["Check draft_model_config.architectures from the checkpoint before applying method-specific options","Keep DSpark top-k configs pinned to the Qwen3 DSpark model family in your config registry"],"tags":["speculative-decoding","dspark","topk","architecture-check"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}