Skip to content

[None][perf] enable Qwen3.*-VL encoder CUDA graphs via shared setup - #20213

Open
yechank-nvidia wants to merge 8 commits into
NVIDIA:mainfrom
yechank-nvidia:refactor/mm-encoder-graphs-3017
Open

yechank-nvidia wants to merge 8 commits into
NVIDIA:mainfrom
yechank-nvidia:refactor/mm-encoder-graphs-3017

Conversation

@yechank-nvidia

@yechank-nvidia yechank-nvidia commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Description

multimodal_config.encoder_cuda_graph exists, but Qwen3-VL-based vision encoders do not capture or replay encoder graphs. RADIO and GLM also initialize their graphs through separate weight-loading hooks. Add Qwen3-VL encoder graph dispatch and give supported encoders a shared lifecycle after weights and attention metadata are ready, before KV-cache sizing.

Reuse MultimodalEncoderMixin and MultimodalEncoderGraphRunner: the mixin captures each configured encoder once, while models retain their block functions, tensor specs, metadata providers, preprocessing, and mergers. The mixin also shares graph teardown across Qwen3-VL, RADIO and GLM, preserving the engine's NCCL window ownership policy. Share packed no-KV attention metadata refresh across Qwen2-VL, Qwen3-VL, and GLM, preserving captured buffer addresses. Qwen3-VL captures raw deepstack states and applies eager mergers in the same order as eager execution, including reordered deepstack indexes. Capture the largest bucket first to initialize shared attention workspace before smaller graphs.

Adds optional prototype max_batch_size and max_num_tokens fields for automatic encoder graph shapes; no dependencies are added.

Configuration

Set a batch-size limit; each encoder adapter generates its capture shapes automatically. The default token cap comes from encoder_max_num_tokens, or the LLM max_num_tokens when unset. Capture uses the configured budget before any scheduling-only increase for a large atomic item. Each metadata provider sizes its graph-owned buffers from the adapter-generated capture key, including layout-specific padding. Graph capture does not enlarge eager metadata buffers.

multimodal_config:
  encoder_cuda_graph:
    vision:
      max_batch_size: 8

The same schema works for audio adapters: for a model with both graph-capable towers, add audio: {max_batch_size: 4}. An optional per-tower max_num_tokens limits capture capacity. Production audio towers still need their own graph integration and model validation; the common interface is tested with batch/time inputs, masks, and downsampled outputs.

Batch size counts encoder contexts, such as images, video frame groups, or audio chunks, rather than concurrent requests or scheduled atomic items. All context counts up to the cap are captured within the token budget. Existing explicit buckets remain available as an alternative for advanced tuning. Graphs stay disabled by default, and out-of-range shapes use eager execution.

The new config fields require telemetry/privacy CODEOWNER review. The LLM args manifest was regenerated and checked; it is unchanged. Serving YAML schemas include the new fields and preserve main's current defaults; native-version validation limits are listed below.

Encoder Interfaces

Each graph-capable encoder declares its configuration key through encoder_cuda_graph_modality and selects only its own entry with configure_encoder_cuda_graph. The engine validates requested keys against all local towers together before capture, allowing vision and audio configurations to coexist when both towers implement graph support.

EncoderGraphIOAdapter defines automatic capture shapes, captured input allocation, layout compatibility, padding lengths, input/mask refresh, and output collection. The default PackedEncoderGraphIOAdapter reuses token-axis tensor specs for the existing vision encoders. Custom adapters can use batch/time dimensions and downsampled outputs. EncoderMetadataProvider is generic over the encoder's metadata type; graph-read buffer addresses remain checked across replays. Implemented model adapters cover vision encoders; batched masked/downsampled layouts are exercised by a synthetic test adapter.

