diff --git a/vllm/v1/worker/gpu/spec_decode/dflash/utils.py b/vllm/v1/worker/gpu/spec_decode/dflash/utils.py index 1c371a65caca..da46b90cb149 100644 --- a/vllm/v1/worker/gpu/spec_decode/dflash/utils.py +++ b/vllm/v1/worker/gpu/spec_decode/dflash/utils.py @@ -26,7 +26,13 @@ def load_dflash_model(target_model: nn.Module, vllm_config: VllmConfig) -> nn.Mo draft_vllm_config = replace( vllm_config, attention_config=replace( - vllm_config.attention_config, use_non_causal=not causal + vllm_config.attention_config, + use_non_causal=not causal, + # Honor the speculative-config attention backend for the draft + # (matches llm_base_proposer): otherwise auto-select picks + # FlashInfer, which downgrades the spec-decode cudagraph to + # PIECEWISE and cannot do non-causal prefill under DCP. + backend=speculative_config.attention_backend, ), ) with set_model_tag("dflash_head"):