deepseek-ai/DeepSeek-V4-Pro-DSpark nvidia/DeepSeek-V4-Pro-nvfp4-DSpark header-only analysis · 2026-09-03

DSpark Parameter Ledger

A tensor-level accounting of the DSpark speculative-decoding drafter shipped with DeepSeek-V4-Pro, derived entirely from safetensors headers — no weights downloaded. The drafter is bit-identical in both checkpoints; only the quantization bookkeeping differs, which is exactly where NVIDIA's headline “82B” comes from.

Logical parameters
77.50 B
77,498,408,103 · both checkpoints
Stored elements, NVIDIA
82.25 B
weights + NVFP4 scales — the model-card “82B”
Structure
3 MTP blocks
mtp.0 / mtp.1 / mtp.2 · block size 5
Share in routed experts
98.2 %
3 × 384 experts · 6 active per token

Architecture

A semi-autoregressive draft head: hidden states from three target layers are fused once, run through three full MoE transformer blocks, and decoded by a factorized rank-512 Markov head instead of a dense lm_head. The vocabulary embedding is shared with the target model — the drafter stores no vocab tables of its own.

input target hidden states, layers 58 / 59 / 60 → concat 3 × 7168 = 21504
▼
25,891,397,174
mtp.0
  • main_proj 7168 × 21504 + main_norm154.1 M
  • MLA attention299.9 M
  • MoE · 384 routed + 1 shared + gate25.44 B
25,737,249,334
mtp.1
  • MLA attention299.9 M
  • MoE · 384 routed + 1 shared + gate25.44 B
  • — no block-unique components —
25,869,761,595
mtp.2
  • MLA attention299.9 M
  • MoE · 384 routed + 1 shared + gate25.44 B
  • Markov head 2 × 129280 × 512132.4 M
  • confidence head + final norm14.8 K
▼
output block of 5 draft tokens per step · rank-512 Markov factorization over the 129,280-token vocab · per-position acceptance confidence
dspark_block_size 5 dspark_markov_rank 512 dspark_target_layer_ids [58, 59, 60] dspark_noise_token_id 128799 hidden_size 7168 moe_intermediate_size 3072 n_routed_experts 384 num_experts_per_tok 6 n_shared_experts 1

The plain middle block is the one that's easy to lose in scripted counts: mtp.0 is distinctive (it carries main_proj) and mtp.2 is distinctive (it carries the heads), while mtp.1 has no unique tensor patterns. Dropping it understates the drafter by exactly 25,737,249,334 parameters.

Where the parameters live

Routed experts dominate at 98.2%. The lower bar magnifies the remaining 1.80% — 1.397B parameters — so the smaller components are visible at all.

Drafter composition — 77,498,408,103 logical parameters
Both checkpoints; fp4 expert weights unpacked (2 per stored byte). Hover a segment for exact counts.

Full drafter

Remainder, magnified — 1,396,956,327 parameters (1.80%)

Full breakdown, both checkpoints

Weights are logical parameters and match to the element between the two repos (NVIDIA's card confirms the head was taken from DeepSeek's release unmodified, cast MXFP4 → NVFP4 bit-exact). Scale columns are the quantization metadata elements each format stores alongside them.

Block type Weights (both) NV scales NV total DS scales DS total % wts
MoE routed experts 3 × 384 · w1/w2/w3 · fp4 76,101,451,7764,756,347,64880,857,799,424 2,378,170,36878,479,622,14498.20
Attention (MLA) wq_a/b · wkv · wo_a/b · norms · sink 899,684,73654,912899,739,648 54,912899,739,6481.16
MoE shared experts 3 × 1 · w1/w2/w3 · fp8 198,180,86412,096198,192,960 12,096198,192,9600.26
Input fusion main_proj 7168×21504 + main_norm 154,147,8409,408154,157,248 9,408154,157,2480.20
Markov head 2 × 129280×512 · bf16 132,382,7200132,382,720 0132,382,7200.17
MoE routers 3 × 384×7168 + bias 8,258,68808,258,688 08,258,6880.011
Hyper-connections hc_attn / hc_ffn / hc_head 4,243,62304,243,623 04,243,6230.005
Block norms attn_norm · ffn_norm · final 50,176050,176 050,176—
Confidence head 1 × 7680 7,68007,680 07,680—
Total 77,498,408,1034,756,424,06482,254,832,167 2,378,246,78479,876,654,887100

