Skip to content

[#14828][feat] AutoDeploy: support multi KV cache memory pool in trtllm attention - #14911

Merged
MrGeva merged 4 commits into
NVIDIA:mainfrom
nv-auto-deploy:eg/ad-trtllm-multipool-kv
Jun 8, 2026
Merged

[#14828][feat] AutoDeploy: support multi KV cache memory pool in trtllm attention#14911
MrGeva merged 4 commits into
NVIDIA:mainfrom
nv-auto-deploy:eg/ad-trtllm-multipool-kv

Conversation

@MrGeva

@MrGeva MrGeva commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

Enables multiple KV cache memory pools in AutoDeploy's trtllm attention backend, so non-uniform sliding-window models (e.g. gpt-oss, which alternates sliding-window and full-attention layers) run on the trtllm backend. Fixes #14828.

The AutoDeploy multi-pool ("window group") machinery already existed for the triton/flashinfer backends. This PR removes the three trtllm-specific blockers:

  1. Gate (llm_args.py): requires_uniform_kv_caches now returns False, so _identify_managed_kv_resources no longer raises when more than one pool is present. AutoDeploy's trtllm path uses per-layer KV cache views, so the block_offset_multiplier is uniformly kv_factor=2 regardless of pool count.
  2. Per-group block_offsets (custom_ops/attention/trtllm_attention.py): the planner previously wrote a single module-level block_offsets buffer, which the kvcache transform's per-group prepare_trtllm_metadata invocations clobbered. It now keeps one address-stable buffer per KV window group, keyed by the group's cache_loc input pointer (same pattern as the existing per-layer cache); group 0 reuses the pre-allocated reset() buffer. CUDA-graph safe (lazy allocation gated to warm-up).
  3. Cyclic-window staging (shim/ad_executor.py): the trtllm kernel applies the sliding-window mask internally via cyclic KV indexing, so it needs the full per-window block table + global KV length — like the PyTorch backend — rather than the host-sliced window view used by triton/flashinfer. A new AttentionDescriptor.kernel_handles_cyclic_swa() capability (True only for trtllm) is plumbed through the kvcache transform → CachedSequenceInterface → executor, which then uses the new _compute_cyclic_full_view helper. triton/flashinfer keep host-slicing unchanged.

The kvcache transform needed only a single setter call — it was already backend-agnostic for grouping.

Test coverage

  • test_trtllm_attention_op.py: per-group block_offsets buffers are distinct and not clobbered across groups; same cache_loc returns an address-stable buffer.
  • test_kvcache_vswa_metadata.py: the transform records kernel_handles_cyclic_swa per backend (True for trtllm, False for triton).
  • test_ad_executor_swa_eviction.py: _compute_cyclic_full_view passes the full block table + global length; cyclic vs window-local staging diverge under eviction as expected; the multi-pool gate is allowed by default and the uniform-cache mechanism is still enforced when explicitly requested.
  • New test_kv_cache_trtllm_multipool.py: forward-level test — a real two-distinct-window model with the trtllm cached op matches the eager reference exactly (validates pool routing + per-group buffers + cyclic staging), plus a smoke check for the SWA-engaged path.

No regressions in test_kv_cache.py (27 passed) or the full trtllm op suite (32 passed). All pre-commit hooks pass.

Validation

  • Confirmed on real gpt-oss-20b (AD-trtllm, GB200): the KV manager now initializes 24 layers across 2 pools at cache-init — this raised RuntimeError: KV resources are not uniform before this change.

Performance Impact

★ MEASURED THROUGHPUT (live A/B, node gpu-120, 1×B200, trtllm-bench _autodeploy)

A/B = identical config, only AD_FORCE_SINGLE_KV_POOL toggled (0=multi-pool/SWA on,
1=single-pool/SWA off). 512 reqs @ concurrency 256. Both modes got the SAME KV
budget (27.96 GB here) so it is apples-to-apples.

ISL 16384 / OSL 1024:

metric multi-pool (SWA on) single-pool (off) gain
Output throughput (tok/s) 2400.2 1810.5 +32.6%

Summary by CodeRabbit

  • New Features

    • Enhanced support for models with multiple KV cache pools and varying sliding-window attention configurations across layers.
    • Optimized sliding-window attention KV cache handling for improved efficiency.
  • Tests

    • Added comprehensive test coverage for multi-pool KV cache scenarios and sliding-window attention behavior verification.

@MrGeva

MrGeva commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52059 [ run ] triggered by Bot. Commit: bee9440 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

Link to invocation

@MrGeva
MrGeva marked this pull request as ready for review June 4, 2026 17:12
@MrGeva
MrGeva requested a review from a team as a code owner June 4, 2026 17:12
@MrGeva
MrGeva requested a review from govind-ramnarayan June 4, 2026 17:12
@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

TRT-LLM attention in AutoDeploy now supports multiple KV cache memory pools for non-uniform sliding-window models by introducing a backend-capability contract, implementing per-cache_loc buffer allocation in the kernel planner, removing uniform KV cache restrictions, and providing executor logic to use cyclic-view vs. host-sliced metadata computation based on kernel capability.

Changes

Multi-pool KV cache support for TRT-LLM with cyclic-SWA contract

Layer / File(s) Summary
Cyclic-SWA backend capability contract
tensorrt_llm/_torch/auto_deploy/custom_ops/attention_interface.py
AttentionDescriptor.kernel_handles_cyclic_swa() classmethod introduced with default False; docstring defines executor/kernel contract for cyclic window masking vs. host-slicing.
Tracking and propagating cyclic-SWA capability through pipeline
tensorrt_llm/_torch/auto_deploy/shim/interface.py, tensorrt_llm/_torch/auto_deploy/transform/library/kvcache.py
CachedSequenceInterface adds _kernel_handles_cyclic_swa flag with getter/setter; InsertCachedAttention transform calls set_kernel_handles_cyclic_swa() to record backend capability before standard metadata processing.
Remove uniform KV cache requirement
tensorrt_llm/_torch/auto_deploy/llm_args.py
requires_uniform_kv_caches changed to unconditionally return False, eliminating previous attn_backend == "trtllm" check that blocked multi-pool support.
TRT-LLM kernel multi-pool support
tensorrt_llm/_torch/auto_deploy/custom_ops/attention/trtllm_attention.py
_TrtllmPlanner maintains per-cache_loc persistent block_offsets buffers via _block_offsets_by_cache_loc dict; _get_block_offsets_buffer() allocates per-group buffers outside CUDA graph capture; plan_device() returns populated per-group buffer instead of reusing shared buffer; TrtllmAttention.kernel_handles_cyclic_swa() returns True to indicate kernel handles cyclic masking internally.
Executor cyclic-SWA computation path
tensorrt_llm/_torch/auto_deploy/shim/ad_executor.py
_compute_cyclic_full_view() helper constructs KV metadata with full (unsliced) block table and global KV length for cyclic-SWA kernels; ADEngine._prepare_inputs detects kernel_handles_cyclic_swa and branches to cyclic-view (full pass-through) or host-slicing path (windowed eviction).
Custom op device-side multi-pool tests
tests/unittest/auto_deploy/singlegpu/custom_ops/attention/test_trtllm_attention_op.py
TestTrtllmMultiPoolBlockOffsets validates distinct cache_loc pointers yield distinct address-stable block_offsets buffers with correct offset mapping, and repeated invocation with same cache_loc returns stable buffer without cache growth.
Executor and interface integration tests
tests/unittest/auto_deploy/singlegpu/shim/test_ad_executor_swa_eviction.py
Adds multi-pool interface helper and tests: distinct window sizes allowed by default; uniform cache enforcement when requested; cyclic-view passes full table and global KV length; cyclic and window-local diverge under front-eviction.
End-to-end multi-pool transformation and execution tests
tests/unittest/auto_deploy/singlegpu/transformations/library/test_kv_cache_trtllm_multipool.py
New CUDA integration test module: 2-layer model with mixed SWA (layer 0) and full attention (layer 1); exports via InferenceOptimizer for trtllm backend; validates cyclic-SWA path selection, two KV pools, and correct output (numeric match for no-mask; shape/finiteness for SWA-engaged).
Transform capability propagation tests
tests/unittest/auto_deploy/singlegpu/transformations/library/test_kvcache_vswa_metadata.py
Parametrized test across triton_paged and trtllm backends verifying transform correctly sets kernel_handles_cyclic_swa flag and registers two window groups per backend.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • NVIDIA/TensorRT-LLM#14194: Overlaps at InsertCachedAttention._apply in kvcache.py (retrieved PR removes triton-warning override; this PR adds kernel_handles_cyclic_swa propagation).

Suggested reviewers

  • QiJune
  • galagam
  • nv-guomingz
  • venkywonka
  • tomeras91
  • Wanli-Jiang
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 65.31% which is insufficient. The required threshold is 80.00%. 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 '[#14828][feat] AutoDeploy: support multi KV cache memory pool in trtllm attention' is clear, specific, and directly summarizes the main feature being added—multi-pool KV cache support for trtllm attention.
Description check ✅ Passed The PR description comprehensively covers the motivation, the three main blockers being removed, detailed test coverage, validation results, and measured performance improvements. All template sections are adequately addressed.
Linked Issues check ✅ Passed The PR fully addresses all coding requirements from issue #14828: enables multiple KV pools by returning False from requires_uniform_kv_caches [llm_args.py], implements per-group block_offsets buffers [trtllm_attention.py], and implements cyclic-window staging via kernel_handles_cyclic_swa [attention_interface.py, ad_executor.py, interface.py, kvcache.py].
Out of Scope Changes check ✅ Passed All changes are directly scoped to enabling multi-pool KV cache support in trtllm attention: modifications to gating logic, per-group buffer management, cyclic-window handling, supporting infrastructure, and corresponding tests. No unrelated refactoring or ancillary changes detected.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@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 (2)
tests/unittest/auto_deploy/singlegpu/transformations/library/test_kv_cache_trtllm_multipool.py (1)

119-205: 🏗️ Heavy lift

Exercise the real executor path and a multi-page case here.

This helper hand-builds cache_loc_per_pool / seq_len_with_cache_per_pool and also keeps tokens_per_block == max_seq_len, so both tests stay in a single-page regime. That means a regression in tensorrt_llm/_torch/auto_deploy/shim/ad_executor.py::_prepare_inputs() or in the multi-page cyclic staging/block-table path would still pass here. Please drive one case through the executor staging path and shrink tokens_per_block (or grow seq_len) so the SWA pool spans multiple pages. Coverage is currently insufficient for the executor change. As per coding guidelines, tests/**: Act as a QA engineer reviewing test changes and coverage for TensorRT-LLM.

🤖 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/auto_deploy/singlegpu/transformations/library/test_kv_cache_trtllm_multipool.py`
around lines 119 - 205, The test currently hand-constructs cache metadata and
keeps tokens_per_block == max_seq_len so it never exercises the
multi-page/executor staging path; change the setup in _build_and_stage to drive
at least one case through the real executor staging (instead of fully
hand-building cache_loc_per_pool/seq_len_with_cache_per_pool) and make the SWA
pool span multiple pages by reducing tokens_per_block (or increasing seq_len) so
tokens_per_block < seq_len (e.g., tokens_per_block much smaller than seq_len)
which forces multi-page behavior; ensure you still call the same
CachedSequenceInterface instance (cm) and invoke the graph/executor path via
gm(**cm.named_args) so ad_executor::_prepare_inputs() and the cyclic
staging/block-table code are exercised rather than bypassed.
tests/unittest/auto_deploy/singlegpu/custom_ops/attention/test_trtllm_attention_op.py (1)

903-903: ⚡ Quick win

Add type annotations to the newly introduced test helper/methods.

The new methods in this class are currently untyped (e.g., Line 903, Line 921, Line 953). Please annotate parameters and return types (-> None for tests) to match repo typing guidance.

Suggested patch
@@
     `@staticmethod`
-    def _host_prepare(num_seq, max_seq_len, tokens_per_block, max_batch_size, device):
+    def _host_prepare(
+        num_seq: int,
+        max_seq_len: int,
+        tokens_per_block: int,
+        max_batch_size: int,
+        device: str,
+    ) -> torch.Tensor:
@@
-    def test_per_group_buffers_are_distinct_and_not_clobbered(self, device):
+    def test_per_group_buffers_are_distinct_and_not_clobbered(self, device: str) -> None:
@@
-    def test_same_cache_loc_returns_stable_buffer(self, device):
+    def test_same_cache_loc_returns_stable_buffer(self, device: str) -> None:

As per coding guidelines: "Always annotate functions; make the return type None if the function does not return anything."

Also applies to: 921-970

🤖 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/auto_deploy/singlegpu/custom_ops/attention/test_trtllm_attention_op.py`
at line 903, Several newly added test helper methods (including _host_prepare
and the other helpers introduced around lines 921 and 953) lack type
annotations; update each function signature to annotate all parameters with
appropriate types and set the return type to None (e.g., def
_host_prepare(num_seq: int, max_seq_len: int, tokens_per_block: int,
max_batch_size: int, device: torch.device) -> None), following the repo typing
conventions so the test helpers are fully typed.
🤖 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/auto_deploy/singlegpu/transformations/library/test_kvcache_vswa_metadata.py`:
- Line 222: The test unpacks an unused variable `gm` from the call gm, info, cm
= _run_transform(backend=backend) which triggers Ruff RUF059; fix it by removing
the unnecessary binding or replace `gm` with `_` (e.g., _, info, cm =
_run_transform(...)) in the test_kvcache_vswa_metadata parametrized test so only
used values (`info`, `cm`) are kept; update any local references if they relied
on `gm` and ensure `_run_transform` call remains unchanged.

---

Nitpick comments:
In
`@tests/unittest/auto_deploy/singlegpu/custom_ops/attention/test_trtllm_attention_op.py`:
- Line 903: Several newly added test helper methods (including _host_prepare and
the other helpers introduced around lines 921 and 953) lack type annotations;
update each function signature to annotate all parameters with appropriate types
and set the return type to None (e.g., def _host_prepare(num_seq: int,
max_seq_len: int, tokens_per_block: int, max_batch_size: int, device:
torch.device) -> None), following the repo typing conventions so the test
helpers are fully typed.

In
`@tests/unittest/auto_deploy/singlegpu/transformations/library/test_kv_cache_trtllm_multipool.py`:
- Around line 119-205: The test currently hand-constructs cache metadata and
keeps tokens_per_block == max_seq_len so it never exercises the
multi-page/executor staging path; change the setup in _build_and_stage to drive
at least one case through the real executor staging (instead of fully
hand-building cache_loc_per_pool/seq_len_with_cache_per_pool) and make the SWA
pool span multiple pages by reducing tokens_per_block (or increasing seq_len) so
tokens_per_block < seq_len (e.g., tokens_per_block much smaller than seq_len)
which forces multi-page behavior; ensure you still call the same
CachedSequenceInterface instance (cm) and invoke the graph/executor path via
gm(**cm.named_args) so ad_executor::_prepare_inputs() and the cyclic
staging/block-table code are exercised rather than bypassed.
🪄 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: 9d508c5e-4fd7-4873-8e83-2745e29257e5

📥 Commits

Reviewing files that changed from the base of the PR and between a163d74 and bee9440.

📒 Files selected for processing (10)
  • tensorrt_llm/_torch/auto_deploy/custom_ops/attention/trtllm_attention.py
  • tensorrt_llm/_torch/auto_deploy/custom_ops/attention_interface.py
  • tensorrt_llm/_torch/auto_deploy/llm_args.py
  • tensorrt_llm/_torch/auto_deploy/shim/ad_executor.py
  • tensorrt_llm/_torch/auto_deploy/shim/interface.py
  • tensorrt_llm/_torch/auto_deploy/transform/library/kvcache.py
  • tests/unittest/auto_deploy/singlegpu/custom_ops/attention/test_trtllm_attention_op.py
  • tests/unittest/auto_deploy/singlegpu/shim/test_ad_executor_swa_eviction.py
  • tests/unittest/auto_deploy/singlegpu/transformations/library/test_kv_cache_trtllm_multipool.py
  • tests/unittest/auto_deploy/singlegpu/transformations/library/test_kvcache_vswa_metadata.py

@MrGeva

MrGeva commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

MrGeva added 2 commits June 7, 2026 12:01
…n trtllm attention

Enable multiple KV cache memory pools in AutoDeploy's trtllm attention so
non-uniform sliding-window models (e.g. gpt-oss) work on the trtllm backend.
The window-group machinery already existed for triton/flashinfer; this removes
the three trtllm-specific blockers:

- Gate: requires_uniform_kv_caches now returns False, so the unified
  KVCacheManager may host more than one pool for trtllm.
- Per-group block_offsets: the trtllm planner keeps an address-stable
  block_offsets buffer per KV window group (keyed by the group's cache_loc
  input pointer) so per-group prepare_trtllm_metadata invocations no longer
  clobber a single shared buffer.
- Cyclic-window staging: the trtllm kernel masks the sliding window internally
  via cyclic indexing, so the executor passes the full per-window block table
  and global KV length (mirroring the PyTorch backend) instead of host-slicing.
  A new AttentionDescriptor.kernel_handles_cyclic_swa() capability (True only
  for trtllm) is plumbed through the kvcache transform and CachedSequenceInterface.

Adds unit coverage for per-group buffers, cyclic-view staging, the gate, the
backend plumbing, and a forward-level two-pool trtllm test.

Signed-off-by: Eran Geva <19514940+MrGeva@users.noreply.github.com>
…st for multi KV pool

trtllm attention now supports multiple KV cache memory pools, so
requires_uniform_kv_caches defaults to False for all backends. Update
the test assertion to match the new contract.

Signed-off-by: egeva <19514940+MrGeva@users.noreply.github.com>
@MrGeva
MrGeva force-pushed the eg/ad-trtllm-multipool-kv branch from d87bc68 to da0dcfd Compare June 7, 2026 09:01
@MrGeva

MrGeva commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52566 [ run ] triggered by Bot. Commit: da0dcfd Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52567 [ run ] triggered by Bot. Commit: da0dcfd Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52566 [ run ] completed with state ABORTED. Commit: da0dcfd

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

@MrGeva

MrGeva commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52582 [ run ] triggered by Bot. Commit: da0dcfd Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

…SWA test

The triton_paged backend was consolidated into the 'triton' backend
(registered in triton_attention.py), so the parametrized
test_vswa_sets_kernel_handles_cyclic_swa case failed in CI with
'Attention source triton_paged not registered'. Rename the case to
'triton', matching the sibling tests in this file and the current
attention registry. The triton descriptor inherits the base
kernel_handles_cyclic_swa() default (False), so expected_cyclic stays
False.

Signed-off-by: egeva <19514940+MrGeva@users.noreply.github.com>
@MrGeva

MrGeva commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52590 [ run ] triggered by Bot. Commit: fe67bf7 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

@MrGeva

MrGeva commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52685 [ run ] triggered by Bot. Commit: fe67bf7 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

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

…navailable

In the standalone auto_deploy CI environment, TRT-LLM native bindings
are absent so the 'trtllm' attention backend never registers.  Three
tests then fail with 'Attention source trtllm not registered':

- test_vswa_sets_kernel_handles_cyclic_swa[trtllm-True]: add a
  pytest.skip() guard when trtllm_ops_available() is False; the
  [triton-False] case continues to run standalone.
- test_kv_cache_trtllm_multipool.py (both tests): extend the existing
  pytestmark skipif to also require trtllm_ops_available().
- create_standalone_package.py: exclude test_kv_cache_trtllm_multipool.py
  from the standalone package (same treatment as test_gemm_fusion_trtllm.py
  and test_kv_cache.py which have the same dependency).

Signed-off-by: Eran Geva <19514940+MrGeva@users.noreply.github.com>
@MrGeva

MrGeva commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52761 [ run ] triggered by Bot. Commit: ae81c00 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #52761 [ run ] completed with state SUCCESS. Commit: ae81c00
/LLM/main/L0_MergeRequest_PR pipeline #42022 completed with status: 'SUCCESS'

CI Report

Link to invocation

@MrGeva
MrGeva merged commit cb01607 into NVIDIA:main Jun 8, 2026
7 checks passed
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.

[Feature]: AutoDeploy: Support multi kv cache memory pool in trtllm attention

3 participants