main (this revision): the balanced checkpoint (1 epoch). Best all-rounder for agentic coding plus multilingual chat.
epoch1-multilingual-max: the multilingual-max checkpoint (1.8 epochs). Strongest on non-English prose and reasoning, pays for it on English code and math. Load it with revision="epoch1-multilingual-max".
Measured (frozen battery v1, greedy, all three columns measured the same evening on the same DGX Spark, same load state, two-call wall-clock delta)
Workload
Stock drafter
main (balanced)
epoch1-multilingual-max
Math (EN, eval-style)
42.2
39.1
37.1
Code (EN)
30.6
35.6
28.5
Code (DE)
25.4
23.9
29.1
Technical explain (FR)
24.2
25.5
19.9
Reasoning (FR)
30.5
33.9
37.9
Free prose (EN)
16.9
16.7
16.9
Free prose (FR)
14.0
16.3
17.5
Free prose (DE)
13.3
14.3
15.4
Read it honestly: no column dominates. Finetuning a drafter redistributes acceptance along the training mix, it does not create free speed everywhere. The stock drafter keeps the math crown. main buys +16 % on English code and +8 to +16 % on French/German prose at a 7 % math cost. The multilingual-max revision buys +15 to +25 % across non-English cells at a 7 to 12 % cost on English code and math, and loses technical French. Pick by workload; speculative decoding is lossless by construction, so output quality is identical in every case, only speed moves.
Context worth knowing: DFlash2 (z-lab) landed in SGLang main on 2026-08-19 and reports strong gains over stock DSpark on English evals. If your stack can run it, benchmark it against these checkpoints on your own workload; if you are on a pinned DSpark setup today, these are drop-in.
Why
The stock drafter was trained on Open-PerfectBlend: ~78 % English math and code, non-thinking. Acceptance collapses on everything else: free prose sits at 1.5-1.9 accepted tokens per step in any language, and thinking-mode output was never in its distribution. This finetune targets what agent users actually generate: 10 languages, free prose, thinking traces (26 % of the corpus, including xhigh), multi-turn, and tool calls.
Training
Corpus: 18,290 conversations, prompts from license-clean sources (open-perfectblend Apache/MIT, WildChat-1M ODC-BY prompts only, oasst2 Apache, aya Apache, own prompt banks). Every response regenerated on-policy by Qwen3.8-27B itself at the official sampling settings, so the drafter learns the target's true output distribution. Benchmark prompts excluded from the corpus.
Languages: EN 32 %, FR 27 %, DE 11 %, ES 8 %, ZH 7 %, IT/PT/JA/RU/NL the rest. Kinds: chat, replay, prose, technical, code, math, multi-turn, tool-call. 26 % thinking (incl. xhigh).
Method: SpecForge dspark objective, warm start from the RadixArk checkpoint, LR 1e-5 (swept: higher LRs buy prose by destroying code), bf16 target activations (layers 4/16/28/40/52 + final norm), single DGX Spark (GB10). main is the epoch-1 checkpoint; the multilingual-max revision adds a further 0.8 epoch, which kept shifting acceptance toward the multilingual cells.
Serve it
Drop-in replacement for the stock drafter in any SGLang Qwen3.8 setup:
Add --speculative-draft-model-revision epoch1-multilingual-max for the multilingual-max checkpoint.
Full pinned, one-command GB10 setup (config, systemd, benchmark battery): github.com/hasso5703/dgx-spark-qwen38. Speculative decoding is lossless: the target verifies every drafted token, so output quality is unchanged at any temperature.
Credits
Base drafter and method: RadixArk, DSpark paper, SpecForge. Trained and measured on one ASUS Ascent GX10 (DGX Spark, GB10).