Skip to content

[Feature]: Support NVFP4 DeepSeek-V4-Flash-0731 with FP4 KV cache + DSpark speculative decoding on SM121 (DGX Spark) #52447

Description

@DamirLisak

🚀 The feature, motivation and pitch

Summary

Requesting first-class support for serving NVFP4 DeepSeek-V4-Flash-0731 checkpoints (e.g. Rarri/DeepSeek-V4-Flash-0731-NVFP4) with FP4 KV cache (nvfp4 / nvfp4_ds_mla) and DSpark speculative decoding on SM121 (NVIDIA GB10 / DGX Spark, 2-node TP=2).

Today this combination does not work on vLLM main. We currently run it on a fork of jasl's branch (PR #41834) which serves the NVFP4 checkpoint but cannot do DSpark speculative decoding with it (draft loader fails with KeyError: 'layers.0.ffn.experts.routed_experts.w13_input_scale'). vLLM main v0.27.1 fails earlier at startup on SM121 with the DeepGEMM "Unknown SF transformation" error (see #51884).

Environment

  • Hardware: 2× NVIDIA DGX Spark (GB10), compute capability 12.1 / SM121, Linux ARM64, two-node TP=2
  • Model (NVFP4): Rarri/DeepSeek-V4-Flash-0731-NVFP4
    • ModelOpt mixed-precision conversion: producer: dsv4-nvfp4-experts-mtp-fallback
    • quant_method: fp8, quant_algo: MIXED_PRECISION, moe_quant_algo: NVFP4, group_size: 16, format: e4m3
  • Model (FP8): deepseek-ai/DeepSeek-V4-Flash-0731
  • vLLM versions tested:
  • KV cache dtypes: fp8, fp8_ds_mla, nvfp4, nvfp4_ds_mla
  • Speculative decoding: DSpark, 5 speculative tokens, --speculative-config '{"method":"dspark","num_speculative_tokens":5,"draft_sample_method":"probabilistic"}'
  • Serving config: --gpu-memory-utilization 0.85, --block-size 256, MTP_NUM_TOKENS=5, MAX_MODEL_LEN=131072, MAX_NUM_SEQS=4

What we want

  1. Serve the NVFP4 DeepSeek-V4-Flash-0731 checkpoint on SM121 with FP4 KV cache (nvfp4 / nvfp4_ds_mla).
  2. Enable DSpark speculative decoding on top of that NVFP4 target (MTP draft), without the draft loader failing on missing NVFP4 scale tensors.
  3. Have the DSpark draft built under its own model/quant config so an NVFP4 target does not corrupt the MXFP4 draft experts (see abandoned PR [Bugfix][Spec Decode] DSpark: build draft under its own model/quant config (NVFP4 target corrupts MXFP4 draft experts) #49133).

What fails today

On vLLM main (v0.27.1, official vllm/vllm-openai:v0.27.1-aarch64-cu129)

Startup fails on SM121 with the DeepGEMM scale-layout error:

RuntimeError: Assertion error (/workspace/.deps/deepgemm-src/csrc/apis/layout.hpp:60): Unknown SF transformation

This is the same class of failure as #51884 / #51758 (DeepGEMM SM120/121 regression). Full report: #51884.

On jasl's fork (PR #41834) — NVFP4 serves, but DSpark fails

The NVFP4 checkpoint loads and serves, but enabling DSpark fails during draft weight loading:

KeyError: 'layers.0.ffn.experts.routed_experts.w13_input_scale'

The draft loader expects a scale tensor that is absent from the NVFP4 draft params, so speculative decoding cannot be enabled for the NVFP4 target.

Related issues / PRs

Request

Please add/validate end-to-end support for NVFP4 DeepSeek-V4-Flash-0731 + FP4 KV cache + DSpark speculative decoding on SM121, including:

Happy to test any branch / provide logs.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions