Skip to content

[None][fix] Seq-slot pool overlap headroom with consistent slot-indexed buffer sizing - #16279

Merged
longlee0622 merged 5 commits into
NVIDIA:mainfrom
qiaoxj07:xqiao/fix-v2-seqslot-overlap-headroom
Jul 14, 2026
Merged

[None][fix] Seq-slot pool overlap headroom with consistent slot-indexed buffer sizing#16279
longlee0622 merged 5 commits into
NVIDIA:mainfrom
qiaoxj07:xqiao/fix-v2-seqslot-overlap-headroom

Conversation

@qiaoxj07

@qiaoxj07 qiaoxj07 commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

Background

Under the overlap scheduler, a request that reaches GENERATION_TO_COMPLETE (GtC) vacates its V2-scheduler budget seat one iteration before its sequence slot is freed (_process_previous_batch runs after the next iteration's prepare_resources). The scheduler backfills the vacated seat with a new request that needs a second concurrent slot, so transient slot demand can reach 2 x max_batch_size while the SeqSlotManager pool holds only max_batch_size * pp_sizeValueError("No free slots"). On attention-DP the same over-accumulation family also surfaces as the _pad_attention_dp_dummy_request assert, and a rank whose only requests sit outside the scheduler window schedules an empty batch without inserting a pad dummy, desyncing collectives; add_dummy_requests can also legitimately return None under resource pressure, which the pad path indexed unconditionally.

Summary (2 commits)

Commit 1 — ADP pad correctness (adopts closed #16161 by @lingjiew, with thanks):

  • _count_schedulable_active_requests (disagg path) counts only requests inside the scheduler window [CONTEXT_INIT, GENERATION_TO_COMPLETE), so ranks holding only GtC / WAIT_SCHEDULER requests insert a pad dummy and keep collectives aligned. Non-disaggregated behavior is unchanged.
  • _pad_attention_dp_dummy_request tolerates add_dummy_requests returning None (skip padding for one iteration instead of crashing on [0]).

Commit 2 — pool headroom with single-sourced sizing:

  • compute_max_num_sequences() is the one sizing function: max_batch_size * pp_size with PP, else 2x under overlap / 1x without.
  • It is threaded into every buffer indexed by py_seq_slot: the SeqSlotManager pool, TorchSampler state, legacy TRTLLMSampler decoder state, the guided decoder (py_executor_creator), SpecMetadata.draft_probs (new num_seq_slots field, Eagle3/MTP one-model rejection sampling), the Eagle3 dynamic-tree slot storage, and the AutoDeploy guided decoder (aligned to AD's own pool).
  • This resolves the previous revision's CI failures: the guided-decoder 2048 vs 4096 size mismatch (sampler was resized without its consumers) and the Nemotron ADP4_MTP mamba dummy-mask assert (previous revision changed non-disagg dummy accounting; this revision does not).

Tests

Validation (clean main @ a201a43 image, hot-patched with exactly this diff)

  • GB300: executor unit suites green — test_py_executor / test_benchmark_disagg / test_kv_cache_v2_scheduler / sizing tests (325 passed). Sampler-suite and eagle3-unittest shards (the previously failing CI stages) running at time of writing; CI on this revision is the arbiter.
  • GB200 4-GPU: standalone repro of TestNemotronV3Ultra::test_nvfp4_4gpus_block_reuse[ADP4_MTP] config (NVFP4 550B, tp4/ep4/attention-DP/MTP3/overlap/block-reuse, 96 concurrent staggered requests) completes successfully with this patch.
  • Disagg caveat: the original No free slots benchmark shape (DSV4 dep32/batch2/mtp3) is a flaky race — an unpatched pass exists — so single benchmark passes are not treated as proof; repeated-run disagg validation is tracked as follow-up. The mechanism itself (GtC budget-vacate vs late slot free) is verified line-by-line, and an equivalent hot-patch previously completed the full 80-minute benchmark on the failing image.

Impact

  • Slot pool and slot-indexed state grow from max_batch_size to 2 x max_batch_size entries under overlap without PP; no change with PP or overlap disabled. No scheduler admission behavior change.

@qiaoxj07
qiaoxj07 marked this pull request as ready for review July 12, 2026 00:12
@qiaoxj07
qiaoxj07 requested a review from a team as a code owner July 12, 2026 00:12
@qiaoxj07
qiaoxj07 requested a review from byshiue July 12, 2026 00:12
@qiaoxj07

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58778 [ run ] triggered by Bot. Commit: 8e97180 Link to invocation

@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The changes adjust overlap-aware sequence capacity calculations, exclude ineligible requests from scheduling counts, and make attention-DP dummy insertion tolerate unavailable KV-cache slots. Tests cover slot sizing, generation-completion states, disaggregated mode, and failed dummy allocation.

Changes

Executor scheduling updates

Layer / File(s) Summary
Overlap-aware slot sizing
tensorrt_llm/_torch/pyexecutor/_util.py, tests/unittest/_torch/executor/test_seq_slot_sizing.py
Executor and sampler sequence capacities now use pipeline-parallel size when present, or overlap-dependent headroom without pipeline parallelism. Scheduler capacity uses max_batch_size * mapping.pp_size, with overlap handling delegated to the V1 lookahead path.
Request eligibility and dummy padding
tensorrt_llm/_torch/pyexecutor/py_executor.py, tests/unittest/_torch/executor/test_py_executor.py
Schedulable counts exclude GENERATION_TO_COMPLETE requests and pending KV transfers. Attention-DP padding skips insertion when dummy allocation returns None, with updated tests for disaggregated modes and allocation failure.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise and accurately summarizes the main overlap-headroom slot-sizing fix and related buffer sizing change.
Description check ✅ Passed The description is detailed and covers background, changes, tests, validation, and impact, though it does not follow the template headings or include the PR checklist.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
tests/unittest/_torch/executor/test_py_executor.py (1)

1383-1404: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider also asserting the resulting active_requests state.

The test confirms a dummy-add was requested (len(stub.add_dummy_calls) == 1) but not that the dummy actually lands in stub.active_requests, which is the behavior that keeps ADP collectives aligned. Strengthening the assertion would catch a regression where the call happens but the returned dummy request is never appended.

     _run_pad(stub)

     assert len(stub.add_dummy_calls) == 1
+    assert len(stub.active_requests) == 2
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unittest/_torch/executor/test_py_executor.py` around lines 1383 - 1404,
The test test_pad_dummy_added_for_rank_whose_requests_are_all_to_complete should
also verify that the dummy request is present in stub.active_requests after
_run_pad. Add an assertion for the resulting active request collection,
preserving the existing add_dummy_calls assertion.

Source: Path instructions

tensorrt_llm/_torch/pyexecutor/_util.py (1)

2088-2097: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate headroom-calc logic — extract a shared helper.

The num_micro_batches derivation is copy-pasted verbatim in create_py_executor_instance and create_torch_sampler_args, with only a comment ("Must match create_py_executor_instance's slot-pool sizing.") enforcing consistency. If one copy is edited later without the other, the sampler's max_num_sequences will silently diverge from the slot-pool size and reintroduce the "No free slots" failure this PR fixes.

♻️ Proposed refactor: shared helper
+def _compute_slot_pool_micro_batches(mapping: Mapping,
+                                      disable_overlap_scheduler: bool) -> int:
+    """Micro-batch multiplier for slot-pool / sampler sequence-capacity sizing.
+
+    Under overlap, prev-iter finished requests still hold slots when the
+    next iteration's prepare_resources runs, so headroom for two in-flight
+    iterations is needed. PP is structurally overlap-style regardless of
+    disable_overlap_scheduler, so it always uses pp_size as the multiplier.
+    """
+    if mapping.has_pp():
+        return mapping.pp_size
+    return 1 if disable_overlap_scheduler else 2
+
+
 def create_py_executor_instance(
     ...
-    if mapping.has_pp():
-        num_micro_batches = mapping.pp_size
-    else:
-        num_micro_batches = 1 if llm_args.disable_overlap_scheduler else 2
-    max_num_sequences = max_batch_size * num_micro_batches
+    num_micro_batches = _compute_slot_pool_micro_batches(
+        mapping, llm_args.disable_overlap_scheduler)
+    max_num_sequences = max_batch_size * num_micro_batches
 def create_torch_sampler_args(...):
-    # Must match create_py_executor_instance's slot-pool sizing.
-    if mapping.has_pp():
-        num_micro_batches = mapping.pp_size
-    else:
-        num_micro_batches = 1 if disable_overlap_scheduler else 2
-    max_num_sequences = max_batch_size * num_micro_batches
+    num_micro_batches = _compute_slot_pool_micro_batches(
+        mapping, disable_overlap_scheduler)
+    max_num_sequences = max_batch_size * num_micro_batches

Also applies to: 2454-2459

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tensorrt_llm/_torch/pyexecutor/_util.py` around lines 2088 - 2097, Extract
the duplicated num_micro_batches and max_num_sequences calculation into a shared
helper in _util.py, then call it from both create_py_executor_instance and
create_torch_sampler_args. Remove the copy-pasted derivation and the
comment-only consistency dependency, ensuring both callers use identical
slot-pool sizing behavior for pipeline parallelism and overlap scheduling.
tests/unittest/_torch/executor/test_seq_slot_sizing.py (1)

1-45: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test coverage: sufficient for create_torch_sampler_args, but tied to duplicated logic.

Coverage of the four pp_size/disable_overlap/expected_factor combinations is sufficient and correctly matches the implementation in _util.py. However, this test only exercises create_torch_sampler_args; the identical (but separately duplicated) logic in create_py_executor_instance for max_num_sequences sizing has no equivalent direct test. If the duplicated logic in _util.py is extracted into a shared helper (see review on that file), consider testing that helper directly so both call sites stay covered by one test.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unittest/_torch/executor/test_seq_slot_sizing.py` around lines 1 - 45,
Extend coverage beyond create_torch_sampler_args by extracting the shared
max_num_sequences sizing logic used by create_torch_sampler_args and
create_py_executor_instance into a common helper, then test that helper with the
existing pp_size/disable_overlap/expected_factor cases. Update both call sites
to reuse the helper so the same behavior remains covered consistently.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/unittest/_torch/executor/test_seq_slot_sizing.py`:
- Around line 30-31: Run ruff format on the test_seq_slot_sizing.py file and
apply its formatting changes, particularly to
test_sampler_max_num_sequences_includes_overlap_headroom, so the file passes the
CI ruff-format check.

---

Nitpick comments:
In `@tensorrt_llm/_torch/pyexecutor/_util.py`:
- Around line 2088-2097: Extract the duplicated num_micro_batches and
max_num_sequences calculation into a shared helper in _util.py, then call it
from both create_py_executor_instance and create_torch_sampler_args. Remove the
copy-pasted derivation and the comment-only consistency dependency, ensuring
both callers use identical slot-pool sizing behavior for pipeline parallelism
and overlap scheduling.

In `@tests/unittest/_torch/executor/test_py_executor.py`:
- Around line 1383-1404: The test
test_pad_dummy_added_for_rank_whose_requests_are_all_to_complete should also
verify that the dummy request is present in stub.active_requests after _run_pad.
Add an assertion for the resulting active request collection, preserving the
existing add_dummy_calls assertion.

In `@tests/unittest/_torch/executor/test_seq_slot_sizing.py`:
- Around line 1-45: Extend coverage beyond create_torch_sampler_args by
extracting the shared max_num_sequences sizing logic used by
create_torch_sampler_args and create_py_executor_instance into a common helper,
then test that helper with the existing pp_size/disable_overlap/expected_factor
cases. Update both call sites to reuse the helper so the same behavior remains
covered consistently.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c681afc1-5027-4071-a43b-6a047838c13c

📥 Commits

Reviewing files that changed from the base of the PR and between 33a4545 and 8e97180.

📒 Files selected for processing (4)
  • tensorrt_llm/_torch/pyexecutor/_util.py
  • tensorrt_llm/_torch/pyexecutor/py_executor.py
  • tests/unittest/_torch/executor/test_py_executor.py
  • tests/unittest/_torch/executor/test_seq_slot_sizing.py

Comment thread tests/unittest/_torch/executor/test_seq_slot_sizing.py Outdated
@qiaoxj07

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58778 [ run ] completed with state FAILURE. Commit: 8e97180
/LLM/main/L0_MergeRequest_PR pipeline #47360 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58779 [ run ] triggered by Bot. Commit: 4c1b4f8 Link to invocation

@qiaoxj07

Copy link
Copy Markdown
Collaborator Author

Validation passed. A/B run completed: GB300 DSV4-Pro disagg e2e ctx1_gen1_dep32_batch2_eplb0_mtp3_concurrency144_maxnt8, the exact failing image with exactly this patch hot-applied (nothing else changed — configs/envs byte-identical).

  • Full AgentX concurrency-144 profiling ran to completion and exported results: 3.32B prompt tokens (95.8% cache-read) / 24.8M completion tokens processed, TTFT avg 20.4s, ITL avg 9.4ms, output throughput 6,805 tok/s, request throughput 6.35 req/s.
  • Zero No free slots / hang-detector / assertion events in both CTX and GEN worker logs over the entire ~80-minute run.
  • Unfixed, this shape failed 100% of the time within ~100 ms of the first request burst (No free slots on current main; _pad_attention_dp_dummy_request assert on earlier mains) and had never passed on any main-lineage build; the startup log also confirms the fix active (max_num_requests=4 vs 2 before).

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58779 [ run ] completed with state SUCCESS. Commit: 4c1b4f8
/LLM/main/L0_MergeRequest_PR pipeline #47361 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@qiaoxj07

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58785 [ run ] triggered by Bot. Commit: 4c1b4f8 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58785 [ run ] completed with state SUCCESS. Commit: 4c1b4f8
/LLM/main/L0_MergeRequest_PR pipeline #47367 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@lancelly

Copy link
Copy Markdown
Collaborator

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58854 [ run ] triggered by Bot. Commit: 4c1b4f8 Link to invocation

Comment thread tensorrt_llm/_torch/pyexecutor/py_executor.py
@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #58854 [ run ] completed with state SUCCESS. Commit: 4c1b4f8
/LLM/main/L0_MergeRequest_PR pipeline #47403 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

Comment thread tensorrt_llm/_torch/pyexecutor/py_executor.py Outdated
qiaoxj07 added 2 commits July 13, 2026 16:19
…location failure

Adopt the fix from PR NVIDIA#16161 (closed in favor of this PR):

1. _count_schedulable_active_requests (disaggregated mode): count only
   requests inside the scheduler's schedulability window
   [CONTEXT_INIT, GENERATION_TO_COMPLETE), mirroring
   no_schedule_until_state / no_schedule_after_state. States outside the
   window (awaiting KV transfer, DISAGG_CONTEXT_WAIT_SCHEDULER,
   GENERATION_TO_COMPLETE) cannot produce forward work; counting them
   suppresses the ADP pad dummy while the rank schedules batch=0, which
   turns can_queue False fleet-wide and stalls every rank (surfaces as
   the expected_num_active_requests assert or leaked pad dummies).
   Non-disaggregated behavior is unchanged.

2. _pad_attention_dp_dummy_request: add_dummy_requests returns None when
   no cache resources are free for even a 1-token dummy; skip padding
   for the iteration instead of crashing on an unchecked [0].

Signed-off-by: Xianjie <5410381+qiaoxj07@users.noreply.github.com>
…ed buffer sizing

Under the overlap scheduler a finishing request holds its sequence slot
until the next iteration's _process_previous_batch, while the V2
scheduler has already dropped it from the request budget
(no_schedule_after_state=GENERATION_TO_COMPLETE) and backfilled its
seat. Transient slot demand therefore reaches 2 * max_batch_size and
SeqSlotManager raises ValueError("No free slots") (DSV4-Pro disagg GEN
dep32/batch2/mtp3 dies at the first request burst).

Size the pool with overlap headroom via a single-sourced
compute_max_num_sequences (max_batch_size * num_micro_batches: pp_size
with PP, else 2 under overlap), and size every buffer indexed by
py_seq_slot from the same number so slot ids stay in range:

- sampler state (create_torch_sampler_args) and the legacy TRTLLMSampler
  decoder state
- guided-decoder per-slot buffers (py_executor_creator; AutoDeploy's
  guided decoder aligned to its own pool, which keeps pp_size headroom)
- SpecMetadata.draft_probs for rejection sampling (new num_seq_slots
  field, threaded from model_engine)
- eagle3 dynamic-tree DynamicTreeSlotStorage (new max_num_seq_slots,
  threaded via get_spec_resource_manager); batch-position work buffers
  keep num_trees sizing

V1 scheduler capacity stays max_batch_size * pp_size (V1 retains
GENERATION_TO_COMPLETE in capacity and handles overlap via
two_step_lookahead); the V2 request budget stays max_batch_size.

Signed-off-by: Xianjie <5410381+qiaoxj07@users.noreply.github.com>
@qiaoxj07
qiaoxj07 force-pushed the xqiao/fix-v2-seqslot-overlap-headroom branch from 4c1b4f8 to 865e9c0 Compare July 13, 2026 09:56
@qiaoxj07
qiaoxj07 requested review from a team as code owners July 13, 2026 09:56
@chienchunhung

Copy link
Copy Markdown
Collaborator

/bot run --post-merge --disable-fail-fast --stage-list "GB300-4_GPUs-PyTorch-Post-Merge-1, GB300-4_GPUs-PyTorch-Post-Merge-2, GB300-4_GPUs-PyTorch-Post-Merge-3, A30-PyTorch-1, A30-PyTorch-2, DGX_H100-4_GPUs-PyTorch-Others-1, DGX_H100-4_GPUs-PyTorch-Others-2, DGX_H100-4_GPUs-PyTorch-DeepSeek-1, DGX_H100-4_GPUs-PyTorch-Post-Merge-1"

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59026 [ run ] triggered by Bot. Commit: 3895d4f Link to invocation

@chienchunhung

Copy link
Copy Markdown
Collaborator

Hi @qiaoxj07,

Based on the offline discussion, I pushed 3895d4fe40dc87faca6f2543d4cf981995c93952 to this PR as an attempt to address the comments I made earlier. Feel free to make further modification as you see fit. Thanks!

Comment thread tensorrt_llm/_torch/models/modeling_qwen2vl.py Outdated
Comment thread tensorrt_llm/_torch/pyexecutor/mamba_cache_manager.py Outdated
Comment thread tensorrt_llm/_torch/auto_deploy/shim/ad_executor.py Outdated
@chienchunhung

Copy link
Copy Markdown
Collaborator

Thanks @Tabrizian — I’ve reworked the patch to keep PR #16279 focused on the merge-critical DSv4 path. The Qwen, Mamba, AutoDeploy, generic Eagle/dynamic-tree, PP, and other non-DSv4 behavior has been restored and can be handled in follow-up PRs.

The remaining changes are now gated at two deliberately different boundaries:

  • The dummy-padding state and rollback fixes apply only to non-PP DSv4 disaggregated execution. These issues are independent of overlap scheduling and speculative decoding.
  • The additional sequence-slot headroom applies only to the non-PP DSv4 + MTP Eagle one-model + overlap configuration. Expanding it to other speculative modes would also require resizing their mode-specific slot-indexed storage, which would broaden this PR again.

One thing I'd like to call out: restricting this to DSv4 is more involved than adding a single model check: model identity is established after loading, while SeqSlotManager and every py_seq_slot-indexed consumer must agree on capacity. The dummy-lifecycle and slot-headroom fixes also require different gates, plus explicit fallback behavior for non-DSv4 and PP paths. The previous generic approach is much cleaner because it establishes one shared capacity invariant, reuses the scheduler’s eligibility contract, and makes dummy allocation transactional across configurations. Given the urgency, it's fine to use the DSv4 gates here; the generic cleanup should come next.

@chienchunhung
chienchunhung requested a review from Tabrizian July 14, 2026 00:03
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
@chienchunhung

Copy link
Copy Markdown
Collaborator

By the way, it does not seem like we have DSv4 + disaggregation + ADP + MTP one-model + overlap scheduling coverage in TRTLLM.

@chienchunhung

Copy link
Copy Markdown
Collaborator

/bot run --post-merge --disable-fail-fast --stage-list "GB300-4_GPUs-PyTorch-Post-Merge-1, GB300-4_GPUs-PyTorch-Post-Merge-2, GB300-4_GPUs-PyTorch-Post-Merge-3, GB200-4_GPUs-PyTorch-1, GB200-4_GPUs-PyTorch-3, DGX_H100-4_GPUs-PyTorch-Others-1, DGX_H100-4_GPUs-PyTorch-Others-2, DGX_H100-4_GPUs-PyTorch-DeepSeek-1"

@chienchunhung
chienchunhung self-requested a review July 14, 2026 00:29
@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59051 [ run ] triggered by Bot. Commit: 25a2422 Link to invocation

@chienchunhung chienchunhung left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR looks good to me for DSv4-only scope. A couple of follow-up items should:

  1. Generalize scheduler eligibility beyond DSv4
  2. Generalize safe dummy allocation
  3. Generalize sequence-slot capacity
  4. Add E2E coverage for "DSv4+ disagg + ADP + MTP Eagle one-model + overlap scheduler"

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59026 [ run ] completed with state ABORTED. Commit: 3895d4f

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59051 [ run ] completed with state SUCCESS. Commit: 25a2422
/LLM/main/L0_MergeRequest_PR pipeline #47577 (Partly Tested) completed with status: 'SUCCESS'

CI Report

Link to invocation

@longlee0622

Copy link
Copy Markdown
Collaborator

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59079 [ run ] triggered by Bot. Commit: 25a2422 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59079 [ run ] completed with state SUCCESS. Commit: 25a2422
/LLM/main/L0_MergeRequest_PR pipeline #47597 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@longlee0622

Copy link
Copy Markdown
Collaborator

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59136 [ run ] triggered by Bot. Commit: 25a2422 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59136 [ run ] completed with state FAILURE. Commit: 25a2422
/LLM/main/L0_MergeRequest_PR pipeline #47645 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@qiaoxj07

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59180 [ run ] triggered by Bot. Commit: 25a2422 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #59180 [ run ] completed with state SUCCESS. Commit: 25a2422
/LLM/main/L0_MergeRequest_PR pipeline #47684 completed with status: 'SUCCESS'

CI Report

Link to invocation

@longlee0622
longlee0622 merged commit 1662a87 into NVIDIA:main Jul 14, 2026
7 checks passed
@qiaoxj07
qiaoxj07 deleted the xqiao/fix-v2-seqslot-overlap-headroom branch July 14, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants