Repository navigation
Conversation
|
NVIDIA result: single RTX PRO 5000 Blackwell 48 GB, Linux, CUDA 13, built on 0.1.39. Model is Qwen3.8-Flash-Next IQ3_S with Total tok/s (last request's TTFT):
Works and is stable: no errors, both slot drafters loaded, latency clearly better. It recovers most of the batch loss (61 -> 85, 71 -> 95) but doesn't beat one at a time here, where solo verifies up to 4 drafts. |
|
Complementary numbers from a card that holds only 44% of the experts: Tesla P40 24 GB, IQ3_XXS, v0.1.39,
Here batching raises the aggregate by 16% at N=4 and halves the worst first-token wait (32 s to 17 s), while each stream drops to 22-38% of solo. On @bobvious's card (100% hits) |
|
NVIDIA result, plus a reproducible crash once the batch-graph cache passes 32 layouts. Single RTX PRO 4500 Blackwell
Same picture as @bobvious's card: it recovers the batch loss and edges past one at a time here (~+5-15 %), mostly a Crash: with
So it looks like the first eviction at |
|
I ran a matched upstream v0.1.39 versus PR #846 sweep on both an R9700 and an RTX 4090, using the same IQ3_S model, --spec 4, MTP, 128K context, and one or two requests. |
|
Benchmark report · October 5, 2026
Strata PR speed comparisonUpstream v0.1.39 versus the submitted grouped-MTP PR, tested separately on a Radeon R9700 and an RTX 4090. Every table shows upstream → PR in tokens per second. 11 of 12R9700 paired cases improved end-to-end; median gain 32%.
10 of 11Valid RTX 4090 paired cases improved end-to-end; median gain 30%.
How to read this reportBoth builds used the same Qwen3.8 Flash Next GSQ-RCO IQ3_S weights, MTP,
Radeon AI PRO R970032 GB AMD Radeon AI PRO R9700, HIP build on the AI server Paired: 11 of 12 paired cases improved end-to-end; median gain 32%. The 512 / 1,024 case was about 5% slower. Solo: The first-pass solo generation median was about 5% lower with the PR. Solo end-to-end results looked faster, but prompt-processing time varied substantially with run order. Two simultaneous requests
One request
Reverse-order controlsThese four cases ran again with the PR first, then upstream, each on a fresh engine. The last number in the case is the request count.
GeForce RTX 409024 GB NVIDIA GeForce RTX 4090, AMD EPYC 7V13 host, driver 595.91.07, CUDA 13.0 Paired: 10 of 11 valid paired cases improved end-to-end; median gain 30%. The 512 / 1,024 case is excluded because one stream stopped early in both builds, twice. Solo: The first-pass solo generation median was about 14% faster with the PR, although all three 2K solo cells were slower. A reverse-order 2K / 512 control slightly favored the PR instead. Two simultaneous requests
One request
Reverse-order controlsThese four cases ran again with the PR first, then upstream, each on a fresh engine. The last number in the case is the request count.
What the comparisons support
Each main-sweep cell was observed once, with four selected reverse-order controls per machine. Small differences are less reliable than the repeated, larger concurrency gains. The RTX 4090 rental cost $1.04 in total, including compute, storage, and bandwidth, and was destroyed after testing. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Found while building on this: with I made PR #1010 with fixes btw. |
…ad of refusing, 1-row groups keep the 0.1.39 commit kernel, LRU graph cache only under the flag, the real draft geometry Co-authored-by: rkcth <16263985+rkcth@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Thanks, taken into 0.1.40 with changes. It is opt-in (--batch-mtp or STRATA_BATCH_MTP=1). It warns and batches as usual when it cannot run, instead of exiting. A 1-row group keeps the 0.1.39 commit kernel, the batch graph cache is bounded (LRU) only under the flag, and the draft K/V copy uses the drafter's geometry. Without the flag the batch path is 0.1.39's. Your +31 to +39% with 2 to 4 clients is the reason it is in. More NVIDIA numbers are welcome. |
…ad of refusing, 1-row groups keep the 0.1.39 commit kernel, LRU graph cache only under the flag, the real draft geometry Co-authored-by: rkcth <16263985+rkcth@users.noreply.github.com>
Upstream merged Niko1221#863, Niko1221#732, Niko1221#869, Niko1221#931 and Niko1221#846 (our copies dropped) and took its own form of Niko1221#970 (Niko1221#804). Kept: Niko1221#851, Niko1221#652, Niko1221#855, Niko1221#813, Niko1221#789. A pool turns off what it cannot run yet: --pipeline-windows, --batch-mtp, --kv-grow, session files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0157fjixQD2nRxvCvtXq66DD
…rn instead of refusing, 1-row groups keep the 0.1.39 commit kernel, LRU graph cache only under the flag, the real draft geometry Co-authored-by: rkcth <16263985+rkcth@users.noreply.github.com>
…rn instead of refusing, 1-row groups keep the 0.1.39 commit kernel, LRU graph cache only under the flag, the real draft geometry Co-authored-by: rkcth <16263985+rkcth@users.noreply.github.com>
Problem
Batch slots currently verify one token per request, even when solo decoding uses MTP drafts. On a single GPU this can give up much of the solo decode speed as soon as a second request arrives.
Change
With
MULTI_CONCURRENCY=TRUE, each active batch slot drafts one token and verifies the current token plus that proposal in a shared window. Each slot keeps private draft KV/state while borrowing the immutable MTP weights and head. The verifier commits only the accepted prefix for each slot; more slots rotate through its eight-row windows. The existing batch path remains the default.The diff also bounds captured batch-graph layouts, documents the opt-in setting and hardware limits, and removes evaluation-only probes and diagnostics. The comments focus on shared ownership, accepted-prefix state, and slot rotation.
Validation
python -m unittest serve.test_parallelpassed (11 tests).Limits / review focus
Grouped MTP is currently single-GPU only and verifies one proposal per slot. It has not been tested on 16 GB cards or NVIDIA. Per-slot draft state and buffers reduce VRAM available to the expert cache; a smaller card may see less benefit or fail to fit the requested slot count. A longer mixed-workload soak and cross-hardware checks are still needed before enabling this by default.