Skip to content

[TRTLLM-13409][fix] give the benchmark-disagg fill gate's retry loop a deadline - #17202

Merged
JunyiXu-nv merged 5 commits into
NVIDIA:mainfrom
JunyiXu-nv:dev-junyix-fix-disagg-fill-gate-deadlock
Aug 24, 2026
Merged

[TRTLLM-13409][fix] give the benchmark-disagg fill gate's retry loop a deadline#17202
JunyiXu-nv merged 5 commits into
NVIDIA:mainfrom
JunyiXu-nv:dev-junyix-fix-disagg-fill-gate-deadlock

Conversation

@JunyiXu-nv

@JunyiXu-nv JunyiXu-nv commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Rewritten 2026-08-03. The original version of this PR moved
_handle_kv_transfer_timeouts_synced() above the gate's continue. That fix
was ineffective and the reasoning behind it was wrong
— see "What the first
attempt got wrong" at the bottom. The branch has been force-pushed with a
different fix.

The bug

_check_benchmark_disagg_gate() retries until the fill completes, with no bound.

While it spins the job is effectively invisible. The continue the gate drives sits before iter_counter += 1, so the iteration counter freezes while wall-clock advances. The only outward sign is a stream of byte-identical iteration lines about 110 ms apart — which is this gate's own time.sleep(0.1) observed from outside.

Archived wedges show tens of thousands of those lines before Slurm kills the job. One example: 48,486 identical lines over ~90 minutes, with num_scheduled_requests, kv_cache_util and currank_total_requests constant to three decimals, and host_step_time = 110.14ms.

Correction (2026-08-05): those archived wedges are NOT what this PR fixes

