Single-GB10 Laguna-S-2.1-NVFP4, and a vLLM version finding worth flagging
Ran Laguna-S-2.1-NVFP4 + DFlash on one DGX Spark (GB10) and did a controlled two-arm vLLM version ablation. Three things that might help people here — one of them changes how to read the earlier benchmark numbers in this thread.
1. It fits and serves on a SINGLE Spark. NVFP4 (74.1 GB weights) + the DFlash drafter: 107 GB used / 14 GB free / swap 0, READY in ~3 min, generates real output (not just /health). The thread only had TP=2 on two Sparks; this confirms one is enough. The load-bearing dial is --gpu-memory-utilization, and it’s context-dependent: 0.85/0.82 OOM at 16k ctx (vLLM pre-reserves the KV pool), 0.70 fits. No MoE-prepare cliff — native arch support.
2. The ≥0.25.0 requirement is a QUALITY floor, not just a crash fix — and above it Laguna is native upstream. This compares the two ways you’d actually run Laguna: at 0.23.1 you can only run it via the eugr backport (which patches in Laguna arch + the poolside_v1 parser — stock 0.23.1 won’t load it); at ≥0.25.0 it runs on stock upstream vLLM with no patches — Laguna is supported natively (v0.25.1, compiled for GB10; reports as 0.25.2.dev0). So moving up the floor isn’t only a score bump, it’s dropping the community backport for the supported path. Same model, same box, same everything else (template laguna_glm_thinking_v8, thinking OFF, NVFP4, DFlash n_spec=7, GMU 0.70, ctx 16384, temp 0.7 / top_p 0.95, seed 42). tool-eval-bench --hardmode on Laguna-S-2.1-NVFP4:
| how you run it |
engine build |
score |
fails |
| below floor (eugr backport) |
vLLM 0.23.1rc1.dev790 |
80 |
11 |
| above floor (stock) |
vLLM 0.25.2.dev0 |
87 |
5 |
+7. The 0.25.2 arm lands right in the band others here have reported (86–88), so it reproduces the community result and explains why a below-floor run undershoots — the eugr-backport-0.23.1 route hides a real ~7-point capability loss vs stock upstream ≥0.25.0. (Strictly, this bundles the version bump with backport-vs-stock — but since the backport is the only way to run Laguna at 0.23.1, that’s the real-world before/after.) Responsiveness ~unchanged (47→48): the engine moved quality, not single-stream decode.
As a sanity control I ran NVIDIA’s Qwen3.6-35B-A3B-NVFP4 through the same suite on both engine builds: 88 → 90 — a strong model on this box is barely affected, and its small lift is legible (the two weak categories, Safety & Boundaries and Hard Mode, both cleared 80% on 0.25.2, and a tool-arg-injection failure went away). I’d treat that cross-model comparison as suggestive, not proof, though: the two 0.23.1 arms happened to be different dev builds (a3b needs no backport, so it ran on a newer stock 0.23.1). Laguna’s own +7 is the clean result.
(0.25.2 built via bilikaz build-and-copy.sh --vllm-ref v0.25.1 on GB10 sm_121; reports as 0.25.2.dev0+g752a3a504.)
3. num_speculative_tokens: 7 beats 15, with the per-position acceptance to show why. People asked upthread for a clean sweep — here’s the vLLM SpecDecoding per-position array (coding load):
| n_spec |
decode t/s |
accept rate |
mean accept len |
per-position acceptance |
| 7 |
38.3 |
43.5% |
3.05 |
79 / 61 / 50 / 39 / 32 / 24 / 20 |
| 15 |
33.3 |
25.0% |
3.74 |
80 / 61 / 49 / 41 / 33 / 24 / 18 / 14 / 11 / 8.9 / 8.4 / 7.4 / 6.9 / 6.5 / 5.3 |
7 is ~15% faster than 15. The “~8% acceptance at 15” reports floating around are the deep-position tail (positions 9–14 sit at 5–9%), not the aggregate (25%). Past the knee (~pos 6, ~20%) each extra draft token costs more compute than it repays. So use 7, not 15 — which matches the model card’s own recommendation.
Throughput (llama-benchy, community format, GB10, spec7, 0.23.1): single-stream decode c1 = 20.0 / 19.5 / 18.2 t/s @ depth 0/4k/8k (flat with depth); prefill ~2700–2800 t/s; concurrency scales aggregate (c4 42.8 t/s) at per-request cost; TTFT grows hard with depth×concurrency (d8k/c4 = 10.4 s). DFlash’s drafter underperforms on prose (domain mismatch); on code decode is higher (~38 t/s).
Caveats: n=1 per cell (tool-eval is single-pass) — the community band is the external corroboration. And decode looks ~engine-invariant (both arms ~20 t/s c1); the version floor buys correctness, not throughput.