Validation

  • Rebased onto main abb94ab8fc at head 48125b921b, preserving main's mRoPE setup and NCCL capture/cleanup ownership. 191 CPU tests passed, 13 skipped across multimodal config validation, encoder graph runner/engine logic, and serving schemas. Changed-file pre-commit checks passed. The LLM args manifest was regenerated and is unchanged.
  • Current-source CPU checks used genuine CI #65923 native configuration bindings with native initialization disabled. The older wheel lacks main's new trtllm::allreduce_pg_by_name operator; full native/GPU/serving validation awaits new-head CI. One whole-schema freshness check was excluded because that wheel's MambaStateConfig/BlockReuseConfig definitions differ from current main. Encoder graph schema fields match regeneration; checked-in snapshots retain main's current native config definitions. Earlier runtime/performance results below remain pinned to their measured revisions.
  • Recorded encoder/engine/model/config suite at c183c2f80f: 244 passed, 6 skipped, 1 deselected. Covers automatic and explicit configurations, Qwen3-VL with TRTLLM/FlashInfer and reordered deepstack indexes, RADIO, GLM, metadata refresh, and shared startup/replay. Boundary tests cover a bucket equal to the encoder token budget, both partially and fully occupied, with graph-owned metadata independent of eager token/context capacities. The masked batch/time adapter replays downsampled outputs for batch sizes 1, 2, and 3. Modality tests cover separate tower configs and validation before any capture.
  • API stability and telemetry tests at c183c2f80f: 59 passed. Regenerated the LLM args manifest; no manifest changes. The new prototype fields still require telemetry/privacy CODEOWNER review.
  • Real Qwen3.8-27B and Qwen3-VL-2B-Instruct vision weights at c183c2f80f: all 7 cases per model match eager bit-for-bit, with eager fallback disabled. Each uses only max_batch_size=8 plus the engine's 2048-token budget and automatically captures 19 shapes. Cases cover 196/256/400 tokens, image batches 1/2/3/8, mixed resolutions, and a three-context video. Qwen3-VL includes deepstack outputs at layers 5, 11, and 17.
  • Qwen3.8-27B LLM API smoke at c183c2f80f with max_batch_size=8 and no explicit buckets: two image resolutions generate responses successfully. The configured encoder token budget is 2048; capture remains bounded by that configured budget when scheduling raises its effective limit for a large atomic item.
  • Previously recorded GPU validation used matching main L0_PostMerge 3017 source/binaries on H200 NVL. New CPU tests are marked cpu_only; Qwen3-VL and shared runner GPU replay are registered in l0_h100.yml, and the existing GLM suite is registered in l0_b200.yml. Multi-GPU validation remains pending. Serving performance measurements below are from d2f06b8 with explicit buckets.

Earlier follow-up b0c446885e recorded 41 CPU tests, 164 encoder/model tests (6 skipped, 1 deselected), and four targeted budget regressions passing. The warmup test fixture uses MultimodalConfig() defaults to provide the real encoder_cuda_graph attribute.

Encoder Microbenchmark

Measured at d2f06b8, H200 NVL, BF16, one context, 256 encoder tokens. Full encode_batched includes preprocessing and mergers on synthetic pixel tensors, with fixed attention capacity 4096. Five warmups per mode, followed by the median of five rounds of 20 forwards.

Model Eager CUDA graph Speedup
Qwen3.8-27B 27.42 ms 2.11 ms 13.0x
Qwen3-VL-2B-Instruct 18.05 ms 1.66 ms 10.9x

These measurements compare CUDA graphs enabled versus eager encoder execution. They do not measure the refactor alone or serving throughput.

Online Serving Benchmark (AIPerf)

Qwen3.8-27B, BF16, one H200 NVL, PR head d2f06b8, matching main L0_PostMerge 3017 binaries, AIPerf 0.8.0. Streaming OpenAI chat requests use one distinct 224×224 PNG each (processor grid 16×16 / 256 vision tokens), 206 total prompt tokens and exactly 128 output tokens. Thinking is disabled. KV block reuse and encoder reuse are disabled.

Server settings: max_batch_size=128, max_num_tokens=4096, max_seq_len=1024, encoder_max_batch_size=8, chunked prefill and overlap enabled, decoder CUDA graph sizes [1,2,4,8,16,32,64,128] with padding in both conditions. Only encoder graphs are toggled. The ON buckets cover (256*n, n) for n=1..8; replay diagnostics are enabled. The configured encoder token budget is 4096; startup raises its effective budget to the model's 65536-token maximum atomic item. Encoder item count remains capped at 8.

Each condition/concurrency runs 128 warmup requests followed by 1024 measured requests, three times. The table reports medians of the per-run metrics. All 12,288 measured requests succeeded with 128 output tokens. All 6,912 ON images, including warmup, used graph replay with zero runtime bucket misses; the max-size startup profiling dummy uses eager fallback.

