fix(spec-decode): separate DFlash target and query input budgets - #605
Conversation
Track DSpark target inputs and fixed draft-query inputs with separate scheduler budgets. This lets each execution stage use the configured batch capacity while retaining an independent limit for the draft stage. Add scheduler coverage for both target-stage and draft-stage saturation. Signed-off-by: Martin Vit <martin@voipmonitor.org>
DFlash executes its target forward and K+1 parallel-query forward sequentially in the same model-runner input buffer. Account for the two peaks independently so draft queries do not reduce target prefill capacity, while still limiting the number of scheduled requests to the query-buffer capacity. The full core scheduler suite passes 165 tests. The preceding DSpark budget commit retains guptaishaan as its author. Signed-off-by: Martin Vit <martin@voipmonitor.org>
|
@coderabbitai review |
|
Warning Review limit reachedNext included review available in 52 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
|
@coderabbitai review |
|
Independent integration qualificationStatus: qualified at the PR head embedded in Five focused scheduler cases passed for ordinary speculative reservation, The R20 serving gate used four stock-clock RTX PRO 6000 Blackwell Workstation
All cells completed without API errors or queued requests. This validates |
0f54f47
into
local-inference-lab:dev/jovian-judgement
Purpose
DFlash executes its target forward and its
K + 1parallel-query forwardsequentially in the same model-runner input buffer. The scheduler previously
reserved both peaks additively, so DFlash K7 reduced an 8,192-token target
prefill step even though the query forward used the buffer only after target
execution completed.
This change tracks a separate parallel-draft input budget. Target scheduling
can use the full configured token budget, while request admission remains
bounded so all DFlash query rows fit. DSpark retains the same independent-budget
contract with
Kquery rows per request.Attribution and duplicate analysis
The first commit is the unmodified logical change from
vllm-project#52996 and retains
guptaishaanas author. The second commitextends that accounting to DFlash and retains Martin Vit as author.
vllm-project#52996 covers DSpark but not DFlash. vllm-project#41971
allocates DFlash lookahead KV slots during first prefill; it does not separate
model-runner input-buffer peaks. #519 and #520 change
DFlash cache geometry, not scheduler input accounting. Searches of both the
upstream and local repositories found no open DFlash input-budget PR.
Correctness contract
Krows from its separate query budget.K + 1rows from its separate query budget.Validation
Directly on this two-commit pull-request head:
The complete scheduler file produced
154 passed, 1 failed. The single failureis
test_abort_request_when_structured_output_fsm_cannot_advance, which failsidentically on the unmodified
dev/jovian-judgementbase because its manuallyconstructed
Schedulerlacksacceptance_length_controller; it is unrelatedto input-budget accounting. The composed GLM integration tree, whose fixture
already initializes that field, passed all 165 scheduler tests.
TP4/DCP1 GLM-5.3-Flash DFlash2 K7 serving on four stock-clock RTX PRO 6000
Blackwell Workstation Edition GPUs completed a cold 32k prefill at 15,019
prompt tok/s. The run used 2,048-token target/recurrent pages, an 8,192-token
scheduler budget, B12X attention/MoE/linear backends, 16 NCCL channels, and a
2 MiB NCCL buffer.
AI assistance was used to inspect execution contracts, prepare the DFlash
extension, run tests, and draft this description. The submitter reviewed the
changed files and validation results.