Summary
A/B the DSpark speculative depth for the DeepSeek cycle profiles: k=7 vs the current k=5. Speculative decoding is the only mechanism that amortises the ~87 per-step allreduce latency on this topology (more draft tokens per forward pass = fewer collectives per output token), so a higher k that keeps acceptance high directly raises decode throughput. The AICAD TP4 production deployment runs DSpark at k=7 static (no ladder) with a smoothly decaying acceptance curve (0.94/0.86/0.77/0.69/0.61/0.49/0.35); SparkRing ships k=5.
Evidence
- AICAD production config (same 0731 DSpark checkpoint, 4× DGX Spark):
dspark k=7 静态(无 ladder), acceptance 0.94…0.35 smooth decay — see config/production-nccl-env.md in https://github.com/luxingcom/aicad-nccl-optimization.
- Their analysis: decode is latency-bound on ~87 small allreduces/step; wider speculation is the "already working" mechanism that enlarges each collective and dilutes per-step latency.
- SparkRing's current Mean acceptance length on the deployed cycle is ~3.23 at k=5 (measured 2026-09-03). If k=7 holds a comparable per-position acceptance curve, decode could gain roughly +10–30% (7 vs 5 draft slots × preserved acceptance).
Current state in sparkring
- DeepSeek env templates:
NUM_SPECULATIVE_TOKENS=5.
--speculative-config '{"method":"dspark","num_speculative_tokens":5,"moe_backend":"b12x"}'.
Proposed change
Pure configuration A/B — no code change:
- Set
NUM_SPECULATIVE_TOKENS=7 in all four cycle rank envs and relaunch.
- First verify the checkpoint/image accepts k=7: the 0731 DSpark checkpoint's
dspark_block_size is 5 (k<5 silently truncates; the constraint above 5 must be checked on the sparkring 0.27 image — the AICAD lane ran k=7 on vLLM 0.26, so it is feasible on this checkpoint).
- Measure Mean acceptance length + decode c1/c4/c8 before/after (nonce-fronted, same benchmark).
If k=7 is rejected at startup, fall back to testing a k-ladder (e.g. 5,7) or k=6.
Reference
Risks / notes
- Zero code risk; one relaunch per arm.
- Watch startup logs for a dspark block-size rejection before benchmarking.
- Keep decode benchmarks nonce-fronted so prefix caching cannot inflate numbers.
Verification
- Startup succeeds at k=7; log shows speculative depth 7.
- Mean acceptance length and decode c1/c4/c8 aggregate at k=7 vs k=5 (same benchmark script, ≥3 reps each).
- If acceptance per position does not decay meaningfully at k=7, promote; otherwise revert to k=5.
Summary
A/B the DSpark speculative depth for the DeepSeek cycle profiles: k=7 vs the current k=5. Speculative decoding is the only mechanism that amortises the ~87 per-step allreduce latency on this topology (more draft tokens per forward pass = fewer collectives per output token), so a higher k that keeps acceptance high directly raises decode throughput. The AICAD TP4 production deployment runs DSpark at k=7 static (no ladder) with a smoothly decaying acceptance curve (0.94/0.86/0.77/0.69/0.61/0.49/0.35); SparkRing ships k=5.
Evidence
dspark k=7 静态(无 ladder), acceptance 0.94…0.35 smooth decay — seeconfig/production-nccl-env.mdin https://github.com/luxingcom/aicad-nccl-optimization.Current state in sparkring
NUM_SPECULATIVE_TOKENS=5.--speculative-config '{"method":"dspark","num_speculative_tokens":5,"moe_backend":"b12x"}'.Proposed change
Pure configuration A/B — no code change:
NUM_SPECULATIVE_TOKENS=7in all four cycle rank envs and relaunch.dspark_block_sizeis 5 (k<5 silently truncates; the constraint above 5 must be checked on the sparkring 0.27 image — the AICAD lane ran k=7 on vLLM 0.26, so it is feasible on this checkpoint).If k=7 is rejected at startup, fall back to testing a k-ladder (e.g.
5,7) or k=6.Reference
config/production-nccl-env.md(dspark k=7, acceptance curve).docs/DEEPSEEK_V4_FLASH_QUICKSTART.md).Risks / notes
Verification