Repository navigation
Conversation
f206c97 to
d090171
Compare
Live A/B on this 2× DGX Spark kitWe applied this branch on the recipe cluster (TP=2, EXL3, fp8 target KV, DFlash2 draft TP=1, Mechanism: confirmed7/3 really does publish a 3-token verify prefix. Ordinary prose steps were exactly 3.0 draft tokens/step (e.g. 495/165, 537/179). Spec per-pos accept was non-zero only on positions 0–2; 3–6 were 0. Stock 7/7 stayed at 7.0 draft tokens/step. Strict JSON-schema Prose: not a +21% on this kitSame protocol as the PR body (two English-prose prompts, 512 tokens, temperature 1, top-p 0.95, thinking off, single stream, warmed idle endpoint). Prompts were a hash-map explanation and a photosynthesis essay (the PR does not list the original two).
Mean of four 7/3 completions: 27.85 tok/s (~+7.3%). Hashmap averaged about +13%; photosynthesis about +2% (round 1 was slightly slower than stock). This is the same ~26 tok/s prose regime this kit already measures at temp 0, not the 16.48 → 20.04 table. n is still tiny and temp 1 makes the completions different each run, but we did not reproduce a uniform ~+22% on both prompts. Structured / high-accept: large regressionThis is the blocker for using 7/3 as a recipe default. Count-1-to-200, temp 0, thinking off, 5×400 — the same
All five 7/3 runs sat in 40.46–40.71. Per-pos was We did not same-session A/B structured on 7/7 after the 7/3 restart (stock structured number is the existing lab 5×400 median). The accepted/step drop 6.43 → 3.00 matches the overlay, so we do not think this is just boot noise. What we need from youWe are not merging this as a default. Default 0 / opt-in is still a discussion, but the PR body currently leads with +21% English prose and does not show the structured hit. Please:
Until (2) is measured and the write-up matches the workloads this image actually serves, we would not merge, and we would not recommend anyone set |
|
Thanks — this is a valid blocker, and I agree the current write-up overweights the two-prompt prose result. The exact prompts behind my table were:
My existing code smoke used two different temperature-1 generative implementation prompts. It was not the public sparkDash More importantly, your item 4 is correct: the handler keeps K=7 for any batch containing a guided request while Please do not merge this revision. Unless that overturns the high-accept regression, I will put the negative matrix and the mixed-batch mismatch prominently in the write-up and close the PR rather than turn this small integration into a batch-adaptive scheduler project. |
|
Bracket complete; I am closing this rather than recommending the width split. Same-session protocol on the public recipe:
Control drift was only -0.13% structured and -0.57% code. Every arm produced exactly 400 tokens with The counters show the mechanism clearly. B and C reached 100% acceptance but were capped at exactly 4 output tokens per verification step. Stock reached 7.82/7.86 on structured A1/A2 and exactly 8.0 on code. B was only +0.49% versus C on structured and -0.39% on code: keeping a 7-token proposal does not recover the useful accepted positions once verification is capped at 3. I also ran three fail-closed ordinary/guided mixed probes. Despite sub-millisecond request-start skew and valid outputs/counters, actual decode overlap was 0.0 s, 12.404 s, and 0.0 s. Admission is nondeterministic here, so I am not selecting the favorable attempt or publishing an aggregate A/B claim. The independently observed low-accept prose gain (~7.3%) is real enough to motivate the experiment, but it is not a simple general recipe win against these repeatable ~37% high-accept regressions and the mixed-batch contract complication. Thanks for catching the missing workload coverage and for the live retest. |
Summary
DFLASH_VERIFY_TOKENS={1,3,7}while DFlash2 retains its trainedDFLASH_TOKENS=7proposal blockDFLASH_VERIFY_TOKENS=0as an exact stock/full-width rollback: the new overlays are neither mounted nor applied.env, validate before graph arithmetic, and generate all required capture sizes up to the configured concurrencyThis is a small graph-aligned integration for the pinned GLM/V2/sparse-MLA stack, not a new speculative-decoding algorithm. The wide-proposal/narrow-verification pattern has upstream prior art in the still-open adaptive-verification PR #52559.
Controlled A/B
Two DGX Sparks, TP=2,
max_num_seqs=2, EXL3 target, FP8 target KV, DFlash2 draft TP=1. Each row is the median of two fixed English-prose prompts with one 512-token completion per prompt, temperature 1, top-p 0.95, thinking off, single stream, and a warmed idle endpoint.Both final 7/3 prompts improved over stock (+22.25%, +21.03%) and static 3/3 (+4.49%, +3.74%). This is deliberately reported as a small workload-specific observation, not a population estimate or a claim about other prompts, languages, concurrency, or hardware.
A two-prompt code smoke had a +4.44% median but mixed per-prompt movement (-4.19%, +14.27%), so this PR does not claim a code speedup. The GDN backport's independent timing contribution is also not isolated; it is included as the active-width correctness fix and validated as part of the final stack.
Correctness and rollback
The target still performs ordinary standard rejection sampling over the published prefix, so the sampling distribution is unchanged by construction. This stack was not bitwise repeatable across identical temperature-0 runs, so output hashes are not presented as a proof of equivalence.
Live validation on the final 7/3 server:
get_weather({"city":"Warsaw"})Tests
The tests cover fixture application, idempotence, incomplete-marker rejection, source-drift failure, ordinary/structured publication behavior, invalid widths, stock rollback, caller-over-
.envprecedence, dynamic graph sizes beyond 32, recovery subcommands with malformed tuning, and wiring on both TP ranks. The image's live GPU overlay self-check also passed on both nodes.Upstream references