Repository navigation
Torch-TensorRT 2.14.0 Linux x86-64 and Windows targets
PyTorch 2.14, CUDA 12.6/13.0/13.2, TensorRT 11.1, Python 3.10~3.14
Torch-TensorRT Wheels are available:
x86-64 Linux and Windows:
CUDA 13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyPI: https://pypi.org/project/torch-tensorrt
CUDA 12.6/13.0/13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyTorch index: https://download.pytorch.org/whl/torch-tensorrt
aarch64 SBSA Linux and Jetson Thor and Orin:
CUDA 13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyPI: https://pypi.org/project/torch-tensorrt
CUDA 13.0/13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyTorch index: https://download.pytorch.org/whl/torch-tensorrt
Torch-TensorRT-RTX 2.14.0 Linux x86-64 and Windows targets
PyTorch 2.14, CUDA 12.6/13.0/13.2, TensorRT-RTX 1.6, Python 3.10~3.14
Torch-TensorRT-RTX Wheels are available:
x86-64 Linux and Windows:
CUDA 13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyPI: https://pypi.org/project/torch-tensorrt-rtx
CUDA 12.6/13.0/13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyTorch index: https://download.pytorch.org/whl/torch-tensorrt-rtx
Torch-TensorRT-Executorch-Runtime 2.14.0 Linux x86-64 and Windows targets
PyTorch 2.14, CUDA 12.6/13.0/13.2, TensorRT 11.1, Python 3.10~3.14
Torch-TensorRT-Executorch-Runtime Wheels are available:
x86-64 Linux:
CUDA 13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyPI: https://pypi.org/project/torch-tensorrt-executorch-runtime
CUDA 12.6/13.0/13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyTorch index: https://download.pytorch.org/whl/torch-tensorrt-executorch-runtime
aarch64 SBSA Linux and Jetson Thor and Orin:
CUDA 13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyPI: https://pypi.org/project/torch-tensorrt-executorch-runtime
CUDA 12.6/13.0/13.2 + Python 3.10-3.14 + Torch 2.14 + TensorRT 11.1
- Available via PyTorch index: https://download.pytorch.org/whl/torch-tensorrt-executorch-runtime
New Features:
Executorch
Torch-TensorRT 2.14 expands its ExecuTorch integration with a more complete export and deployment workflow for TensorRT-accelerated .pte models.
Highlights:
- New torch_tensorrt.executorch.export() API for producing an inspectable EdgeProgramManager before serialization.
- Support for exporting multiple named methods into a single .pte artifact, with optional constant methods and ETRecord generation for debugging.
- torch_tensorrt.save(..., output_format="executorch") remains the streamlined path for one-step model export.
- Supports composing the TensorRT partitioner with additional ExecuTorch partitioners, enabling mixed TensorRT and CUDA delegation in one artifact.
- The optional torch-tensorrt-executorch-runtime package enables loading and running exported .pte files through torch_tensorrt.load(..., format="executorch").
- Continues to use the lightweight native TensorRT ExecuTorch backend, without a Torch or LibTorch dependency at deployment time.
- Aliased I/O for in-place operations — TensorRT engines can now write directly into a caller-owned or module-owned tensor's storage, so KV-cache updates in streaming and autoregressive inference no longer pay a full cache-sized copy at the engine boundary.
- Multiple optimization profiles — A single engine can now carry several independently tuned shape profiles selected at runtime by index or automatically, so bimodal workloads like LLM prefill and decode each get kernels tuned for their own shapes instead of splitting the difference.
ExecuTorch support is currently available on Linux(x86-64+aarch64), will Support Windows from 2.15 release.
Multi-Device in TRT-RTX
This release expands multi-GPU support across standard TensorRT and TensorRT-RTX configurations. Native TensorRT collective operations are enabled for TRT-RTX 1.5+ builds on supported Ampere or newer GPUs. Also there is improved process group discovery, including non contiguous subgroup identifiers and serialized save/load, which prevents crashes and ensures distributed engines bind to the correct world group or subgroup.
FP8 Fused Attention Layers / Quantization
This release introduces native FP8 support for TensorRT's IAttention layer. To enable this and improve overall attention layer performance, four attention converters were comprehensively refactored to utilize TensorRT's updated add_attention_v2() API. Beyond core attention support, the update strengthens the FP8 quantization pipeline by adding support for ITensor amax computations, complete with a new export_torch_mode() wrapper to streamline the model export process. Finally, to ensure a smoother out-of-the-box developer experience, this update patches NVIDIA ModelOpt versioning issues within the provided Vision Transformer (ViT) FP8 quantization examples.
Aliased IO and KV Caching
Aliased I/O for in-place operations (#4251)
TensorRT engines can now write in place into a tensor you own, removing the full-tensor copy that in-place operators previously paid at the engine boundary. The main beneficiary is streaming and autoregressive inference with a key/value cache, where each step wrote one timestep but copied the whole cache. Caches passed as inputs and caches registered as module buffers both work, on either runtime, with or without CUDA graphs, and compiled modules still save and load normally. Cases TensorRT can't alias fall back to the previous behavior, so nothing that compiled before stops compiling. This is an ABI-breaking change: previously serialized engines must be rebuilt.
Multi Optimization Profile
A single engine can now carry several independently tuned shape profiles and switch between them at runtime, so one set of weights serves multiple shape regimes without rebuilding. This matters most for autoregressive LLMs, where long prefill and single-token decode previously had to share one tuning point and decode ran on prefill-shaped kernels. Declare profiles with the new profiles argument to torch_tensorrt.Input, then pin one per with block using torch_tensorrt.runtime.optimization_profile, or pass "auto" to select by input shape. Engines that declare no profiles are unaffected.
Improved Complex number lowering in Dynamo
Torch-TensorRT now integrates Pytorch's upstream complex-number decomposition for dynamo compiled models. For torch versions >= 2.14, the new path is enabled automatically and converts complex operations into TensorRT compatible real valued operations while preserving complex I/O and symbolic dynamic shapes.
What's Changed
- dynamic shape arg by @apbose in #4233
- upgrade torch-tensorrt from 2.13 to 2.14 on main by @lanluo-nvidia in #4338
- Use runtime platform for TensorRT engine target checks by @SandSnip3r in #4344
- feat(runtime): TRT-RTX runtime controls via context managers by @tp5uiuc in #4330
- docs: add Claude Code skill for local builds by @narendasan in #4347
- fix: Fix dockerfile builds by @narendasan in #4348
- Add a build rule which produces compile_commands.json for clangd by @SandSnip3r in #4229
- tests(cross-runtime-serde): hide torch-trt DLLs on Windows too by @tp5uiuc in #4343
- MD-TRT changes for release 2.13 by @apbose in #4358
- TRT 11 MD Ops by @jloftin-nv in #4321
- add the hedron_compile_commands dep to the other MODULE.bazel by @narendasan in #4364
- feat(dynamo): add target_executorch setting to keep output-allocator ops in PyTorch by @shoumikhin in #4355
- fix: restore static allocation on ResourceAllocationStrategy exit by @cehongwang in #4356
- feat: support custom ExecutorchBackendConfig in save(output_format='executorch') by @shoumikhin in #4345
- Refit weight name map removal by @cehongwang in #4342
- fix: Some stale apis needed updating in the runtime by @narendasan in #4367
- refactor(dynamo): make _requires_output_allocator a pure predicate by @cehongwang in #4369
- Solve the weight streaming failure by @cehongwang in #4365
- Improve CI DX by @narendasan in #4352
- Fix attn_bias in scaled_dot_product_effecient_attention by @jloftin-nv in #4370
- feat: multiple optimization profiles for disjoint input shape regimes by @cehongwang in #4363
- build(deps): bump transformers from 5.0.0rc3 to 5.3.0 in /tools/perf by @dependabot[bot] in #4377
- fix(runtime): autosave engine-implicit RuntimeCache via atexit + weakref by @tp5uiuc in #4362
- fix: resolve lifted TRT engine custom-object by graph-signature FQN in ExecuTorch export by @shoumikhin in #4349
- fix: high vulnerabilities by @zewenli98 in #4371
- Fix bool attention mask bias conversion by @fallintoplace in #4354
- docs: contributor design page for the runtime-settings subsystem by @tp5uiuc in #4384
- chore: upgrade some lib versions due to vulnerabilities by @zewenli98 in #4387
- IAttention FP8 by @narendasan in #4209
- Fix aten::any.dim truthiness for numeric tensors by @fallintoplace in #4353
- user provided bound for torchtrt compile when export dimension is unb… by @apbose in #4213
- backfill docs: 2.11.0+2.12.0 by @lanluo-nvidia in #4395
- Fix linear bias broadcasting in the Dynamo converter by @fs-eire in #4393
- add torch/torch.h to fix the cpp build issue by @lanluo-nvidia in #4396
- fix: resolve ExecuTorch TRT target_device per partition (coalesced multi-engine) by @shoumikhin in #4350
- Fix the Qwen GQA test failure. by @SandSnip3r in #4385
- Fix complex_graph_rewrite crashing on a None-valued placeholder by @jloftin-nv in #4401
- fix test sdpa converter test cpp build issue by @lanluo-nvidia in #4405
- fix 4326: bound exported dynamic shapes and normalize symbolic slice … by @micwill755 in #4341
- feat: Allow for users / kv cache to add aliased I/O for inplace operations by @narendasan in #4251
- cherry pick from release/ngc/26.08 back to main by @lanluo-nvidia in #4414
- fix: bind ExecuTorch TRT engine inputs in delegate arg order by @shoumikhin in #4400
- fix(distributed): subgroup NCCL regression + nccl_utils TRT 11 cleanup by @apbose in #4407
- feat: limit RAM usage in bazel build by @zewenli98 in #4418
- fix: patch the modelopt version issue in quantize_vit_fp8 example by @zewenli98 in #4422
- fix: add missing serialized_aliased_io arg to no_op_placeholder op schema by @shoumikhin in #4423
- test: skip engine-cache benchmark on TensorRT-RTX by @tp5uiuc in #4432
- fix: avoid linking transitive PyTorch CUDA libraries into libtorchtrt by @fs-eire in #4427
- feat: refactor four attention converters with TRT
add_attention_v2()by @zewenli98 in #4416 - Enable Dynamic Shapes For MD Ops by @jloftin-nv in #4402
- feat: custom binding names for out of runtime deployment by @narendasan in #4309
- executorch: persist external .ptd weights and preserve lifted constant dtype/device by @Conarnar in #4404
- feat: Enable TensorRT-RTX build for linux-aarch64 (SBSA / DGX Spark) by @narendasan in #4426
- fix the cuda graph issue by @lanluo-nvidia in #4439
- fix(runtime): RuntimeCache pickle path — wrapper exclusion + handle bytes round-trip by @tp5uiuc in #4368
- upgrade tensorrt from 11.0 to 11.1, tensorrt-rtx from 1.5 to 1.6 by @lanluo-nvidia in #4415
- Add a testcase for ts compile -> saving with torch_tensorrt.save by @narendasan in #3778
- tool: A UI to look at CI results that doesnt suck by @narendasan in #4397
- fix: support ITensor amex in quantize and add
export_torch_mode()wrapper by @zewenli98 in #4431 - fix: arange converter by @zewenli98 in #4456
- windows on arm build by @lanluo-nvidia in #4461
- add release lane and fix nightly issue by @lanluo-nvidia in #4478
- add a dummy nightly schedule for windows on arm by @lanluo-nvidia in #4479
- Fix Blackwell SM by @jloftin-nv in #4436
- clean up nightly ci issues by @lanluo-nvidia in #4488
- add torch-tensorrt-executorch-runtime wheel build by @lanluo-nvidia in #4398
- [MD-TRT] feat: enable native multi-device TensorRT on TensorRT-RTX builds by @apbose in #4462
- fix: keep requires_grad when re-wrapping a lifted parameter by @shoumikhin in #4480
- fix ci race caused cancelling each other by @lanluo-nvidia in #4500
- backfill release 2.13 doc by @lanluo-nvidia in #4499
- Bump ExecuTorch to 1.4.1 by @shoumikhin in #4434
- fix(executorch): copy the engine in bulk instead of byte by byte by @shoumikhin in #4473
- fix(executorch): do not resize a 0-d delegate output by @shoumikhin in #4469
- docs(executorch): note the single-CUDA-stream requirement for coalesced .pte by @Conarnar in #4444
- fix: preserve multi-value shape tensor inputs by @zupengwang in #4477
- fix(tests): correct TensorRT-RTX deconv version gate and guard plugin-backed converter tests by @tp5uiuc in #4467
- fix: support dynamic slice_scatter fallback shapes by @kiwigitops in #4455
- build(deps): bump monai from 1.5.2rc1 to 1.6.0 in /tools/perf by @dependabot[bot] in #4457
- fix: stabilize engine cache keys for unordered settings by @fs-eire in #4451
- fix: support int64 indices for embedding by @fs-eire in #4447
- fix(executorch): drain the stream when a device-to-host copy fails by @shoumikhin in #4471
- fix: lift mutated buffers owned by a submodule by @shoumikhin in #4472
- build(deps): bump setuptools from 78.1.1 to 83.0.0 in /toolchains/jp_workspaces by @dependabot[bot] in #4425
- test: re-enable cumsum tests on TensorRT-RTX by @SandSnip3r in #4420
- chore(deps): bump uuid and @actions/core in /.github/actions/assigner by @dependabot[bot] in #4205
- Fuse pad into convolution by @micwill755 in #4442
- ci: stop bazel truncating a failing action's output by @shoumikhin in #4524
- fix: unblock the ExecuTorch runtime wheel configure (Python::Python on manylinux) by @shoumikhin in #4523
- fix(dynamo): sort_validator crashes with IndexError when dim is omitted by @apbose in #4487
- fix: stop forcing libstdc++.a into extensions the toolchain already links by @shoumikhin in #4525
- add direct converter for aten.repeat instead of decompo… by @apbose in #4483
- feat(executorch): expose composable Edge export API by @shoumikhin in #4440
- Fix 4x dynamic engine workspace overallocation by @SandSnip3r in #4503
- fix: carry aliased_io through the engine cache by @shoumikhin in #4522
- fix: make the ExecuTorch runtime wheel build and its reference runner work by @shoumikhin in #4534
- feat(executorch): forward ExecuTorch lowering kwargs through save(output_format="executorch") by @Conarnar in #4433
- perf(runtime): skip TensorRT engine fakification during export by reporting tracing_mode "real" by @Conarnar in #4489
- perf: skip the base64 round trip when reading TensorRT engine info by @Conarnar in #4502
- fix(runtime): pass the workspace size to set_device_memory by @shoumikhin in #4537
- namedtuple in input by @apbose in #4340
- Add TensorRT weight streaming support to the ExecuTorch delegate by @shoumikhin in #4336
- refactor(executorch)!: share one caller stream, and ship the CUDA delegate in the runtime wheel by @shoumikhin in #4454
- fix(dynamo): correct legacy exporter (retrace=False) submodule inlining for hybrid graphs by @Conarnar in #4446
- ci: stop running the ExecuTorch build when the wheel it needs was cancelled by @shoumikhin in #4538
- fix: stop nm symbol checks failing on SIGPIPE in the reference runner gate by @shoumikhin in #4539
- add converter for aten.linalg_cross (torch.cross / torc… by @apbose in #4485
- fix(dynamo): handle dynamic (ITensor) negative start in impl.slice.sl… by @apbose in #4486
- feat: support configurable constant-fold exclusions by @fs-eire in #4450
- Fix complex rewrite non-tensor meta["val"] by @jloftin-nv in #4507
- Fix where bfloat16 promotion by @jloftin-nv in #4510
- Fix sort validator default dim by @jloftin-nv in #4506
- feat: flag-gated upstream complex decomposition adapter by @apbose in #4430
- fix(executorch): support KV-cache aliased I/O in the TensorRT delegate by @Conarnar in #4445
- Bound the ExecuTorch requirement to the compiled release by @shoumikhin in #4542
- Reformat the parametrize decorator black wants wrapped by @shoumikhin in #4544
- Drop the ExecuTorch local version from the runtime wheel requirement by @shoumikhin in #4545
- Ship the constant_fold_exclusions package in the wheel by @shoumikhin in #4547
- Run the uv.lock sync in a CUDA 13.2 container by @shoumikhin in #4543
- Fix empty inputs=() by @jloftin-nv in #4505
- [fix] MD-TRT: handle c10::Error in bind_nccl_comm() probe loop by @apbose in #4465
- aten.baddbmm decomposition by @jloftin-nv in #4515
- Detect ExecuTorch pin drift across the repository by @shoumikhin in #4548
- fix test linkage issue by @lanluo-nvidia in #4495
- Derive the ExecuTorch requirement from the version pin by @shoumikhin in #4555
- fix constant fold reinitialize issue by @lanluo-nvidia in #4558
- skip flashinfer-python in windows since the dependencies are not supp… by @lanluo-nvidia in #4563
- fix tensorrt engine platform mismatch issue in windows by @lanluo-nvidia in #4565
- fix artifact name conflict for tensorrt and rtx artifact name in windows by @lanluo-nvidia in #4561
- 2.14 release branch cut by @lanluo-nvidia in #4492
- bringback cu126 to 2.14 release by @lanluo-nvidia in #4652
- fix(executorch): back device-planned arenas when loading in Python by @shoumikhin in #4655
- executorch cu126 issue fix by @lanluo-nvidia in #4660
- Put a CUDA runtime on the library path for CUDA 12 rows too by @shoumikhin in #4668
- update windows on arm to use nv pytorch 2.14 release by @lanluo-nvidia in #4671
- add executorch build in aarch64 by @lanluo-nvidia in #4676
- redesign the executorch build test ci workflow by @lanluo-nvidia in #4680
- upgrade diffusers and transformers version by @lanluo-nvidia in #4683
- add getting started doc by @lanluo-nvidia in #4690
- change it from preview to official ctk 134 by @lanluo-nvidia in #4699
New Contributors
- @fallintoplace made their first contribution in #4354
- @micwill755 made their first contribution in #4341
- @kiwigitops made their first contribution in #4455
Full Changelog: v2.13.0...v2.14.0