Client concurrency Request throughput, OFF → ON (req/s) Mean TTFT, OFF → ON Mean E2E latency, OFF → ON p99 TTFT, OFF → ON
64 14.04 → 14.68 (+4.6%) 1130 → 889 ms (−21.3%) 4.552 → 4.352 s (−4.4%) 1868 → 1658 ms
128 18.80 → 19.19 (+2.1%) 1278 → 1038 ms (−18.7%) 6.787 → 6.647 s (−2.1%) 3633 → 3402 ms

Encoder Batch Scaling

Separate full encode_batched microbenchmark at d2f06b8, 256 vision tokens per image, BF16, H200 NVL, synthetic pixels and real weights. Fixed attention capacity 32769; capture buckets cover batches 1, 8, 32, 64 and 128. Five warmups per mode, median of five rounds of 20 forwards. Both models match eager bit-for-bit at every batch, including all three Qwen3-VL deepstack outputs.

Model Images per encoder call Eager CUDA graph Eager / graph
Qwen3.8-27B 1 32.44 ms 2.11 ms 15.39x
Qwen3.8-27B 8 32.46 ms 5.92 ms 5.48x
Qwen3.8-27B 32 32.67 ms 22.25 ms 1.47x
Qwen3.8-27B 64 40.32 ms 49.54 ms 0.81x
Qwen3.8-27B 128 79.23 ms 126.31 ms 0.63x
Qwen3-VL-2B-Instruct 1 18.88 ms 1.65 ms 11.44x
Qwen3-VL-2B-Instruct 8 19.76 ms 4.33 ms 4.57x
Qwen3-VL-2B-Instruct 32 20.59 ms 16.17 ms 1.27x
Qwen3-VL-2B-Instruct 64 28.36 ms 37.33 ms 0.76x
Qwen3-VL-2B-Instruct 128 55.75 ms 98.18 ms 0.57x

With this capture configuration, large encoder batches of 64/128 are slower than eager. The online results above use encoder microbatches capped at 8 even at client concurrency 128. These results establish the benefit for that workload/configuration; they do not claim a throughput gain at every encoder batch size.

@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review.

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/TensorRT-LLM/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: ea7164c0-1aef-40ff-bc51-462d2c381246
📥 Commits

Reviewing files that changed from the base of the PR and between c183c2f and b0c4468.

📒 Files selected for processing: 5
  • tensorrt_llm/_torch/models/modeling_multimodal_encoder.py
  • tensorrt_llm/_torch/models/modeling_radio.py
  • tensorrt_llm/_torch/pyexecutor/engine/multimodal.py
  • tensorrt_llm/_torch/pyexecutor/model_engine.py
  • tests/unittest/_torch/executor/engine/test_multimodal.py

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

Walkthrough

This change adds shared encoder attention-metadata preparation, automatic graph-shape configuration, and adapter-driven graph replay. Engine setup configures local encoders. Qwen3-VL, GLM5, and RADIO connect vision encoders to the shared graph lifecycle.

Changes

Multimodal encoder graph setup

Layer / File(s) Summary
Graph configuration and encoder metadata
tensorrt_llm/llmapi/llm_args.py, tensorrt_llm/_torch/models/modeling_multimodal_encoder.py, tensorrt_llm/_torch/models/modeling_qwen2vl.py, tensorrt_llm/_torch/models/modeling_glm5_next_vision.py, tests/unittest/llmapi/test_llm_args.py
Graph configuration supports automatic capture limits or explicit buckets. Shared preparation validates segment lengths and prepares encoder attention metadata. Qwen2-VL and GLM5 use the shared helper.
Adapter-driven graph runner
tensorrt_llm/_torch/models/multimodal_encoder_graph.py, tests/unittest/_torch/modeling/test_multimodal_encoder_graph.py
The runner delegates input and output handling, bucket generation, padding, and replay eligibility to an I/O adapter. Tests cover packed and batched-frame layouts, automatic buckets, and replay.
Encoder capture and engine setup
tensorrt_llm/_torch/models/modeling_multimodal_encoder.py, tensorrt_llm/_torch/pyexecutor/engine/multimodal.py, tensorrt_llm/_torch/pyexecutor/model_engine.py, tests/unittest/_torch/executor/engine/test_multimodal.py
The encoder mixin selects modality-specific configuration and captures graphs once. Engine setup configures local encoders and accounts for graph capacities when setting attention metadata.
Qwen3 vision graph execution
tensorrt_llm/_torch/models/modeling_qwen3vl.py, tests/unittest/_torch/modeling/test_modeling_qwen3vl.py, tests/integration/test_lists/test-db/l0_h100.yml
Qwen3 vision adds graph inputs, outputs, and metadata refresh, then uses replay when a matching graph is available. Tests cover eager execution and graph replay against eager output.
GLM5, RADIO, and Nemotron integration
tensorrt_llm/_torch/models/modeling_glm5_next_vision.py, tensorrt_llm/_torch/models/modeling_radio.py, tensorrt_llm/_torch/models/modeling_nemotron_h_multimodal.py, tests/unittest/_torch/modeling/test_glm5_next_contracts.py, tests/unittest/_torch/modeling/test_modeling_radio.py, tests/unittest/_torch/modeling/test_modeling_nemotron_h_multimodal.py
GLM5 and RADIO connect their vision encoders to shared graph setup. Weight-loading graph capture is removed. Nemotron selects its vision configuration when other modalities are configured.
Encoder graph usage documentation
docs/source/models/supported-models.md
The guide describes explicit and automatic capture shapes, eager fallback, padding behavior, and side-stream compatibility.

