-
Notifications
You must be signed in to change notification settings - Fork 2.6k
[None][fix] enable DSv4 overlap slot headroom without MTP #17282
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -446,15 +446,14 @@ def __init__( | |
| self.model = model | ||
| pretrained_config = self.model.model_config.pretrained_config | ||
| model_type = getattr(pretrained_config, "model_type", None) | ||
| # Keep the scheduler/dummy fix model-scoped, while the larger slot pool | ||
| # is restricted to the validated MTP overlap configuration. PP remains | ||
| # on its established path for follow-up changes. | ||
| # Keep the scheduler/dummy fix and larger slot pool model-scoped. The | ||
| # overlap lifetime requires headroom with or without speculative | ||
| # decoding. PP remains on its established path. | ||
| self._enable_dsv4_adp_dummy_fixes = (should_enable_dsv4_adp_dummy_fixes( | ||
| model_type, mapping)) | ||
| self._enable_dsv4_overlap_headroom = ( | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This now doubles the slot pool for every non-PP DSv4 run, including plain no-spec-decode serving, which doubles the sampler's per-slot state ( |
||
| should_enable_dsv4_overlap_headroom( | ||
| model_type, spec_config, mapping, | ||
| llm_args.disable_overlap_scheduler)) | ||
| model_type, mapping, llm_args.disable_overlap_scheduler)) | ||
| self.max_num_seq_slots = compute_max_num_sequences( | ||
| mapping, | ||
| self.batch_size, | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The mechanism you describe in the PR body — terminal requests holding slots while the V2 scheduler backfills their seats — is model-agnostic. Every non-PP model with overlap scheduling has the same latent 2× demand; DSv4 just happens to be the one where ADP dummy requests saturate the pool often enough to hit it. Keeping the gate model-scoped is a defensible risk call for a fix PR, but it means the same hang is still reachable elsewhere. Is there a follow-up ticket to validate and generalize? Worth naming it in the docstring so this doesn't sit as a permanent special case.