This looks especially interesting for people using a single DGX Spark for Hermes, OpenCode, browser agents and other multimodal workloads.
Reported results:
- up to 1M context
- 1,431,164 KV cache
- full image + video support
- around 37 tok/s single-stream prose decode
- up to 86 tok/s aggregate with 4 concurrent streams
- around 1500–2000 tok/s prefill
- stress-tested with a 400K prompt
What makes this especially interesting is the combination of large context + multimodal support + decent concurrency on just one Spark. For browser/agent workloads, this looks like one of the most practical Qwen3.8-Flash-Next setups available right now.
GitHub recipe:
MiaAI-Lab/Qwen3.8-Flash-Next-Single-DGX-Spark
Model checkpoint:
Mia-AiLab/Qwen3.8-Flash-Next-NVFP4 on Hugging Face
MiaAI:
@MiaAI_lab on X
I’m planning to test this with Hermes Desktop as well. Would be interesting to see results from other single-Spark owners, especially for long-context browser agents and multimodal tool use.
Technical results
MiaAI also published detailed memory, KV-cache and long-context measurements for the single-Spark setup.
KV cache / long-context profiles
| Configuration | KV pool | Prefill @ 400K | Decode, prose idle | Needle tests 5/50/95% |
|---|---|---|---|---|
262K, KV_TARGET_GIB=20, BF16 |
21.28 GiB = 736,837 tokens, ~2.81× 262K requests | — | — | — |
512K YaRN, KV_TARGET_GIB=20, BF16 |
19.2 GiB = 704,558 tokens, ~1.34× 512K requests | 1,537 tok/s, TTFT 260.3 s | 28.3 tok/s ±2.6 | 3/3 PASS |
512K YaRN, KV_TARGET_GIB=22, BF16 |
796,196 tokens, ~1.52× 512K requests | 1,883 tok/s @ 32K | — | 12/14 |
512K YaRN, KV_TARGET_GIB=22, FP8 |
22.2 GiB = 1,431,164 tokens, ~2.73× 512K requests | 1,495 tok/s @ 400K, TTFT 267.7 s; 1,769 tok/s @ 32K | 27.1 tok/s ±1.3 | 15/20 |
The most interesting number here is the 1.43M-token FP8 KV pool on a single DGX Spark. That gives a lot of headroom for multiple long-running agent sessions, although the authors now recommend a more conservative host-memory-limited default profile.
Current shipped profile — measured 2026-09-05
Current default profile:
262K context, HOST_RESERVE_GIB=26, KV_TARGET_GIB=16, FP8 KV, MAX_NUM_SEQS=5
| Metric | Result |
|---|---|
| GPU memory budget | GMU 0.780 = 94.87 GiB |
| Available KV cache | 16.46 GiB = 992,584 tokens, ~3.79× 262K requests |
Time until /health |
10 min 51 sec from NVMe checkpoint load |
Host MemAvailable, 2 min after /health |
15.7 GiB, MemFree 5.1 GiB |
Host MemAvailable, after 40 min idle |
15.5–16.4 GiB, MemFree ≥4.4 GiB |
| After two ~90K-character requests | 16.2 → 15.05 GiB after first; ~15.2 GiB after 60 s after second; minimum ~14.9 GiB during prefill |
| Five concurrent ~60K requests | 14.9 → 14.57 GiB after +60 s; minimum 14.26 GiB; 5/5 completed, no watchdog events |
| 2.5 h qwen-code workload | ~38 requests, 19 at 50–100K tokens, up to 3 concurrent; MemAvailable 14.2–14.9 GiB between turns, minimum 12.8 GiB |
NV_ERR_NO_MEMORY in journalctl -k |
0 during startup and all tests above |
This is important because earlier more aggressive KV_TARGET_GIB=20/22 profiles left only around 6.9–8.8 GiB MemAvailable, very close to the point where the GB10 driver starts refusing allocations.
The current MiaAI recipe therefore uses a host-side safety budget through HOST_RESERVE_GIB, rather than simply pushing GPU_MEMORY_UTILIZATION as high as possible.
Safety notes:
Prefill throughput
Prefill was measured using sparkDash:
The two columns are not a strict A/B test because they use different context profiles, KV targets and batch widths, but they show how much MAX_NUM_BATCHED_TOKENS=8192 helps amortize per-block overhead.
| Context | 2048-token batches — 512K YaRN, KV_TARGET_GIB=22 |
8192-token batches — 262K native, KV_TARGET_GIB=20 |
|---|---|---|
| 8K | 5.00 s · 1,646 tok/s | 3.69 s · 2,228 tok/s |
| 16K | 8.00 s · 2,052 tok/s | 7.16 s · 2,293 tok/s |
| 32K | 15.83 s · 2,073 tok/s | 13.87 s · 2,366 tok/s |
| 64K | 32.20 s · 2,037 tok/s | 28.31 s · 2,316 tok/s |
| 128K | 67.41 s · 1,945 tok/s | 58.88 s · 2,227 tok/s |
| 256K | 146.40 s · 1,791 tok/s | not re-measured |
The 8192-token batching profile is especially interesting for agent workloads because prefill remains above roughly 2.2K tok/s all the way to 128K context.
Source / recipe:
sparkDash:

