Repository navigation
Conversation
Contributor
|
Device check of this head on a DGX Spark (GB10, 128 GB unified memory), Qwen3.8 Flash Next
Replies were byte-identical between the two builds in all five runs (68 requests per build, 0 errors).
Not run: |
…the reply as on Nemotron After a chat reply the server sends a background prompt-only pass over the reply as the next turn's prompt renders it. Flash Next on CUDA did not take it, so every next turn resumed at its history's end and prefilled the reply again. The family now declares warm_quiet, 150 ms as Nemotron's. Its CUDA cache rules then wait for quiet and keep the pass's state one token short of its end, since the MTP head reads one token on. The native CUDA host turns warm turns on when the prompt cache is on and one rank serves. The family keeps and resumes states at any row, so the pass needs no message-start cuts. With --tp the store's warm rule is off and the server sends no pass. The pass gives way to real work. Its whole-prompt prefill asks before each chunk whether to step aside, and when it does it keeps the state it reached. Its chunks take the busy chunk's rows, 1,536 by default, where a one-stream server's solo pass takes 8,192, so a request that arrives waits for at most that many rows. The lane host now also counts another request's prompt that is still filling a chunk a round as work. Before, a pass taken beside one saw no queued request and no decoding stream. It waited out its quiet on the lane thread while that prompt stood still, then ran whole. Warm passes on every host with a fill queue now give way sooner, and replies are unchanged. Requests that are not warm passes take the same path and the same rows as before. Warm states go through the store's budget and eviction like every other mark. Host tests: a warm pass taken while a request's prompt is filling runs no chunk, or yields at its first, and the request finishes. On main's lane host the pass ran whole and the test fails with expected .cancelled, found .length. A Flash Next CUDA warm pass steps aside before its first chunk through the real lane opener, and Flash Next's CUDA cache rules keep warm marks.
ashhart
force-pushed
the
lead/flashnext-cuda-warm-turns
branch
from
November 14, 2026 03:31
9ab8aed to
668492e
Compare
This branch has not been deployed
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.
Flash Next on CUDA now takes the background pass the server sends after a chat reply, as Nemotron on CUDA and Flash Next on Metal already do. The next turn resumes past the reply instead of prefilling it again.
warm_quiet, 150 ms as on Nemotron. Its CUDA cache rules then wait for quiet and keep the pass's state one token short of its end, since the MTP head reads one token ahead. The family keeps and resumes states at any row, so the pass needs no message-start cuts and none are added.--tpthe store's warm rule is off and the server sends no pass. With--prompt-cache-gib 0nothing changes.Host tests: a warm pass taken while a request's prompt is filling runs no chunk, or yields at its first, and the request finishes (this test fails without the lane host change); a Flash Next CUDA warm pass steps aside before its first chunk through the real lane opener; Flash Next's CUDA cache rules keep warm marks.
test-lane-api-host,test-cuda-hostand the Linux CUDA test compile pass.Device check on a GB10 (running): cold prompt and decode A B B A with replies equal to main, and a five-turn chat at 1 and 4 streams, cache on against cache off, greedy and seeded, drafted and not, with cached tokens past each reply from turn 2 and a request sent during a warm pass. Results go here before this lands.
Fixes #3176