randomllama's picture
sync: latest measured numbers
2c625d4 verified
|
Raw
History Blame Contribute Delete
10.1 kB

Measured results β€” GLM-5.3-Flash (NVFP4) + DFlash2, 2Γ— DGX Spark (GB10), SGLang TP=2

First known deployment of this pairing on any hardware outside inco.ai (drafter repo showed 0 downloads at deploy time; enabling PR #36708 merged ~7 h before first boot).

Serving config (first-light envelope)

mem-fraction-static 0.88, max-total-tokens 131072 (configurator resolved 64,832), mamba-full-memory-ratio 2, context 65,536, max_running_requests resolved to 1, KV bf16, draft tokens 8 (drafter-native block), draft attention flashinfer, DSA tilelang retuned for GB10 (see patches/). Clocks: stock (no cap), engine warmed 2Γ—800 tok.

Decode throughput β€” warmed, temp 0, stream:false, 800 max_tokens, n=5, medians

prompt DFlash2 ON DFLASH off (same stack) ratio
code-1 (threaded queue impl) 27.6 tok/s (27.6–27.8) 14.7 1.88Γ—
prose-1 (measurement essay) 20.7 tok/s (20.7–20.7) 14.7 1.41Γ—

Instantaneous scheduler gauge peaked at 45.5 tok/s during code decode; reported here only as a gauge peak β€” sustained medians above are the comparable numbers.

Acceptance (scheduler decode-batch log, during active code decode)

accept len 3.65–5.62 (of 9 per step: 7 drafts + verify + bonus), accept rate 0.38–0.66. Consistent with the Qwen3.8 GB10 DFlash2 deploy's ~5/8 code acceptance.

Losslessness (G6)

5 fixed prompts, temp 0, DFlash2-on vs DFLASH-off, token-for-token: NOT claimed lossless. Of 5 prompts, 3 were VOID (harness captured only content, which the auto-detected reasoning parser left empty β€” harness flaw, not a result), 1 matched exactly, 1 diverged at a formatting token (**Step 1: Square each integer** vs ## Step 1: Square each number) β€” a near-tie flipped by on/off-path numerics. Full 20-prompt matrix with reasoning captured is queued. Treat DFlash2-on outputs as distribution-preserving, not bit-identical, on this stack until that lands.

Reference comparison (other published GB10 GLM-5.3 numbers, different stack)

  • tonyd2wild vLLM TP2 + MTP-4: 21.8 tok/s median (peak 22.7); TP4: 35.7

Serving measurements (FINAL config: v4b image + D5 flags, 2026-08-28 ~04:00)

  • TTFT (stream:true, first content/reasoning delta, warm): ~4k-token prompt 2.3 s uncached / 0.74 s radix-cached; ~16k 7.9 s (β‰ˆ2,000 tok/s prefill). ~64k: unmeasurable at the 65,536 context window. First-request-after-boot 4k read 39.6 s β€” cold-start JIT/caches; excluded as contaminated, reported for honesty.
  • Concurrency: superseded twice β€” first by the c-sweep (the "saturates at one stream" read was a max_running=2 artifact), then by the multi-stream unlock (LADDER.md): the mamba state cache capped ALL DFlash configs at 2 concurrent streams. With --max-mamba-cache-size 40 --mamba-ssm-dtype bfloat16 --mem-fraction-static 0.90 on the fp8-KV config: c8 80.3 tok/s aggregate (8/8 concurrent), c12 85.4 vs 47-49 capped and 55 no-spec. Single-stream cost of the unlock: 27.4 vs 29.2 code median (~6%).

G6 losslessness β€” FINAL verdict (20 prompts, temp 0, content+reasoning captured, on vs off)

1/20 exactly identical; 19/20 diverge somewhere in their (mostly long, reasoning-bearing) outputs. Divergences are near-tie token flips that cascade in long generations β€” outputs remain correct and comparable in quality (all gates passed), but on this stack (sm_121, DSA tilelang, NVFP4) DFlash2-on is NOT bit-identical to DFLASH-off at temp 0. The drafter card's "greedy output matches the target exactly" does not reproduce here; whether the cause is verify-path numerics on this chip or quant interaction is unresolved. Users needing bit-exact greedy reproducibility should serve DFLASH-off.

Thinking mode vs effort (2026-08-28)

Decode tok/s is IDENTICAL with thinking on or off (~18-22 on this probe; run variance exceeds any mode difference). But with a tight max_tokens budget, thinking-ON can spend the ENTIRE budget on reasoning and return zero answer: at 600 max_tokens our probe got 2,600 chars of reasoning_content and empty content (finish=length), while thinking-OFF returned 2,462 chars of pure answer in the same wall time. For agent/tool workloads, disable thinking per-request ("chat_template_kwargs": {"enable_thinking": false}) or budget max_tokens for reasoning + answer. Conditions: merge-sorted-lists code prompt, 600 max_tokens, temp 0, FP8T8V config.

Cross-stack comparison vs EXL3+vLLM (2026-08-28, same prompts, our hardware for our column)

MiaAI-Lab published GLM-5.3-Flash-EXL3-2x-DGX-Sparks (EXL3/TR3 4bpw by brandonmusic, custom vLLM image, DFlash2 k=7, fp8_ds_mla KV, 900k context). Their headline 62.9/103.3/146.5 is the "Structured" bench β€” counting 1 to 200 β€” a ~0.92-accept regime their own fine print separates from prose (26.9) and long-context (24-27). We ran their exact protocol on our stack (temp 0, thinking off, 400 max_tokens, top_p 1, warmed, n=5 medians, FP8T8V config):

workload (their prompts) EXL3+vLLM (their lab numbers) ours (SGLang fp8-KV)
structured count-to-200 61.7 43.3
prose hash-map 26.9 29.2
Structured gap decomposes β€” CORRECTED 2026-08-28 pm (analyst pass caught our counting error):
SGLang's --speculative-num-draft-tokens INCLUDES the bonus token, so our D=5 ceiling is 5
tok/step (measured accept length 3.4-4.4, never "~5.9" β€” that figure was inferred, wrong, and
is retracted), and their "k=7" is D=8 in our units. Modeling from our measured D-sweep
(verify costs ~19.9 ms per extra draft token on a ~40 ms floor): D=7 predicts 43.9 tok/s
structured (+1.4%) with a hard ceiling of 46.7 even at perfect acceptance, and costs ~9%
prose β€” so we are NOT raising D. Step rates are within 3% of the EXL3 stack (9.9 vs 9.6
steps/s); their advantage is ~56% cheaper verify per token (quant/backend), which is the
real lever (decoupled drafter / verify cost), not drafter depth. On the prose workload the SGLang stack is faster. Their genuine
edges, acknowledged: (1) weights quality β€” independent KLD panel puts EXL3 4bpw at ~official-FP8
level while NVFP4 (which we serve) scores 2.5x worse; (2) KV pool β€” 982k tokens vs our 84k
(context expansion on our stack is config work, queued). Credit: MiaAI-Lab and brandonmusic.

THE SHOOTOUT (2026-08-28): both stacks, one rig, one protocol

We ran MiaAI-Lab's EXL3+vLLM lane (their repo @ bd7f55e, their :exl3 GHCR image, their k=7 default, our fabric pins; benchmarked 2026-08-28 ~15:00 PT β€” their repo is moving fast and has since announced concurrency-focused fixes, so re-run before citing) and our SGLang fp8 lane on the SAME 2x DGX Spark pair, SAME prompts, temp 0, thinking off, 400 max_tokens, warmed, n=5 medians; c-sweep with per-stream walls printed. First such comparison published anywhere, to our knowledge.

workload EXL3+vLLM SGLang fp8 (FP8T8X)
structured count-to-200 51.3 (n=5 spread 30.2-59.1) 43.3
code (merge-sorted-lists) 51.9 29.3
prose (hash map) 23.7 29.2
c1 53.8 36.5
c2 54.5 48.7
c4 72.8 43.3 (straggler-tainted, see analyst note)
c8 63.8 78.1
c12 53.3 83.5
Read: EXL3+vLLM wins single-stream high-accept work decisively (code +77% β€” larger than we
expected; cheap verify + deeper draft). SGLang fp8 wins prose at every point and wins fleet
concurrency by +57% at c12 β€” the EXL3 lane's aggregate DEGRADES past c4 (72.8 -> 53.3), which
is consistent with their repo publishing only to c4. Their published 62.9 structured did not
reproduce on this rig (51.3 median, wide spread). Caveats: their lane ran their defaults, one
boot, no per-lane tuning by us; our c4 carries the known harness straggler. Credit: MiaAI-Lab
and brandonmusic for the lane. Posture unchanged: SGLang fp8 serves production (fleet shape
matches our workload); EXL3 lane retained on-disk for interactive use cases.

Concurrency correctness matrix (2026-08-28, FP8T8X production config)

Motivated by sglang #36548 (36.5% wrong answers at c8 with DFLASH on GB10, another rig/config) and #36880/#36885 (mamba sentinel-slot corruption): fixed deterministic arithmetic prompts with objective ground truths, temp 0, thinking off, serial baseline then 3 rounds each at c4 and c8. Result: 44/44 correct (c1 8/8, c4 12/12, c8 24/24) β€” no concurrency-dependent wrongness detected on this config (bf16 mamba ssm states, D=5, fp8 target KV, 40 mamba slots). Scope caveat: a 44-request short-form matrix rules out gross corruption, not rare load-dependent corruption; the #36885 sentinel bug is claimed load-dependent. Methodology note: our first run "failed" 7/44 β€” every failure was reasoning-narration truncated by an 80-token cap, zero wrong values; budget raised to 400 and the checker's false accusations vanished. Check your checker.

SHOOTOUT round 2 (2026-08-28 late) β€” EXL3 lane rev 1df71c1 (MiaAI-Lab's concurrency+context update)

Re-ran after MiaAI-Lab shipped 7 commits (DFlash2/MLA KV page-sharing, 1M default context, prefix-cache fix). Same unified protocol, our rig, their new image. What changed:

metric EXL3 v1 (bd7f55e) EXL3 v2 (1df71c1) SGLang fp8 (ours)
code c1 51.9 45.3 29.3
structured 51.3 51.1 43.3
prose 23.7 25.0 29.2
c8 aggregate 63.8 57.7 78.1
c12 aggregate 53.3 59.9 83.5
54k-token prefill (not tested) PASS (worker survived, 119GB peak) worker dies ~62k
Read: her concurrency fix is real but partial β€” c12 improved +12% (53.3β†’59.9) yet still trails
our 83.5 and still degrades past c4. Her decisive new edge is LONG CONTEXT reliability: her lane
recalled a needle at 34k AND 54k tokens with the worker surviving, where our stack silently kills
rank1 at ~62k (the blocker from our night-3 probe). Her MLA/DFlash2 KV page-sharing is doing what
her commits claim. Honest scorecard now: EXL3 wins solo code + long context; SGLang fp8 wins prose
  • fleet concurrency. Both re-measured same rig, same night. Credit MiaAI-Lab for a fast, real fix.