A log analysis of 12 of those stages (GB300 disagg perf-sanity, builds 2859-2863)
root-caused them to a different bug, since fixed on main by 37a7c09818
("[nvbugs/6510284][fix] Clamp benchmark fill target in PyExecutor", #16961).

There, gate condition (A) num_fetch_requests >= benchmark_req_queues_size was
arithmetically unsatisfiable: while the gate is closed nothing completes, so the
fetch count is bounded by tp_size x max_batch_size, and the harness could set the
target above that bound (4301 vs 4096, 180 vs 128, 666 vs 512, 8 vs 1). #16961 clamps
the target to the capacity, and the hang burn on those stages fell from ~338 to
~17 GPU-h/day.

So the 110 ms spin signature quoted above is real, but it is that bug's fingerprint,
not evidence of an unbounded wait that survives #16961.
I am leaving the description
of the signature in place because it is still exactly what this bound would surface.

Why this PR is still worth having

The gate has three conditions. #16961 makes (A) always reachable. It does nothing
for:

  • (B) every active request past its KV-transfer state, and
  • (C) kv_cache_transceiver.check_gen_transfer_complete().

Both can stall indefinitely, and the same analysis found that the machinery meant to
bound them cannot fire in the shipped gen_only configuration: kv_transfer_timeout_ms
is 600 s but is unreachable code on the GEN side under
TRTLLM_DISABLE_KV_CACHE_TRANSFER_OVERLAP=1 (_recv_disagg_gen_cache returns before
the arming block), and in-flight cancellation is separately disabled by
transceiver_runtime: PYTHON.

So a (B)/(C) stall today is still an unbounded, silent wait. That is the case this
bound covers. I have no archived instance of a (B)/(C) stall to point at -- the
justification is structural, not empirical, and reviewers should weigh it on that basis.

Related and worth doing alongside: the gate's own diagnostic at
_is_benchmark_disagg_fill_complete names the blocking ranks and per-state counts but
is logger.debug, so 90 minutes of spinning emitted zero lines about the cause. That is
not in this PR.

The fix

Bound the retry on lack of progress, not on elapsed time.

A fill that is merely slow keeps resetting the clock and is never killed. Only a fill that makes no progress at all for the whole window raises. TRTLLM_BENCHMARK_DISAGG_FILL_STALL_SEC=0 disables the bound; the default is 600 s.

Raising surfaces the stall through the executor loop's existing error path rather than adding a second one, and the rank that raises names itself in the message.

Tests

tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py — no GPU:

  • the bound fires once the window elapses;
  • the message names the rank and the env var;
  • a slow-but-advancing fill survives 60 s against a 5 s window — the regression this must not cause;
  • progress resets the clock, so stall → recover → stall starts the second window from zero;
  • 0 disables the bound;
  • a single no-progress pass only arms the clock rather than raising.

What the first attempt got wrong

Worth recording, because the mistake is easy to repeat.

The original claim was that _handle_kv_transfer_timeouts_synced() — the drain that would surface the timeout — sits after the gate's continue, so moving it above would let the existing error propagate. Two things were wrong:

  1. The state named was wrong. _check_kv_transfer_timeout() sets req.py_kv_transfer_timed_out, not DISAGG_TRANS_ERROR. That state is set on the transfer-status path (_update_sampler_state_for_disagg_gen_request, _check_disagg_gen_cache_transfer_status), which is unrelated to the timeout.

  2. The fix would have done nothing. _pending_timed_out_requests — the buffer the drain reads — has exactly one populator, _handle_responses(). That is also downstream of the continue (L4156 in _executor_loop, reached via _process_previous_batch() at L4685 in _executor_loop_overlap). So during a spin the buffer is never filled, and the relocated drain would have run a tp_allgather on an empty list every iteration — pure cost, no effect.

The verification error was checking that the drain was downstream of the continue and stopping there, without checking where the buffer was filled. The original unit tests passed because the stub modelled the drain as clearing the error directly, which encoded the assumption rather than testing it.

Status

Draft — not yet validated on multi-GPU hardware. The reasoning is from source and archived wedge logs; the unit tests cover the bound's arming, firing and reset, not a real stalled transfer.

Dev Engineer Review

  • Added a configurable lack-of-progress deadline to _check_benchmark_disagg_gate().
  • Uses a 600-second default and TRTLLM_BENCHMARK_DISAGG_FILL_STALL_SEC for overrides.
  • Treats 0 as disabled.
  • Uses the default for malformed or non-finite values.
  • Resets the deadline when fill progress occurs.
  • Raises a rank-specific error after the deadline expires.
  • No public API or configuration-file changes were identified.
  • CI failures require investigation before merge.
  • Multi-GPU behavior remains unvalidated.

QA Engineer Review

  • Added CPU-only tests for timeout failures, diagnostic messages, progress resets, disabled timeouts, initial timer arming, non-finite values, valid overrides, zero-value opt-out, slow progress, and CPU execution.
  • Updated MockBenchmarkExecutor to support the stall-checking logic.
  • The new unit tests are not listed in tests/integration/test_lists/ or associated test-db/ or qa/ files.
  • Verdict: needs follow-up because CBTS coverage data is unavailable and CI reported failed pipelines.

@JunyiXu-nv
JunyiXu-nv force-pushed the dev-junyix-fix-disagg-fill-gate-deadlock branch from 10e576e to d7c12ca Compare August 3, 2026 13:40
@JunyiXu-nv JunyiXu-nv changed the title [TRTLLM-13409][fix] drain the KV-transfer timeout before the disagg fill gate retries [TRTLLM-13409][fix] give the benchmark-disagg fill gate's retry loop a deadline Aug 3, 2026
@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63472 [ run ] triggered by Bot. Commit: d7c12ca Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #63472 [ run ] completed with state SUCCESS. Commit: d7c12ca
/LLM/main/L0_MergeRequest_PR pipeline #51442 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

…a deadline

`_check_benchmark_disagg_gate()` retries until the fill completes, with no
bound. While it spins the job is invisible: the `continue` it drives sits
before `iter_counter += 1`, so the iteration counter freezes while wall-clock
advances, and the only outward sign is a stream of byte-identical iteration
lines ~110 ms apart -- this gate's own `time.sleep(0.1)` seen from outside.
Archived wedges show tens of thousands of them before Slurm kills the job.

Bound the retry on LACK OF PROGRESS rather than on elapsed time: a fill that
is merely slow keeps resetting the clock and is never killed; only a fill that
makes no progress at all for the whole window raises.
`TRTLLM_BENCHMARK_DISAGG_FILL_STALL_SEC=0` disables the bound; the default is
600 s.

Raising surfaces the stall through the executor loop's existing error path
rather than adding a second one, and the rank that raises names itself.

Tests (no GPU): the bound fires after the window; the message names the rank
and the knob; a slow-but-advancing fill survives 60 s against a 5 s window;
progress resets the clock; 0 disables it; and a single no-progress pass only
arms the clock rather than raising.

Signed-off-by: JunyiXu-nv <219237550+JunyiXu-nv@users.noreply.github.com>
…st on CPU

Two follow-ups before review.

float() accepts "nan" and "inf", and each breaks the new bound in an
opposite direction. Every nan comparison is False, so `nan <= 0` does not
disable the bound and `stalled_for < nan` does not defer it -- control
falls straight through to the raise, firing on the second consecutive
stalled call (~0.1s) instead of after the 600s window, which destroys
exactly the margin the default exists to give. inf is the mirror:
`stalled_for < inf` is always True, so the bound never fires and is
silently equivalent to 0. Reject both and fall back to the default, the
same guard merged for TLLM_RANK_CRASH_HARD_KILL_GRACE in NVIDIA#16592.

The tests are pure monkeypatch with no engine and no GPU, but lacked the
cpu_only marker, so the l0_cpu `unittest/_torch/executor` entry collected
nothing and they ran only on the h100/b300/gb300 stages. Add the marker so
they also run in the CPU stage, where they belong.

Signed-off-by: JunyiXu-nv <219237550+JunyiXu-nv@users.noreply.github.com>
@JunyiXu-nv
JunyiXu-nv force-pushed the dev-junyix-fix-disagg-fill-gate-deadlock branch from d7c12ca to b992d6a Compare August 12, 2026 06:12
@JunyiXu-nv
JunyiXu-nv marked this pull request as ready for review August 12, 2026 06:13
@JunyiXu-nv
JunyiXu-nv requested review from a team as code owners August 12, 2026 06:13
@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 261384f9-8354-4a4e-a887-606de86b20c6

📥 Commits

Reviewing files that changed from the base of the PR and between bc12697 and 2e29aa6.

📒 Files selected for processing (3)
  • tensorrt_llm/_torch/pyexecutor/py_executor.py
  • tests/unittest/_torch/executor/test_benchmark_disagg.py
  • tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py
🚧 Files skipped from review as they are similar to previous changes (3)
  • tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py
  • tests/unittest/_torch/executor/test_benchmark_disagg.py
  • tensorrt_llm/_torch/pyexecutor/py_executor.py

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


Walkthrough

The PR adds configurable stall detection to the benchmark disaggregated-fill gate. It validates the timeout, tracks no-progress intervals, raises diagnostic errors after expiry, and adds CPU-only tests for configuration and retry behavior.

Changes

Disaggregated-fill stall detection

Layer / File(s) Summary
Timeout configuration
tensorrt_llm/_torch/pyexecutor/py_executor.py
Parses TRTLLM_BENCHMARK_DISAGG_FILL_STALL_SEC. Invalid or non-finite values use a 600-second default. Non-positive values disable the timeout.
Stall detection flow
tensorrt_llm/_torch/pyexecutor/py_executor.py
Tracks stalled fill retries, resets tracking after progress or gate completion, and raises a rank-specific RuntimeError after the configured interval.
Stall detection validation
tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py, tests/unittest/_torch/executor/test_benchmark_disagg.py
Adds CPU-only tests and mock-executor wiring for timeout failures, diagnostics, progress resets, disabled timeouts, initial arming, and environment parsing.

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

Merge Risk: ⚪ Minimal · up to 2e29a

The change adds a deadline for a benchmark fill retry loop and preserves progress-based operation; no actionable merge-blocking risk remains beyond normal checks and review.

Suggested reviewers: cascade812, bo-nv

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 55.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 20 functions across 3 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the ticket, fix type, and primary change: adding a deadline to the benchmark-disaggregated fill-gate retry loop.
Description check ✅ Passed The description clearly explains the bug, correction, configuration, tests, limitations, and distinction from the earlier fixed issue.
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.
✨ 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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tensorrt_llm/_torch/pyexecutor/py_executor.py (1)

4089-4097: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Track asynchronous transfer progress in the fill-gate deadline.

The deadline resets only for synchronous transfer completion. A fill with periodic asynchronous completions can fail after the original timeout window even though it continues to advance.

  • tensorrt_llm/_torch/pyexecutor/py_executor.py#L4089-L4097: propagate async completion progress from the transfer-status poll into the model-parallel gate status before calling _fail_if_fill_gate_stalled().
  • tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py#L71-L148: add a CPU-only test that completes one async transfer, leaves another incomplete, and verifies that the deadline starts a new window.
🤖 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/py_executor.py` around lines 4089 - 4097,
Update the fill-gate loop around _fail_if_fill_gate_stalled() in
tensorrt_llm/_torch/pyexecutor/py_executor.py:4089-4097 to include asynchronous
completion progress from the transfer-status poll when determining
model-parallel progress, so periodic async completions reset the deadline. Add a
CPU-only test in
tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py:71-148 that
completes one async transfer while another remains incomplete and verifies a new
deadline window begins.

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_disagg_fill_gate_stall_bound.py`:
- Around line 43-148: Add complete type annotations to the new _Clock methods,
_executor, and _spin, including parameter and return types; use -> None for
procedural methods. Annotate all nine test functions with their fixture
parameters and -> None, preserving the existing test behavior and fixtures.

---

Outside diff comments:
In `@tensorrt_llm/_torch/pyexecutor/py_executor.py`:
- Around line 4089-4097: Update the fill-gate loop around
_fail_if_fill_gate_stalled() in
tensorrt_llm/_torch/pyexecutor/py_executor.py:4089-4097 to include asynchronous
completion progress from the transfer-status poll when determining
model-parallel progress, so periodic async completions reset the deadline. Add a
CPU-only test in
tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py:71-148 that
completes one async transfer while another remains incomplete and verifies a new
deadline window begins.
🪄 Autofix

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: 85766003-4a91-472b-93f2-d67d3c4b9975

📥 Commits

Reviewing files that changed from the base of the PR and between c357c95 and b992d6a.

📒 Files selected for processing (2)
  • tensorrt_llm/_torch/pyexecutor/py_executor.py
  • tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py

Comment thread tests/unittest/_torch/executor/test_disagg_fill_gate_stall_bound.py
@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #65516 [ run ] triggered by Bot. Commit: b992d6a Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #65516 [ run ] completed with state FAILURE. Commit: b992d6a
/LLM/main/L0_MergeRequest_PR pipeline #53254 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

…t now needs

The gate now calls _fail_if_fill_gate_stalled(), and MockBenchmarkExecutor
binds the gate methods off PyExecutor without having that one or the two
attributes it reads. 12 CPU-Generic failures in pipeline 53254, all
"AttributeError: 'MockBenchmarkExecutor' object has no attribute
'_fail_if_fill_gate_stalled'".

Only visible after the rebase: test_benchmark_disagg.py arrived on main
after this branch was cut, so the pre-rebase runs never exercised it.

Bind the method and seed the state with the bound disabled. That is right
twice over: these tests assert retry semantics rather than the deadline,
which test_disagg_fill_gate_stall_bound.py covers, and they patch the whole
`time` module -- an enabled bound would do arithmetic on a Mock. The
`timeout_s <= 0` guard returns before the clock is read, so the patched
module is never touched.

Signed-off-by: JunyiXu-nv <219237550+JunyiXu-nv@users.noreply.github.com>
@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #65569 [ run ] triggered by Bot. Commit: 4bf16a6 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #65569 [ run ] completed with state SUCCESS. Commit: 4bf16a6
/LLM/main/L0_MergeRequest_PR pipeline #53303 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

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #65615 [ run ] triggered by Bot. Commit: 4bf16a6 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #65615 [ run ] completed with state SUCCESS. Commit: 4bf16a6
/LLM/main/L0_MergeRequest_PR pipeline #53339 completed with status: 'UNSTABLE'

CI Report

⚠️ Multi-GPU Label Required:
Multi-GPU tests require the ci: full pre-merge approved label on this PR. Ask a member of NVIDIA/trt-llm-ci-approvers to add the label, then re-trigger CI with the same bot command (no rebase needed).

⚠️ 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

Link to invocation

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

Merged main ToT (2e29aa6) — the branch was 295 commits behind.

Rationale: GB10-PyTorch-1 has now rendered 0 tests on three consecutive runs (pipelines #55557, #55722, #55758), so it is deterministic rather than flaky. l0_gb10.yml itself was unchanged between this branch and main, but tests/unittest/_torch/modules/moe/test_moe_module.py had moved on main — notably #17532, "make MoE implementation selection reproducible". Two of the three tests l0_gb10.yml selects are test_configurable_moe_single_gpu parametrizations carrying backend=CUTLASS in the test ID, so a change to how MoE implementations are selected is a plausible source of an ID mismatch against a stale tree. That file is now identical to main.

If the render is still empty after this, the stale-tree theory is wrong and it needs test-db owners.

/bot run

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68375 [ run ] triggered by Bot. Commit: 2e29aa6 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68375 [ run ] completed with state SUCCESS. Commit: 2e29aa6
/LLM/main/L0_MergeRequest_PR pipeline #55798 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

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

Merging main ToT fixed the GB10 problem — that stage no longer renders an empty list, and tests actually executed for the first time across four runs.

Pipeline #55798:

  • Build-x86_64: SUCCESS
  • Build-SBSA: SUCCESS
  • L0_Test-SBSA-Single-GPU: SUCCESS
  • L0_Test-x86_64-Single-GPU: FAILURE

The remaining failure is unrelated to this PR — a timeout in test_overlap_scheduler.py::test_overlap_scheduler_consistency[no_reuse-cpp_scheduler-TRTLLMSampler] on B300-PyTorch-2.

That exact parametrization is already waived under nvbugs/6608387, but only scoped to full:GB300 (waives.txt:233), so the L0 B300 lane still runs it. Retrying, since it is a timeout flake.

cc test owners: worth considering whether the full:GB300 waive for 6608387 should also cover the L0 B300 lane.

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68407 [ run ] triggered by Bot. Commit: 2e29aa6 Link to invocation

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68455 [ run ] triggered by Bot. Commit: 2e29aa6 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68407 [ run ] completed with state ABORTED. Commit: 2e29aa6

Link to invocation

…deadlock

Signed-off-by: JunyiXu-nv <219237550+JunyiXu-nv@users.noreply.github.com>
@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68490 [ run ] triggered by Bot. Commit: 47c353f Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68455 [ run ] completed with state ABORTED. Commit: 2e29aa6

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68490 [ run ] completed with state SUCCESS. Commit: 47c353f
/LLM/main/L0_MergeRequest_PR pipeline #55910 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

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68522 [ run ] triggered by Bot. Commit: 47c353f Link to invocation

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68547 [ run ] triggered by Bot. Commit: 47c353f Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68547 [ run ] completed with state SUCCESS. Commit: 47c353f
/LLM/main/L0_MergeRequest_PR pipeline #55962 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

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68572 [ run ] triggered by Bot. Commit: 47c353f Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68572 [ run ] completed with state SUCCESS. Commit: 47c353f
/LLM/main/L0_MergeRequest_PR pipeline #55988 completed with status: 'UNSTABLE'

CI Report

⚠️ Multi-GPU Label Required:
Multi-GPU tests require the ci: full pre-merge approved label on this PR. Ask a member of NVIDIA/trt-llm-ci-approvers to add the label, then re-trigger CI with the same bot command (no rebase needed).

⚠️ 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

Link to invocation

@JunyiXu-nv

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68707 [ run ] triggered by Bot. Commit: 47c353f Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #68707 [ run ] completed with state SUCCESS. Commit: 47c353f
/LLM/main/L0_MergeRequest_PR pipeline #56108 completed with status: 'SUCCESS'

CI Report

Link to invocation

@JunyiXu-nv
JunyiXu-nv merged commit 091b560 into NVIDIA:main Aug 24, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants