Responsiveness test by context · October 2026 stack

Qwen3.8-Flash-Next: five runtimes from 8K to 1M

The same model family on five runtimes, with the same fixture and the vendor sampling: mlx-serve 26.10.1 and 26.10.3, oMLX 0.7.0, MTPLX 2.12.2, ds4 and Splash 1.4.0. w1 and k2 run Swift 1.5 (a fine-tune of Flash-Next), g1 and g2 the GSQ-RCO-Coder (256 of 512 experts), the others the base model. Each panel is one metric; each line is one runtime and weight file. Hover over a chart to read the values by context.

Apple M4 Max · 128 GB · measured 2026-10-07 to 2026-10-25. mlx-serve 26.10.1 and 26.10.3 · oMLX 0.7.0 · MTPLX 2.12.2 · ds4 upstream 0aaea5a · Splash 1.4.0 and a Splash build from main 3135ab4.

Rig

Setup by candidate

What changes between runtimes: runtime, quant, prefix cache mechanism and speculation. Sampling is the same for all of them (vendor): temperature 1.0, top_p 0.95, top_k 20, reasoning xhigh, max_tokens 4096. Fixture audit_retrieval with needles at 10/50/90%. Native context: 262,144 tokens; 512K uses YaRN 2.0 on mlx-serve and ds4. Splash turns on a static YaRN by itself above 262,144 tokens and serves 1M (1,000,000 tokens) with KV int8, the KV past its resident plan on an SSD cache.

Runtimes compared

All five runtimes do speculative decoding and prefix caching on Apple Silicon: MTP on mlx-serve, oMLX, MTPLX and ds4, a DFlash2 draft on Splash. They differ in where the KV cache lives (RAM, disk or SSD) and in how they handle the memory limit: mlx-serve pins it as wired memory, oMLX spills over to SSD, MTPLX refuses the prompt, ds4 keeps the prefix cache on disk and Splash moves the KV past its resident plan to an SSD cache.

Cache hit by scenario

Fraction of the prefix reused in each scenario, for the band's selected group. cold = first pass (≈0 by design). middle_mutation = the prefix diverges in the middle: Splash reuses none of it. append and tool_turn are the gate: ≥ 0.90.

01 (full reuse)

400, 500 or 507 = scenario refused with that HTTP status (400 = context window exceeded, 507 = MTPLX memory plan). A stream error (the server cut the response) also counts as refused. — = scenario outside the band's protocol: the 256K and 512K bands of some runtimes run only cold, identical and tool_turn.

All values

Source: bench/engine-updates-2026-10/results/reports-2026-10.json, generated from the *.jsonl files of the October campaigns (engine-updates, stack-updates and splash-longctx). Per series and band, the page shows the served group with the most reps (tie: the most recent). T_turn = tool_turn TTFT + 512 / warm decode. Warm decode = median of served identical, append and tool_turn.