Qwen3.8-Flash-Next EXL3 crossed 100 tok/s on ONE DGX Spark. 🔥
102.6 tok/s on repetitive code in a community retest of my native ExLlamaV3 recipe. And the part I’m happiest about? My ~79 tok/s code result reproduced at 79.5 on their Spark.
𝗧𝗛𝗘𝗜𝗥 𝗕𝗘𝗡𝗖𝗛𝗠𝗔𝗥𝗞 𝗥𝗘𝗦𝗨𝗟𝗧𝗦
→ 102.6 tok/s: repetitive Python code
→ 79.5 tok/s: my 400-token code workload
→ 71.7 tok/s: a 600-token prose explanation
→ 66.2 tok/s: JSON catalog
Thinking off, greedy sampling, better of two runs. These are decode rates, not total request throughput.
The 100+ result is a highly predictable workload where speculation shines. It is not a blanket “every coding task runs at 100 tok/s” claim.
𝗟𝗢𝗡𝗚 𝗖𝗢𝗡𝗧𝗘𝗫𝗧 𝗛𝗘𝗟𝗗 𝗨𝗣 𝗧𝗢𝗢
15/15 needle-retrieval checks passed, including one buried 243,635 tokens deep.
1,000+ tok/s prefill at that depth. Clean tool calls. An 80K tool loop also ran on the setup.
MTP depth 5, dynamic stopping, 8-bit KV and int8 mixers are doing real work here.
This is why I publish the recipes. Someone else reproduces the results, tests workloads I haven’t, and sends improvements back. Their fixes were merged the same day.
Huge thanks for putting it through the full grid, and credit to turboderp for ExLlamaV3.
One small box. A lot more room to experiment. Thank you so much to
@yume_arasaki for the time invested and hard work on this benchmark!!
Recipe + native runtime instructions:
github.com/vcruz305/Qwen3.8-…
I have to retract what I posted as the fastest speed of Qwen 3.8 Flash on a single DGX Spark.
Cruz shipped a custom ExLlamaV3 fork and a native engine path. I ran the same model on the same Spark: 102.6 max, 80 tok/s on code, 70 tok/s on prose.
My previous benchmark and community recipes was 48.6 tok/s.
I ran my full grid on it so you don't have to. This might now be the best way to run this model, without breaking the bank on one DGX Spark.
THE QUANT
EXL3 at 3.05 bits per weight. Trellis coding packs information more efficiently than plain rounding, so 3 EXL3 bits should land near 4.5 conventional bits.
On paper that sits above FP4. I wasn't able to verify this, subjectively, running this on my harness feels at least on par FP4, and definetely not worse. A single source says NVFP4 is better on longer context.
THE RECIPE
One line for the DD crowd: vcruz305/exllamav3 at 523ecd3, draft depth five, dynamic stop 0.6, 8-bit KV, int8 mixers with exact fp16 reduction order, big cores pinned.
Every flag in that ladder earned its tok/s.
The mixers shipped fp16 inside a 3-bit model, and storing them int8 is worth 7 to 13 percent decode on its own.
The 8-bit KV adds 3 tok/s at 4k and 7 at 240k, where twelve full-attention layers stream the whole cache every step.
THE NUMBERS
All measured on my Spark this week. Thinking off, T=0, empty KV, decode after first token, better of two reps. A speed record from a bench that cannot multiply means nothing: 17 × 19 → 323 runs first, every grid.
Code (50 identical Python clamps): 102.6 tok/s.
Counting 1 to 200: 107.1, with 99 percent of drafts accepted. Nothing is more predictable than numbers in order.
Prose (explain a hash map, 600 tokens): 71.7, two reps at 70.5 and 71.7. JSON catalog: 66.2.
Cruz's published number on the same fork: 79 tok/s code. Mine is 102.6 because repetitive code clamps accept nearly every draft. His 53 prose is a 350-word story. My 71.7 is a 600-token explanation. Same SHA, different jobs. Both stand.
Sanity check: a Cruz-style greedy 400-token code job runs 79.5 on my card, 74 percent draft acceptance. His 79 reproduced.
CONTEXT
Needle at 5/50/95 depth, three codes: 15 for 15, one buried 243,635 tokens deep. Prefill above 1,000 tok/s at that depth.
Decode at depth (256-token jobs, KV resident): 8k 51.5, 32k 55.6, 64k 67.4, 110k 66.0, 240k 55.8. Decode rises into the mid 60s at 64k before settling. No cliff.
With the cache already full: count 112.9 at 32k, 82.0 at 128k. Prose 52.2 at 32k, 49.0 at 128k. Code 111.1 at 32k, 69.0 at 128k. Tools called at every depth, no XML leaking into content.
AGENT LANE
Tools on at 35k resident: proper tool calls returned, 58 and 57 tokens, prefill about 980 tok/s. Trust check: the first pass printed agent decode up to 386,000 tok/s. Pretty kickass.
Tools off, forced 2,048-token HTML output: 86.8 and 88.3 tok/s engine rate, 86-87 percent draft acceptance. Wall clock lands near 35 tok/s because a 35k prefill puts 36 seconds behind every first token. Decode was never the agent bottleneck on this box. Prefill is. The research client ran an 80k tool loop on this serve and lived.
ENERGY
The prose cell: 0.85 joules per token on one GPU rail. At that rate: 6.2 million tokens a day for about 27 cents of electricity. The same tokens on Grok 4.6 output pricing are $37 a day. The box still costs a car.
THE HONEST LIMITS
The native engine runs one job at a time. If you need concurrent streams, Cruz ships a vLLM lane alongside it. Different engine, lower single-stream speed, real concurrency. Pick per workload.
MY READ
This recipe is the killer app for a single Spark. One quiet box, frontier weights, 100 tok/s code, 71 prose, a 262k window that holds, tools clean at depth.
If you own one Spark, this is the loadout. Sent Cruz a PR with light fixes from this grid. Merged same day.
100 tok/s on code from one small box was not supposed to happen this year.
Benchmark, sources and recipe in reply 👇