NV = nvidia/DeepSeek-V4-Pro-nvfp4-DSpark (drafter in the dedicated shard model-dspark-mtp.safetensors, 13,921 tensors, 41.31 GiB). DS = deepseek-ai/DeepSeek-V4-Pro-DSpark (shards 64–66, 7,009 tensors, 39.10 GiB). Expert weights are stored fp4-packed two-per-byte (U8 / I8, last dim halved) and are unpacked in the weight column.

Placement across the three blocks

The blocks are not uniform: fusion enters at mtp.0, the output heads sit on mtp.2.

Block typemtp.0mtp.1mtp.2
MoE routed experts25,367,150,59225,367,150,59225,367,150,592
Attention (MLA)299,894,912299,894,912299,894,912
MoE shared expert66,060,28866,060,28866,060,288
Input fusion154,147,840——
Markov head——132,382,720
MoE router (gate)2,752,8962,752,8962,752,896
Hyper-connections1,376,3101,376,3101,491,003
Block norms14,33614,33621,504
Confidence head——7,680
Block total25,891,397,17425,737,249,33425,869,761,595

Per-block MLA composition: wq_a 1536×7168 · wq_b 65536×1536 · wkv 512×7168 · wo_a 16384×4096 · wo_b 7168×16384 + q/kv norms and attention sink. Per routed expert: 3 × 3072×7168 = 66,060,288.

Tensor-level structure

Every distinct tensor pattern in the drafter, straight from the safetensors headers (block and expert indices collapsed to N). Weight tensors are identical between the two checkpoints; only the expert scale tensors differ. Note that hc_*_scale tensors are learned fp32 hyper-connection scalars — weights, not quantization scales; the scale suffix that marks quantization metadata is the .scale name component.

Weight tensors · 33 patterns · 77,498,408,103 logical params · identical in both checkpoints
tensor patterndtypeshape (stored)tensorslogical params
mtp.N.attn.wq_a.weightF8_E4M31536 × 7168333,030,144
mtp.N.attn.wq_b.weightF8_E4M365536 × 15363301,989,888
mtp.N.attn.wkv.weightF8_E4M3512 × 7168311,010,048
mtp.N.attn.wo_a.weightF8_E4M316384 × 40963201,326,592
mtp.N.attn.wo_b.weightF8_E4M37168 × 163843352,321,536
mtp.N.attn.q_norm.weightBF16153634,608
mtp.N.attn.kv_norm.weightBF1651231,536
mtp.N.attn.attn_sinkF321283384
mtp.N.ffn.experts.N.w1.weightI8 / U8 (fp4 ×2)3072 × 35841,15225,367,150,592
mtp.N.ffn.experts.N.w2.weightI8 / U8 (fp4 ×2)7168 × 15361,15225,367,150,592
mtp.N.ffn.experts.N.w3.weightI8 / U8 (fp4 ×2)3072 × 35841,15225,367,150,592
mtp.N.ffn.shared_experts.w1.weightF8_E4M33072 × 7168366,060,288
mtp.N.ffn.shared_experts.w2.weightF8_E4M37168 × 3072366,060,288
mtp.N.ffn.shared_experts.w3.weightF8_E4M33072 × 7168366,060,288
mtp.N.ffn.gate.weightBF16384 × 716838,257,536
mtp.N.ffn.gate.biasF3238431,152
mtp.N.main_proj.weightF8_E4M37168 × 215041154,140,672
mtp.N.main_norm.weightBF16716817,168
mtp.N.markov_head.markov_w1.weightBF16129280 × 512166,191,360
mtp.N.markov_head.markov_w2.weightBF16129280 × 512166,191,360
mtp.N.confidence_head.proj.weightBF161 × 768017,680
mtp.N.hc_attn_fnF3224 × 2867232,064,384
mtp.N.hc_attn_baseF3224372
mtp.N.hc_attn_scaleF32339
mtp.N.hc_ffn_fnF3224 × 2867232,064,384
mtp.N.hc_ffn_baseF3224372
mtp.N.hc_ffn_scaleF32339
mtp.N.hc_head_fnF324 × 286721114,688
mtp.N.hc_head_baseF32414
mtp.N.hc_head_scaleF32111
mtp.N.attn_norm.weightBF167168321,504
mtp.N.ffn_norm.weightBF167168321,504
mtp.N.norm.weightBF16716817,168
Total weights3,52877,498,408,103

