Repository navigation
Conversation
…est fits The DFlash-family delayer (auto-enabled for DSpark, threshold 4 at 256 running requests) held fresh prefills until four request slots were free. When fewer requests than that were waiting and all of them fit, nothing more could be batched, yet they waited until running requests finished: at 254 running with 2 queued, those 2 waited for the whole decode of the batch. Delay only while the free slots are fewer than the threshold and fewer than the waiting requests.
4 of 5 tasks
Collaborator
Author
|
Carried onto |
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.
Motivation
For the DFlash family (DSpark included) the scheduler auto-enables
MinFreeSlotsDelayer, which holds fresh prefills untilmin(4, max(2, (max_running_requests + 5) // 6))request slots are free so they are admitted together. When fewer requests than that are waiting and all of them already fit, waiting cannot batch anything more; it only delays them until running requests finish.On DeepSeek-V4.1-Flash with DSpark and 256 concurrent requests, the server settles at 254 running with 2 queued. With 2 free slots and a threshold of 4, those 2 requests wait for the whole decode of the batch (about 57 s), which is the 86-90 s maximum TTFT of every such burst.
Modifications
MinFreeSlotsDelayer.should_delaytakes the number of waiting requests and delays only while the free slots are fewer than both the threshold and the waiting requests. With at leastthresholdrequests waiting the behavior is unchanged.len(self.waiting_queue).Accuracy Tests
GSM8K (64 fixed questions, natural EOS, concurrency 64) on every server: 61-63/64 in both arms.
Speed Tests and Profiling
MI355X x4, TP4/EP4, DeepSeek-V4.1-Flash
dba1be0a, this branch ate2e824dc58, the cookbook MI350X Low-Latency cell (DSpark block 5) with--cuda-graph-max-bs-decode 256, AITER built as in this branch's Dockerfile, plus #8's int64 FlashMLA store fix in both arms. 256 distinct real-text 4096-token prompts submitted at once, 3072 forced output tokens, temperature 0; fresh servers in ABBA order, two scored bursts per server.Checklist
CI States
Latest PR Test (Base): ❌ Missing
run-cilabel -- add it to run CI tests.Latest PR Test (Extra): ❌ Blocked --
run-ciis required first.Latest PR Test (AMD ROCm 7.2): ➖ No AMD PR run found for this commit.