Repository navigation
Conversation
ashhart
force-pushed
the
lead/s232-prompt-rows
branch
from
November 4, 2026 17:23
c6da4a3 to
1e56684
Compare
8 tasks done
ashhart
force-pushed
the
lead/s232-prompt-rows
branch
from
November 5, 2026 20:31
2afa2db to
0e3aa10
Compare
Count the actual target slices in the shared Metal prompt path. Keep verify and drafter absorb work out of the list and preserve inference when observation allocation fails. Forward the request-owned list through the lane host and existing raw/chat runtime fields. Host regressions cover stepped and serial cuts, the lone scheduler, drafted verify exclusion, observation failure, mailbox ownership, and whole/streamed raw and chat replies. Refs #2089, #2120.
Share the request-owned observation policy with Qwen27. Count GLM chunks after completion and Nemotron prompt buffers at their existing landing wait, preserving its one-chunk lookahead. Clear abandoned observation owners on a failed release drain. Host cases exercise chunked and one-pass prompts, actual cut planning, completion and ownership, verify exclusion, and request stats. Add shader-free compiles of the real family callbacks. Refs #2089, #2120.
ashhart
force-pushed
the
lead/s232-prompt-rows
branch
from
November 6, 2026 00:21
0e3aa10 to
f57d2a4
Compare
Owner
Author
|
The M3 Ultra run is in: Qwen3.8-27B MLX 4-bit, one stream, plain and with the DFlash2 drafter, six runs per arm. The base is #2293's head and the new arm is this branch on top of it, so both builds report their prompt pass widths.
So wider passes on decode's attention arithmetic are slower than main's simdgroup prompt kernel at 128 rows, by a quarter at 16K, and they change replies. That's not a trade worth making, so I'm closing this draft. The prompt-width stage of #2089 needs a faster wide prompt kernel, not this route, and the long-history decode gap stays open there. The prompt pass widths themselves stay in #2293. |
ashhart
added a commit
that referenced
this pull request
Nov 6, 2026
Count the actual target slices in the shared Metal prompt path. Keep verify and drafter absorb work out of the list and preserve inference when observation allocation fails. Forward the request-owned list through the lane host and existing raw/chat runtime fields. Host regressions cover stepped and serial cuts, the lone scheduler, drafted verify exclusion, observation failure, mailbox ownership, and whole/streamed raw and chat replies. Refs #2089, #2120.
ashhart
added a commit
that referenced
this pull request
Nov 6, 2026
Share the request-owned observation policy with Qwen27. Count GLM chunks after completion and Nemotron prompt buffers at their existing landing wait, preserving its one-chunk lookahead. Clear abandoned observation owners on a failed release drain. Host cases exercise chunked and one-pass prompts, actual cut planning, completion and ownership, verify exclusion, and request stats. Add shader-free compiles of the real family callbacks. Refs #2089, #2120.
ashhart
added a commit
that referenced
this pull request
Nov 6, 2026
Count the actual target slices in the shared Metal prompt path. Keep verify and drafter absorb work out of the list and preserve inference when observation allocation fails. Forward the request-owned list through the lane host and existing raw/chat runtime fields. Host regressions cover stepped and serial cuts, the lone scheduler, drafted verify exclusion, observation failure, mailbox ownership, and whole/streamed raw and chat replies. Refs #2089, #2120.
ashhart
added a commit
that referenced
this pull request
Nov 6, 2026
Share the request-owned observation policy with Qwen27. Count GLM chunks after completion and Nemotron prompt buffers at their existing landing wait, preserving its one-chunk lookahead. Clear abandoned observation owners on a failed release drain. Host cases exercise chunked and one-pass prompts, actual cut planning, completion and ownership, verify exclusion, and request stats. Add shader-free compiles of the real family callbacks. Refs #2089, #2120.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft until it has run on an M3 Ultra. Not yet measured on a device.
This changes replies. Every Qwen3.8-27B prompt longer than one token on M1-M4 moves from the simdgroup prompt kernel to the decode path's attention arithmetic, at every width, not only past 128 rows. M5, the GQA16 and 16-over-4 shapes, and decode and draft-verify rounds don't change.
What will qualify it: byte equality with main can't, since the arithmetic differs. The check is that a prompt's state equals the state the same tokens give when fed as decode rows, at 2, 128, 129, 512 and 2,048 rows; then replies compared with main with the difference stated, and prompt speed at 1k, 8k and 32k. It overlaps #2106 on the same kernels, so that lands first.
What this changes
Qwen3.8-27B on M1-M4 previously executed at most 128 prompt rows even when its frame held more. Validated single chains now follow the admitted frame through canonical tail attention, up to 2,048 rows. Trees and mixed streams retain 128 rows; M5 and other attention geometries keep their existing selection.
The tail retains decode's half probabilities, per-row key chunks, reductions and merge. Main's simdgroup prompt uses different arithmetic, so pre-M5 prompt states can change from main. The byte replacement is against main's one-row decode tail. Performance and model qualification remain pending.
Checks on this head
zig build -Dtarget=aarch64-linux-gnu -j1 --summary all: 31/31 steps pass.zig build test-cuda-host -j1 --summary all: initially 4576/4604 tests passed, 19 skipped, 9 failed. After disk headroom recovered, the two affected binaries reran with the same seed: 316 passed/1 skipped/0 failed, and 946 passed/3 skipped/1 failed. All eight recall failures cleared; the inherited HTTPS tunnel assertion remains. The 4 GiB write floor and server tests are unchanged.Receipt
Kernel contract
SUMMARYand exit status: unchecked; no device execution here. M1-M5 device receipts are still owed. The masked-P.V NaN repair is outside this patch.Checklist