Expert weights are stored fp4-packed two per byte (I8 in the DeepSeek checkpoint, U8 in NVIDIA's; stored last dim is half the logical 7168 / 3072); the params column is unpacked. 1,152 tensors = 3 blocks × 384 experts.

Quantization scale tensors · NV 4,756,424,064 elements · DS 2,378,246,784 — the only difference between checkpoints
tensor patterncheckpointdtypeshapetensorselements
mtp.N.attn.wq_a.scalebothF8_E8M012 × 5632,016
mtp.N.attn.wq_b.scalebothF8_E8M0512 × 12318,432
mtp.N.attn.wkv.scalebothF8_E8M04 × 563672
mtp.N.attn.wo_a.scalebothF8_E8M0128 × 32312,288
mtp.N.attn.wo_b.scalebothF8_E8M056 × 128321,504
mtp.N.ffn.shared_experts.w1.scalebothF8_E8M024 × 5634,032
mtp.N.ffn.shared_experts.w2.scalebothF8_E8M056 × 2434,032
mtp.N.ffn.shared_experts.w3.scalebothF8_E8M024 × 5634,032
mtp.N.main_proj.scalebothF8_E8M056 × 16819,408
mtp.N.ffn.experts.N.w1.scaleDSF8_E8M03072 × 2241,152792,723,456
mtp.N.ffn.experts.N.w2.scaleDSF8_E8M07168 × 961,152792,723,456
mtp.N.ffn.experts.N.w3.scaleDSF8_E8M03072 × 2241,152792,723,456
mtp.N.ffn.experts.N.w1.weight_scaleNVF8_E4M33072 × 4481,1521,585,446,912
mtp.N.ffn.experts.N.w2.weight_scaleNVF8_E4M37168 × 1921,1521,585,446,912
mtp.N.ffn.experts.N.w3.weight_scaleNVF8_E4M33072 × 4481,1521,585,446,912
mtp.N.ffn.experts.N.w{1,2,3}.weight_scale_2NVF32scalar3,4563,456
mtp.N.ffn.experts.N.w{1,2,3}.input_scaleNVF32scalar3,4563,456
Total scale elementsNV 10,393 / DS 3,481*NV 4,756,424,064 · DS 2,378,246,784

Shared rows are the fp8 linears' 128 × 128 block scales (weight_block_size: [128, 128], ue8m0), identical in both checkpoints: 76,416 elements. Expert scales differ: DeepSeek's MXFP4 stores one power-of-two E8M0 scale per group of 32 weights; NVIDIA's NVFP4 stores one E4M3 scale per group of 16 plus per-tensor fp32 weight_scale_2 and input_scale. *Tensor counts per checkpoint: 3,528 weight tensors in each; scale tensors are DS 3,481 (of 7,009 total) and NV 10,393 (of 13,921).

Reconciling NVIDIA's “82B”

The model card counts every element stored in the drafter shard, quantization scales included. NVFP4's group-16 scheme stores one fp8 scale per 16 fp4 weights plus per-tensor fp32 scales — a ~6% overhead that gets folded into the headline number:

77,498,408,103 weights  +  4,756,424,064 NVFP4 scale elements  =  82,254,832,167  ≈  “82B”

The same convention applied to DeepSeek's own fp8/MXFP4 checkpoint yields 79,876,654,887 — a different “total” for bit-identical weights, which is how you can tell it's a counting convention rather than extra parameters. DeepSeek's card publishes no drafter count. Activated per decode step: ~2.5B (per block: MLA 299.9M + shared 66.1M + 6 of 384 routed experts ≈ 396.4M + gate, ×3, plus fusion and heads) — consistent with the card's “approximately 2.4B activated”.

Quantization bookkeeping, side by side

NVIDIA · NVFP4

nvidia/DeepSeek-V4-Pro-nvfp4-DSpark
  • Expert scalesgroup-16 · F8_E4M3 + fp32
  • Scale tensors per expert matrixweight_scale · weight_scale_2 · input_scale
  • Scale elements4,756,424,064
  • Drafter tensors13,921 · one shard
  • Drafter on disk41.31 GiB
  • All-elements “total”82,254,832,167

DeepSeek · fp8 + MXFP4

deepseek-ai/DeepSeek-V4-Pro-DSpark
  • Expert scalesgroup-32 · F8_E8M0
  • Scale tensors per expert matrixscale
  • Scale elements2,378,246,784
  • Drafter tensors7,009 · shards 64–66
  • Drafter on disk39.10 GiB
  • All-elements “total”79,876,654,887

Non-expert linears in both checkpoints are fp8 (E4M3) with identical 128×128 block scales; only the routed-expert format differs. NVIDIA states the experts were losslessly cast from MXFP4 to NVFP4, bit-exact.

Shard layout

How each checkpoint packages the same model, from model.safetensors.index.json. Both use one target layer per shard; they differ only in where the drafter lives.

DeepSeek · 66 shards

deepseek-ai/DeepSeek-V4-Pro-DSpark
  • shard 1embed · 1 tensor
  • shards 2–62layers.0 – layers.60 · one per shard
  • shard 63head · final norm · hc_head_* · 5 tensors
  • shard 64mtp.0 · 2,336 tensors
  • shard 65mtp.1 · 2,333 tensors
  • shard 66mtp.2 · 2,340 tensors

NVIDIA · 63 + 1 shards

nvidia/DeepSeek-V4-Pro-nvfp4-DSpark
  • shard 1embed · 1 tensor
  • shards 2–62layers.0 – layers.60 · one per shard
  • shard 63head · final norm · hc_head_* · 5 tensors
  • model-dspark-mtp.safetensorsmtp.0 – mtp.2 · 13,921 tensors

The one-drafter-block-per-shard split in the DeepSeek repo (shards 64–66) is why a per-shard count catches a dropped mtp.1 immediately; NVIDIA's single dedicated drafter shard makes the drafter separable from the NVFP4 target without touching the other 63 files.

Methodology

All figures were derived without downloading tensor data: the HF API file listing, config.json, model.safetensors.index.json, and the safetensors headers of the drafter shards fetched via HTTP range requests (8-byte length prefix + JSON header, which carries every tensor's dtype and shape). The drafter is every tensor under the mtp.* prefix. Packed-fp4 expert weights (U8/I8) count as two parameters per stored byte; “scale elements” are all tensors named *scale*. Analysis date 2026-09-03; DS revision 7c09739. Drafter-to-target ratio: 77.50B ÷ 1,598.8B target = 4.85%. Every figure on this page is reproduced by a stdlib-only audit script, dspark_drafter_params.py (in the DeepSeek-evaluations folder), which re-fetches the headers and prints these tables — -s adds the shard layout, -d the tensor-level structure — with built-in cross-checks (DS ≡ NV logical weights; block totals sum to the grand total).