Priority: Normal

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant PyTorchModelEngine
  participant setup_mm_encoder_cuda_graphs
  participant MultimodalEncoderMixin
  participant MultimodalEncoderGraphRunner
  PyTorchModelEngine->>setup_mm_encoder_cuda_graphs: Configure local encoder graphs
  setup_mm_encoder_cuda_graphs->>MultimodalEncoderMixin: Select configuration and enable capture
  MultimodalEncoderMixin->>MultimodalEncoderGraphRunner: Build runner and capture graphs
Loading

Suggested reviewers: juney-nvidia, lori-ren

Merge Risk: Minimal · up to b0c44

No confirmed issue currently prevents merging after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 26.06% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 142 functions across 17 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
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 clearly identifies the main change: enabling Qwen3-VL encoder CUDA graphs through shared setup. The [None][perf] prefix does not prevent understanding the change.
Description check Passed The description clearly explains the problem, solution, configuration, interfaces, validation, test results, benchmarks, limitations, and pending reviews. It does not use the required `## Test Coverag…
Full details: Description check

Explanation

The description clearly explains the problem, solution, configuration, interfaces, validation, test results, benchmarks, limitations, and pending reviews. It does not use the required ## Test Coverage heading or include the ## PR Checklist, but it provides the required test and validation details in dedicated sections, so the description is mostly complete.

✨ Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@yechank-nvidia yechank-nvidia changed the title [None][perf] share multimodal encoder CUDA graph lifecycle [None][perf] enable Qwen3-VL encoder CUDA graphs via shared setup Oct 13, 2026
@yechank-nvidia yechank-nvidia changed the title [None][perf] enable Qwen3-VL encoder CUDA graphs via shared setup [None][perf] enable Qwen3.*-VL encoder CUDA graphs via shared setup Oct 13, 2026
Comment thread tensorrt_llm/_torch/models/modeling_glm5_next_vision.py
Comment thread tensorrt_llm/_torch/models/modeling_multimodal_encoder.py Outdated
Comment thread tensorrt_llm/_torch/models/modeling_multimodal_encoder.py
Comment thread tensorrt_llm/_torch/models/modeling_qwen3vl.py Outdated
@yechank-nvidia
yechank-nvidia requested a review from a team as a code owner October 15, 2026 04:43
@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78277 [ run ] triggered by Bot. Commit: c183c2f Link to invocation

Comment thread tensorrt_llm/_torch/pyexecutor/engine/multimodal.py Outdated
Comment thread tensorrt_llm/_torch/pyexecutor/engine/multimodal.py Outdated
Comment thread tensorrt_llm/_torch/pyexecutor/model_engine.py Outdated
Comment thread tensorrt_llm/_torch/models/modeling_multimodal_encoder.py Outdated
@github-actions

Copy link
Copy Markdown

Automatically added "ci: full pre-merge approved" because this PR has satisfied the required GitHub review approvals. Unresolved review conversations and other required checks remain independent merge requirements.

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78787 [ run ] triggered by Bot. Commit: b0c4468 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

@yechank-nvidia yechank-nvidia added the api-compatible Accepted LLM API contract change that is backwards-compatible label Oct 19, 2026
@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #78913 [ run ] triggered by Bot. Commit: e49455c Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #79064 [ run ] triggered by Bot. Commit: e49455c Link to invocation

@yechank-nvidia
yechank-nvidia force-pushed the refactor/mm-encoder-graphs-3017 branch from f3a97d8 to 56a285d Compare October 22, 2026 05:37
@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #79806 [ run ] triggered by Bot. Commit: 56a285d Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #79806 [ run ] completed with state SUCCESS. Commit: 56a285d
/LLM/main/L0_MergeRequest_PR pipeline #65696 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

@yechank-nvidia
yechank-nvidia force-pushed the refactor/mm-encoder-graphs-3017 branch from 56a285d to e8bbb88 Compare October 23, 2026 03:13
@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80053 [ run ] triggered by Bot. Commit: e8bbb88 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80150 [ run ] triggered by Bot. Commit: e8bbb88 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80150 [ run ] completed with state SUCCESS. Commit: e8bbb88
/LLM/main/L0_MergeRequest_PR pipeline #65958 completed with status: 'SUCCESS'
Pipeline passed with automatic retried tests. Check the rerun report for details.

CI Report

⚠️ Resource Maintenance — Test Coverage Reduced:

Resource maintenance in LLM/main/L0_Test-x86_64-Multi-GPU #3320: B200 multi-GPU stages are paused to relieve the CI queue backlog (109 running / 459 pending on 2026-10-22). Owner: @sharabeshj-nvda. The CI team decides when to lift it.
Affected stages:
DGX_B200-2_GPUs-PyTorch-1
DGX_B200-4_GPUs-PyTorch-1
DGX_B200-4_GPUs-PyTorch-2
DGX_B200-4_GPUs-PyTorch-3
DGX_B200-4_GPUs-PyTorch-Ray-1
DGX_B200-8_GPUs-PyTorch-1
DGX_B200-8_GPUs-PyTorch-2
DGX_B200-8_GPUs-PyTorch-3
DGX_B200-8_GPUs-PyTorch-4
DGX_B200-8_GPUs-PyTorch-Ray-1

Link to invocation

@yechank-nvidia
yechank-nvidia force-pushed the refactor/mm-encoder-graphs-3017 branch from e8bbb88 to 48125b9 Compare October 24, 2026 06:13

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80328 [ run ] triggered by Bot. Commit: 48125b9 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80328 [ run ] completed with state FAILURE. Commit: 48125b9
/LLM/main/L0_MergeRequest_PR pipeline #66113 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

@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80377 [ run ] triggered by Bot. Commit: 48125b9 Link to invocation

@yechank-nvidia
yechank-nvidia enabled auto-merge (squash) October 24, 2026 14:55
@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80377 [ run ] completed with state SUCCESS. Commit: 48125b9
/LLM/main/L0_MergeRequest_PR pipeline #66153 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

Capture configured encoders through MultimodalEncoderMixin after weights and metadata are ready, before KV-cache profiling. Reuse MultimodalEncoderGraphRunner while keeping tensor specs, metadata providers, preprocessing, and mergers in each model.

Add Qwen3-VL block graphs with eager deepstack mergers and share fixed-buffer packed attention metadata refresh with Qwen2-VL and GLM. Cover capture ordering, duplicate startup, padded replay, and TRTLLM/FlashInfer backends.

Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Select each eager merger by its checkpoint index while preserving the layer order of captured deepstack states. Cover reordered indexes on TRTLLM and FlashInfer, and mark graph logic regressions for CPU CI collection.

Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Expose encoder graph settings through the mixin property and remove the redundant metadata token-budget fallback. Keep the originally configured encoder budget through scheduler expansion and LLM token clamping, and access declared attention metadata fields directly.

Cover explicit and default encoder budgets with item scheduling enabled and disabled in the real engine constructor.

Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
Reuse the existing graph teardown in MultimodalEncoderMixin so Qwen, RADIO and GLM honor the engine NCCL window ownership policy. Cover repeated teardown and capture in the existing lifecycle test. Regenerate serving schemas for automatic capture settings and validate their YAML bounds.

Signed-off-by: yechank <161688079+yechank-nvidia@users.noreply.github.com>
@yechank-nvidia
yechank-nvidia force-pushed the refactor/mm-encoder-graphs-3017 branch from 48125b9 to d551779 Compare October 25, 2026 01:45
@yechank-nvidia

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #80408 [ run ] triggered by Bot. Commit: d551779 Link to invocation

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api-compatible Accepted LLM API contract change that is backwards-compatible ci: full pre-merge approved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants