Repository navigation
hip flashnext: draft chains stop under a 0.8 confidence floor by default - #2697
Conversation
|
We're running a sweep to see what the optimal default should be, since it's 0.4% slower on one of the official benchmarks. @AbrahamCete if you have a chance to run the 3 PRs to confirm there is no degradation with the stuff you're working on, we'd appreciate it. |
|
0.8 benchmarked the best and matches main's single stream performance. 6% improvement for code vs. 3% for 0.7 compared to main. Receipts are being prepared. |
|
@gilby, I ran the three together on gfx1151 (Strix Halo), against what I'm working on: no degradation. I don't have the Flash Next checkpoint here (its 115 GB is more than this box holds), so this covers what the PRs share with my work, not Flash Next serving. A is
At 4 streams it's flat. At one stream, |
5e8bb0b to
7d95c74
Compare
|
I changed the default from 0.7 to 0.8 after sweeping the floor on this chip. Same machine and checkpoint, the opened head built once with
0.8 is the top of every column and the only floor whose one-stream |
|
Thanks @gilby, and thanks @AbrahamCete for checking the three together. The sweep makes a clear case: on the Strix Two things before it lands:
The CHANGELOG conflict is ours, and we'll add the PR number and your credit to the line when it lands. |
7d95c74 to
391df1d
Compare
|
Thanks @ashhart. Both are done, rebased onto main
On a Strix Halo serving alone the floor is the same 0.8 as before, so the sweep and the receipt in the description still describe this head; nothing changes there. Main's new commits since the receipt touch no file this PR changes. One correction to "equal greedy and seeded": my sweep and receipt passed Checks on |
|
Thanks @gilby. Both points are done: the 0.8 floor now uses the same RDNA 3.5 one-rank test as
|
|
Thanks @ashhart. The sampled run is done, on a new head. Head. Receipt, sampled and greedy. One Strix Halo iGPU (gfx1151), four fresh servers with the page cache dropped before each, in the order main, this, this, main. Main is
Checks on CI. I'll post the results for Environment: Zig 0.17.0, |
|
Thanks @gilby, this is the run we asked for, and a thorough one. Every request's On the numbers: one stream is +5.8–6.2%, and four streams +2.8% greedy and +4.6% sampled. Cold four-stream and the 8K first token are level or better. The one aggregate dip, two streams greedy at −0.9%, comes with a +2.0% steady state. So it sits in the first rounds, not in the steady decode, and against the gains everywhere else we're happy to take it as it stands. Nothing more is needed from you beyond the CI results you mentioned. Once
|
|
CI on |
|
The raw files behind the receipt above (the tools' JSON for all four arms: |
…3 on other cards and groups
52800fb to
4e023ac
Compare
|
Thank you @gilby. This is merged into main with your commits under your own name, so you're listed as a TensorFold contributor. It ships in the next release, credited to you in the changelog and the release notes. |
What this changes
On HIP, Flash Next's draft chains stop under a 0.3 confidence floor by default, the HIP-wide default every HIP family shares. Flash Next on one RDNA 3.5 GPU (the Strix Halo and other gfx115x iGPUs) serving alone now defaults to 0.8 through a family default (
mtp_confidence_rdna3_5infamilies/flashnext/hip/native.zig, resolved byhip_families.confidenceFloorwith the same RDNA 3.5 one-rank testPolicy.forCapsuses forprefill_step). Other cards, groups of GPUs and every other HIP family keep 0.3, and--mtp-confidencestill overrides it. The floor only decides how many drafts a chain proposes, so replies are unchanged. The start-up line prints the floor in use. A sweep of floors from 0.4 to 0.9 on this chip (in the comments) put 0.8 at the top of every cell and found it the only floor with no slower cell.atc overlap --jsonagainst main (000b534a2): incomplete (pullFilesLimit,timeLimit). Of the PRs it could compare, nine conflict in one file each and one is clean; the file this PR shares with almost every open PR isCHANGELOG.md.Checks on this head
52800fb98, a merge of main000b534a2into the branch (conflict inCHANGELOG.mdonly). The change is the 0.8 default, recipe and changelog (e5e757b52) and its scope to one RDNA 3.5 GPU (391df1d05). The receipt below ran on52800fb98.python3 tools/zig/lean_check.py: 345 problems on the base and 345 on this head, 0 new findings.python3 tools/pr_check.py --base origin/main --pr 2697: 0 errors, 0 warnings.zig build test -Dhip=true --summary all: 889 of 891 steps succeeded, 13,643 of 13,757 tests passed, 113 skipped, 1 failed; the failure isdashboard_test"dashboard page polls the public stats snapshot without private details", which fails the same way on main000b534a2.zig build hip-kernel-teston gfx1151: 20 of 20 steps, 159 of 165 tests passed, 6 skipped, the same as main. Withrdna3_5Aloneforced to true, the new test fails at gfx1151 on two ranks ("expected 0.3, found 0.8"). The host test builds each card'sCaps.ofrow: Flash Next resolves 0.8 on gfx1150–gfx1153 at one rank and 0.3 on gfx1151 at two ranks and on gfx1030, gfx1100 and gfx1201;qwen3_5dense and MoE keep 0.3 on gfx1151;--mtp-confidencewins over the default on every card.Receipt
000b534a2), this, this, main. Both arms of each side are shown.bench_openai --tokens 256 --reps 3): code 46.25 / 46.25 tok/s on main vs 49.06 / 49.13 here (+6.2%), chat 40.09 / 40.08 vs 42.37 / 42.42 (+5.8%).bench_concurrent --levels 1,2,4 --reps 3 --prompts tools/bench_prompts.json --alone --serial --temperatures 1.0,0), aggregate tok/s, steady state in brackets. Greedy: 1 stream 51.5 / 51.5 vs 51.6 / 51.7; 2 streams 67.5 / 67.4 (69.4 / 68.7) vs 66.8 / 66.9 (70.4 / 70.5); 4 streams 67.1 / 67.2 (73.9 / 73.2) vs 69.0 / 69.1 (76.5 / 76.3). Sampled at 1.0: 1 stream 45.2 / 45.2 vs 45.3 / 45.4; 2 streams 59.5 / 59.5 (62.8 / 62.7) vs 61.6 / 61.3 (64.3 / 64.4); 4 streams 64.4 / 64.6 (69.5 / 69.4) vs 67.4 / 67.5 (72.5 / 72.3).--mtp-confidence. Discrete RDNA 2, 3 and 4 cards and groups of GPUs keep 0.3, unchanged from main.--mtp-confidencekeeps its range and wins over the default.000b534a2plus this change, Zig 0.17.0,zig build native-hip -Dhip=true -Dhip-arch=gfx1151 -Doptimize=ReleaseFastwith the system hipcc (HIP 7.1, clang 21), one Strix Halo iGPU (gfx1151), Linux 7.0,unigilby/Qwen3.8-Flash-Next-oQ4e-HIP(revision5a0fb414),--context 131072 --parallel 4 --prompt-cache-gib 0.token_sha256equals main's (42 of 42 warm and 8 of 8 cold, in each arm);bench_concurrent --alone --serialequal in every cell of every arm at both temperatures (alone 3/3, 6/6 and 12/12 at 1, 2 and 4 streams;"draft": false4/4), 0 unequal, 0 failed.bench_cache --require-cold) 12.04 / 12.04 s on main vs 12.00 / 12.00 s here, reply hash equal.Checklist
"draft": false, a resumed prompt equals a fresh one, and concurrent equals solo. Drafted and concurrent are checked above; resumed prompts not re-run.