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.
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.
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.
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.
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,776 | 4,756,347,648 | 80,857,799,424 | 2,378,170,368 | 78,479,622,144 | 98.20 |
| Attention (MLA) wq_a/b · wkv · wo_a/b · norms · sink | 899,684,736 | 54,912 | 899,739,648 | 54,912 | 899,739,648 | 1.16 |
| MoE shared experts 3 × 1 · w1/w2/w3 · fp8 | 198,180,864 | 12,096 | 198,192,960 | 12,096 | 198,192,960 | 0.26 |
| Input fusion main_proj 7168×21504 + main_norm | 154,147,840 | 9,408 | 154,157,248 | 9,408 | 154,157,248 | 0.20 |
| Markov head 2 × 129280×512 · bf16 | 132,382,720 | 0 | 132,382,720 | 0 | 132,382,720 | 0.17 |
| MoE routers 3 × 384×7168 + bias | 8,258,688 | 0 | 8,258,688 | 0 | 8,258,688 | 0.011 |
| Hyper-connections hc_attn / hc_ffn / hc_head | 4,243,623 | 0 | 4,243,623 | 0 | 4,243,623 | 0.005 |
| Block norms attn_norm · ffn_norm · final | 50,176 | 0 | 50,176 | 0 | 50,176 | — |
| Confidence head 1 × 7680 | 7,680 | 0 | 7,680 | 0 | 7,680 | — |
| Total | 77,498,408,103 | 4,756,424,064 | 82,254,832,167 | 2,378,246,784 | 79,876,654,887 | 100 |
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.
The blocks are not uniform: fusion enters at mtp.0, the output heads sit on mtp.2.
| Block type | mtp.0 | mtp.1 | mtp.2 |
|---|---|---|---|
| MoE routed experts | 25,367,150,592 | 25,367,150,592 | 25,367,150,592 |
| Attention (MLA) | 299,894,912 | 299,894,912 | 299,894,912 |
| MoE shared expert | 66,060,288 | 66,060,288 | 66,060,288 |
| Input fusion | 154,147,840 | — | — |
| Markov head | — | — | 132,382,720 |
| MoE router (gate) | 2,752,896 | 2,752,896 | 2,752,896 |
| Hyper-connections | 1,376,310 | 1,376,310 | 1,491,003 |
| Block norms | 14,336 | 14,336 | 21,504 |
| Confidence head | — | — | 7,680 |
| Block total | 25,891,397,174 | 25,737,249,334 | 25,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.
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.
| tensor pattern | dtype | shape (stored) | tensors | logical params |
|---|---|---|---|---|
| mtp.N.attn.wq_a.weight | F8_E4M3 | 1536 × 7168 | 3 | 33,030,144 |
| mtp.N.attn.wq_b.weight | F8_E4M3 | 65536 × 1536 | 3 | 301,989,888 |
| mtp.N.attn.wkv.weight | F8_E4M3 | 512 × 7168 | 3 | 11,010,048 |
| mtp.N.attn.wo_a.weight | F8_E4M3 | 16384 × 4096 | 3 | 201,326,592 |
| mtp.N.attn.wo_b.weight | F8_E4M3 | 7168 × 16384 | 3 | 352,321,536 |
| mtp.N.attn.q_norm.weight | BF16 | 1536 | 3 | 4,608 |
| mtp.N.attn.kv_norm.weight | BF16 | 512 | 3 | 1,536 |
| mtp.N.attn.attn_sink | F32 | 128 | 3 | 384 |
| mtp.N.ffn.experts.N.w1.weight | I8 / U8 (fp4 ×2) | 3072 × 3584 | 1,152 | 25,367,150,592 |
| mtp.N.ffn.experts.N.w2.weight | I8 / U8 (fp4 ×2) | 7168 × 1536 | 1,152 | 25,367,150,592 |
| mtp.N.ffn.experts.N.w3.weight | I8 / U8 (fp4 ×2) | 3072 × 3584 | 1,152 | 25,367,150,592 |
| mtp.N.ffn.shared_experts.w1.weight | F8_E4M3 | 3072 × 7168 | 3 | 66,060,288 |
| mtp.N.ffn.shared_experts.w2.weight | F8_E4M3 | 7168 × 3072 | 3 | 66,060,288 |
| mtp.N.ffn.shared_experts.w3.weight | F8_E4M3 | 3072 × 7168 | 3 | 66,060,288 |
| mtp.N.ffn.gate.weight | BF16 | 384 × 7168 | 3 | 8,257,536 |
| mtp.N.ffn.gate.bias | F32 | 384 | 3 | 1,152 |
| mtp.N.main_proj.weight | F8_E4M3 | 7168 × 21504 | 1 | 154,140,672 |
| mtp.N.main_norm.weight | BF16 | 7168 | 1 | 7,168 |
| mtp.N.markov_head.markov_w1.weight | BF16 | 129280 × 512 | 1 | 66,191,360 |
| mtp.N.markov_head.markov_w2.weight | BF16 | 129280 × 512 | 1 | 66,191,360 |
| mtp.N.confidence_head.proj.weight | BF16 | 1 × 7680 | 1 | 7,680 |
| mtp.N.hc_attn_fn | F32 | 24 × 28672 | 3 | 2,064,384 |
| mtp.N.hc_attn_base | F32 | 24 | 3 | 72 |
| mtp.N.hc_attn_scale | F32 | 3 | 3 | 9 |
| mtp.N.hc_ffn_fn | F32 | 24 × 28672 | 3 | 2,064,384 |
| mtp.N.hc_ffn_base | F32 | 24 | 3 | 72 |
| mtp.N.hc_ffn_scale | F32 | 3 | 3 | 9 |
| mtp.N.hc_head_fn | F32 | 4 × 28672 | 1 | 114,688 |
| mtp.N.hc_head_base | F32 | 4 | 1 | 4 |
| mtp.N.hc_head_scale | F32 | 1 | 1 | 1 |
| mtp.N.attn_norm.weight | BF16 | 7168 | 3 | 21,504 |
| mtp.N.ffn_norm.weight | BF16 | 7168 | 3 | 21,504 |
| mtp.N.norm.weight | BF16 | 7168 | 1 | 7,168 |
| Total weights | 3,528 | 77,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.
| tensor pattern | checkpoint | dtype | shape | tensors | elements |
|---|---|---|---|---|---|
| mtp.N.attn.wq_a.scale | both | F8_E8M0 | 12 × 56 | 3 | 2,016 |
| mtp.N.attn.wq_b.scale | both | F8_E8M0 | 512 × 12 | 3 | 18,432 |
| mtp.N.attn.wkv.scale | both | F8_E8M0 | 4 × 56 | 3 | 672 |
| mtp.N.attn.wo_a.scale | both | F8_E8M0 | 128 × 32 | 3 | 12,288 |
| mtp.N.attn.wo_b.scale | both | F8_E8M0 | 56 × 128 | 3 | 21,504 |
| mtp.N.ffn.shared_experts.w1.scale | both | F8_E8M0 | 24 × 56 | 3 | 4,032 |
| mtp.N.ffn.shared_experts.w2.scale | both | F8_E8M0 | 56 × 24 | 3 | 4,032 |
| mtp.N.ffn.shared_experts.w3.scale | both | F8_E8M0 | 24 × 56 | 3 | 4,032 |
| mtp.N.main_proj.scale | both | F8_E8M0 | 56 × 168 | 1 | 9,408 |
| mtp.N.ffn.experts.N.w1.scale | DS | F8_E8M0 | 3072 × 224 | 1,152 | 792,723,456 |
| mtp.N.ffn.experts.N.w2.scale | DS | F8_E8M0 | 7168 × 96 | 1,152 | 792,723,456 |
| mtp.N.ffn.experts.N.w3.scale | DS | F8_E8M0 | 3072 × 224 | 1,152 | 792,723,456 |
| mtp.N.ffn.experts.N.w1.weight_scale | NV | F8_E4M3 | 3072 × 448 | 1,152 | 1,585,446,912 |
| mtp.N.ffn.experts.N.w2.weight_scale | NV | F8_E4M3 | 7168 × 192 | 1,152 | 1,585,446,912 |
| mtp.N.ffn.experts.N.w3.weight_scale | NV | F8_E4M3 | 3072 × 448 | 1,152 | 1,585,446,912 |
| mtp.N.ffn.experts.N.w{1,2,3}.weight_scale_2 | NV | F32 | scalar | 3,456 | 3,456 |
| mtp.N.ffn.experts.N.w{1,2,3}.input_scale | NV | F32 | scalar | 3,456 | 3,456 |
| Total scale elements | NV 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).
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:
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”.
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.
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.
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.
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).