NVIDIA/TensorRT
GitHub: NVIDIA/TensorRT
NVIDIA 官方的高性能深度学习推理 SDK,用于在 GPU 上对训练好的模型进行极致优化和加速部署。
Stars: 12952 | Forks: 2353
[](https://opensource.org/licenses/Apache-2.0) [](https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html) [](documents/tensorrt_roadmap_2026q1.pdf)
# :mega::mega: 公告 :mega::mega:
TensorRT 11.0 将于 2026 年第二季度推出,具备旨在加速您的 AI 推理工作流的强大新功能。随着此主要版本的升级,TensorRT 的 API 将得到精简,并且一些旧版功能将被移除。
我们建议尽早迁移以下功能:
- 弱类型网络及相关 API 将被移除,由[强类型网络](https://docs.nvidia.com/deeplearning/tensorrt/latest/inference-library/advanced.html#strongly-typed-networks)取代。
- 隐式量化及相关 API 将被移除,由[显式量化](https://docs.nvidia.com/deeplearning/tensorrt/latest/inference-library/work-quantized-types.html#explicit-quantization)取代。
- IPluginV2 及相关 API 将被移除,由 [IPluginV3](https://docs.nvidia.com/deeplearning/tensorrt/latest/inference-library/extending-custom-layers.html#migrating-v2-plugins-to-ipluginv3) 取代。
- TREX 工具将被移除,由 [Nsight Deep Learning Designer](https://docs.nvidia.com/nsight-dl-designer/UserGuide/index.html#visualizing-a-tensorrt-engine) 取代。
- 从 TensorRT 10.16 开始,将不再提供针对 Python 3.9 及更早版本的 Python 绑定。适用于 RHEL/Rocky Linux 8 和 RHEL/Rocky Linux 9 的 RPM 包现在依赖于 Python 3.12。
# TensorRT 开源软件
此仓库包含 NVIDIA TensorRT 的开源软件 (OSS) 组件。它包括 TensorRT 插件和 ONNX 解析器的源代码,以及展示 TensorRT 平台用法和功能的示例应用程序。这些开源软件组件是 TensorRT 正式发布 (GA) 版本的一个子集,并包含了一些扩展和错误修复。
- 如需了解对 TensorRT-OSS 的代码贡献,请参阅我们的[贡献指南](CONTRIBUTING.md)和[编码规范](CODING-GUIDELINES.md)。
- 有关 TensorRT-OSS 版本发布的新增功能和更新的摘要,请参阅[更新日志](CHANGELOG.md)。
- 有关业务咨询,请联系 [researchinquiries@nvidia.com](mailto:researchinquiries@nvidia.com)
- 有关媒体和其他咨询,请联系 Hector Marinez:[hmarinez@nvidia.com](mailto:hmarinez@nvidia.com)
需要企业级支持?通过 [NVIDIA AI Enterprise 软件套件](https://www.nvidia.com/en-us/data-center/products/ai-enterprise/),可获得 NVIDIA 针对 TensorRT 提供的全球支持。查看 [NVIDIA LaunchPad](https://www.nvidia.com/en-us/launchpad/ai/ai-enterprise/),免费访问一系列在 NVIDIA 基础设施上托管的 TensorRT 动手实验室。
加入 [TensorRT 和 Triton 社区](https://www.nvidia.com/en-us/deep-learning-ai/triton-tensorrt-newsletter/),随时了解最新的产品更新、错误修复、内容、最佳实践等信息。
# 预编译的 TensorRT Python 包
我们提供 TensorRT Python 包以便于安装。 \
安装命令:
```
pip install tensorrt
```
您可以跳过 **构建** 部分,直接使用 Python 体验 TensorRT。
# 构建
## 前置条件
要构建 TensorRT-OSS 组件,您首先需要以下软件包。
**TensorRT GA 构建**
- TensorRT v10.16.1.11
- 可从下面列出的直接下载链接获取
**系统软件包**
- [CUDA](https://developer.nvidia.com/cuda-toolkit)
- 推荐版本:
- cuda-13.2.0
- cuda-12.9.0
- [CUDNN (可选)](https://developer.nvidia.com/cudnn)
- cuDNN 8.9
- [GNU make](https://ftp.gnu.org/gnu/make/) >= v4.1
- [cmake](https://github.com/Kitware/CMake/releases) >= v3.31
- [python](https://www.python.org/downloads/) >= v3.10, <= v3.13.x
- [pip](https://pypi.org/project/pip/#history) >= v19.0
- 基本实用工具
- [git](https://git-scm.com/downloads), [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/), [wget](https://www.gnu.org/software/wget/faq.html#download)
**可选软件包**
- [NCCL](https://developer.nvidia.com/nccl/nccl-download) >= v2.19, < v3.0 — 仅当使用多设备支持 (`-DTRT_BUILD_ENABLE_MULTIDEVICE=ON`) 为 `sampleDistCollective` 示例构建时需要。
- 容器化构建
- [Docker](https://docs.docker.com/install/) >= 19.03
- [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-docker)
- PyPI 软件包(用于演示应用程序/测试)
- [onnx](https://pypi.org/project/onnx/)
- [onnxruntime](https://pypi.org/project/onnxruntime/)
- [tensorflow-gpu](https://pypi.org/project/tensorflow/) >= 2.5.1
- [Pillow](https://pypi.org/project/Pillow/) >= 9.0.1
- [pycuda](https://pypi.org/project/pycuda/) < 2021.1
- [numpy](https://pypi.org/project/numpy/)
- [pytest](https://pypi.org/project/pytest/)
- 代码格式化工具(面向贡献者)
- [Clang-format](https://clang.llvm.org/docs/ClangFormat.html)
- [Git-clang-format](https://github.com/llvm-mirror/clang/blob/master/tools/clang-format/git-clang-format)
## 下载 TensorRT 构建
1. 下载 TensorRT OSS
git clone -b main https://github.com/nvidia/TensorRT TensorRT
cd TensorRT
git submodule update --init --recursive
2. (可选 - 如果不使用 TensorRT 容器)指定 TensorRT GA 发布构建路径
如果使用 TensorRT OSS 构建容器,TensorRT 库已预安装在 `/usr/lib/x86_64-linux-gnu` 下,您可以跳过此步骤。
否则,请通过以下直接链接从 [NVIDIA Developer Zone](https://developer.nvidia.com) 下载并解压 TensorRT GA 构建:
- [适用于 CUDA 13.2, Linux x86_64 的 TensorRT 10.16.1.11](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.16.1/tars/TensorRT-10.16.1.11.Linux.x86_64-gnu.cuda-13.2.tar.gz)
- [适用于 CUDA 12.9, Linux x86_64 的 TensorRT 10.16.1.11](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.16.1/tars/TensorRT-10.16.1.11.Linux.x86_64-gnu.cuda-12.9.tar.gz)
- [适用于 CUDA 13.2, Windows x86_64 的 TensorRT 10.16.1.11](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.16.1/zip/TensorRT-10.16.1.11.Windows.amd64.cuda-13.2.zip)
- [适用于 CUDA 12.9, Windows x86_64 的 TensorRT 10.16.1.11](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/10.16.1/zip/TensorRT-10.16.1.11.Windows.amd64.cuda-12.9.zip)
**示例:搭载 cuda-13.2 的 x86-64 架构 Ubuntu 22.04**
cd ~/Downloads
tar -xvzf TensorRT-10.16.1.11.Linux.x86_64-gnu.cuda-13.2.tar.gz
export TRT_LIBPATH=`pwd`/TensorRT-10.16.1.11/lib
**示例:搭载 cuda-12.9 的 x86-64 架构 Windows**
Expand-Archive -Path TensorRT-10.16.1.11.Windows.amd64.cuda-12.9.zip
$env:TRT_LIBPATH="$pwd\TensorRT-10.16.1.11\lib"
## 设置构建环境
对于 Linux 平台,我们建议您按照下文描述生成一个 Docker 容器来构建 TensorRT-OSS。对于原生构建,请安装[前置条件](#prerequisites)中的 *系统软件包*。
1. 生成 TensorRT-OSS 构建容器。
**示例:搭载 cuda-13.2 的 x86-64 架构 Ubuntu 24.04(默认)**
./docker/build.sh --file docker/ubuntu-24.04.Dockerfile --tag tensorrt-ubuntu24.04-cuda13.2
**示例:搭载 cuda-13.2 的 x86-64 架构 Rockylinux8**
./docker/build.sh --file docker/rockylinux8.Dockerfile --tag tensorrt-rockylinux8-cuda13.2
**示例:搭载 cuda-13.2 的 Ubuntu 24.04 交叉编译 Jetson (aarch64) (JetPack SDK)**
./docker/build.sh --file docker/ubuntu-cross-aarch64.Dockerfile --tag tensorrt-jetpack-cuda13.2
**示例:搭载 cuda-13.2 的 aarch64 架构 Ubuntu 24.04**
./docker/build.sh --file docker/ubuntu-24.04-aarch64.Dockerfile --tag tensorrt-aarch64-ubuntu24.04-cuda13.2
2. 启动 TensorRT-OSS 构建容器。
**示例:Ubuntu 24.04 构建容器**
./docker/launch.sh --tag tensorrt-ubuntu24.04-cuda13.2 --gpus all
## 构建 TensorRT-OSS
- 生成 Makefile 并构建
**示例:使用默认 cuda-13.2 的 Linux (x86-64) 构建**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DTRT_OUT_DIR=`pwd`/out
make -j$(nproc)
**示例:使用默认 cuda-13.2 的 Linux (aarch64) 构建**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DTRT_OUT_DIR=`pwd`/out -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64-native.toolchain
make -j$(nproc)
**示例:使用 cuda-13.2 在 Jetson Thor (aarch64) 上的原生构建**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DTRT_OUT_DIR=`pwd`/out -DTRT_PLATFORM_ID=aarch64
CC=/usr/bin/gcc make -j$(nproc)
**示例:使用 cuda-13.2 (JetPack) 的 Ubuntu 24.04 交叉编译 Jetson Thor (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64_cross.toolchain
make -j$(nproc)
**示例:使用 cuda-13.2 的 Ubuntu 24.04 交叉编译 DriveOS (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64_dos_cross.toolchain
make -j$(nproc)
**示例:使用 cuda-13.2 在 Windows (x86) 上的原生构建**
cd $TRT_OSSPATH
New-Item -ItemType Directory -Path build
cd build
cmake .. -DTRT_LIB_DIR="$env:TRT_LIBPATH" -DTRT_OUT_DIR="$pwd\\out"
msbuild TensorRT.sln /property:Configuration=Release -m:$env:NUMBER_OF_PROCESSORS
- 必需的 CMake 构建参数有:
- `TRT_LIB_DIR`:包含库的 TensorRT 安装目录的路径。
- `TRT_OUT_DIR`:生成的构建产物将被复制到的输出目录。
- 可选的 CMake 构建参数:
- `CMAKE_BUILD_TYPE`:指定生成的二进制文件是用于发布还是调试(包含调试符号)。值包括 [`Release`] | `Debug`。
- `CUDA_VERSION`:要目标定位的 CUDA 版本,例如 [`12.9.9`]。
- `CUDNN_VERSION`:要目标定位的 cuDNN 版本,例如 [`8.9`]。
- `PROTOBUF_VERSION`:要使用的 Protobuf 版本,例如 [`3.20.1`]。注意:更改此设置不会将 CMake 配置为使用系统版本的 Protobuf,而是会配置 CMake 下载并尝试构建该版本。
- `CMAKE_TOOLCHAIN_FILE`:用于交叉编译的工具链文件的路径。
- `BUILD_PARSERS`:指定是否应构建解析器,例如 [`ON`] | `OFF`。如果设置为 OFF,CMake 将尝试查找解析器库的预编译版本,以用于编译示例。首先在 `${TRT_LIB_DIR}` 中查找,然后在系统中查找。如果构建类型是 Debug,则在可用的情况下,它将优先使用库的调试版本而不是发布版本。
- `BUILD_PLUGINS`:指定是否应构建插件,例如 [`ON`] | `OFF`。如果设置为 OFF,CMake 将尝试查找插件库的预编译版本,以用于编译示例。首先在 `${TRT_LIB_DIR}` 中查找,然后在系统中查找。如果构建类型是 Debug,则在可用的情况下,它将优先使用库的调试版本而不是发布版本。
- `BUILD_SAMPLES`:指定是否应构建示例,例如 [`ON`] | `OFF`。
- `BUILD_SAFE_SAMPLES`:指定是否应构建安全示例,例如 [`ON`] | `OFF`。
- `TRT_SAFETY_INFERENCE_ONLY`:指定是否仅构建安全推理组件,例如 [`ON`] | `OFF`。如果设置为 ON,除了 `BUILD_SAFE_SAMPLES` 之外,所有其他组件都将被关闭。
- `GPU_ARCHS`:要定位的 GPU (SM) 架构。默认情况下,我们会为所有主要 SM 生成 CUDA 代码。可以在此处以带引号的空格分隔列表形式指定特定的 SM 版本,以减少编译时间和二进制文件大小。NVIDIA GPU 的计算能力表可以在[这里](https://developer.nvidia.com/cuda-gpus)找到。示例: - NVidia A100:`-DGPU_ARCHS="80"` - RTX 50 系列:`-DGPU_ARCHS="120"` - 多个 SM:`-DGPU_ARCHS="80 120"`
- `TRT_PLATFORM_ID`:裸机构建(不同于容器化的交叉编译)。目前支持的选项:`x86_64`(默认)。
- `TRT_BUILD_ENABLE_MULTIDEVICE`:启用多设备示例 (`sampleDistCollective`)。使用 `-DTRT_BUILD_ENABLE_MULTIDEVICE=ON` 来构建它;要求 [NCCL](https://developer.nvidia.com/nccl/nccl-download) >= v2.19, < v3.0。
## 构建 TensorRT DriveOS 示例
- 生成 Makefile 并构建
**示例:交叉编译 DOS7 Linux (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DBUILD_SAMPLES=ON -DBUILD_PLUGINS=OFF -DBUILD_PARSERS=OFF -DTRT_OUT_DIR=`pwd`/bin_dynamic_cross -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64_dos_cross.toolchain
make -j$(nproc)
**示例:交叉编译 DOS6.5 Linux (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DBUILD_SAMPLES=ON -DBUILD_PLUGINS=OFF -DBUILD_PARSERS=OFF -DTRT_OUT_DIR=`pwd`/bin_dynamic_cross -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64_dos_cross.toolchain -DCUDA_VERSION=11.4 -DGPU_ARCHS=87
make -j$(nproc)
**示例:针对 DOS6.5 和 DOS7 Linux (aarch64) 的原生构建**
cd $TRT_OSSPATH
mkdir -p build && cd build
cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DTRT_OUT_DIR=`pwd`/out -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64-native.toolchain -DBUILD_SAMPLES=ON -DBUILD_PLUGINS=OFF -DBUILD_PARSERS=OFF
make -j$(nproc)
**示例:交叉编译 DOS6.5 QNX (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
export CUDA_VERSION=11.4
export CUDA=cuda-$CUDA_VERSION
export CUDA_ROOT=/usr/local/cuda-safe-$CUDA_VERSION
export QNX_BASE=/drive/toolchains/qnx_toolchain # 设置为您的 QNX 工具链安装路径
export QNX_HOST=$QNX_BASE/host/linux/x86_64/
export QNX_TARGET=$QNX_BASE/target/qnx7/
export PATH=$PATH:$QNX_HOST/usr/bin
cmake .. -DBUILD_SAMPLES=ON -DBUILD_PLUGINS=OFF -DBUILD_PARSERS=OFF -DBUILD_SAFE_SAMPLES=OFF -DCMAKE_CUDA_COMPILER=$CUDA_ROOT/bin/nvcc -DTRT_OUT_DIR=`pwd`/bin_dynamic_cross -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_qnx.toolchain -DCUDA_VERSION=$CUDA_VERSION -DGPU_ARCHS=87
make -j$(nproc)
**示例:交叉编译 DOS6.5 QNX Safety (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
export CUDA_VERSION=11.4
export QNX_BASE=/drive/toolchains/qnx_toolchain # 设置为您的 QNX 工具链安装路径
export QNX_HOST=$QNX_BASE/host/linux/x86_64/
export QNX_TARGET=$QNX_BASE/target/qnx7/
export PATH=$PATH:$QNX_HOST/usr/bin
export CUDA=cuda-$CUDA_VERSION
export CUDA_ROOT=/usr/local/cuda-safe-$CUDA_VERSION
cmake .. -DBUILD_SAMPLES=OFF -DBUILD_SAFE_SAMPLES=ON -DBUILD_PLUGINS=OFF -DBUILD_PARSERS=OFF -DTRT_SAFETY_INFERENCE_ONLY=ON -DTRT_OUT_DIR=`pwd`/bin_dynamic_cross -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_qnx_safe.toolchain -DCUDA_VERSION=$CUDA_VERSION -DCMAKE_CUDA_COMPILER=$CUDA_ROOT/bin/nvcc -DGPU_ARCHS=87
make -j$(nproc)
**示例:交叉编译 DOS7 QNX (aarch64)**
cd $TRT_OSSPATH
mkdir -p build && cd build
export CUDA_VERSION=13.2
export CUDA=cuda-$CUDA_VERSION
export CUDA_ROOT=/usr/local/cuda-safe-$CUDA_VERSION
export QNX_BASE=/drive/toolchains/qnx_toolchain # 设置为您的 QNX 工具链安装路径
export QNX_HOST=$QNX_BASE/host/linux/x86_64/
export QNX_TARGET=$QNX_BASE/target/qnx/
export PATH=$PATH:$QNX_HOST/usr/bin
cmake .. -DBUILD_SAMPLES=ON -DBUILD_PLUGINS=OFF -DBUILD_PARSERS=OFF -DBUILD_SAFE_SAMPLES=OFF -DCMAKE_CUDA_COMPILER=$CUDA_ROOT/bin/nvcc -DTRT_OUT_DIR=`pwd`/bin_dynamic_cross -DTRT_LIB_DIR=$TRT_LIBPATH -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_qnx.toolchain -DCUDA_VERSION=$CUDA_VERSION -DGPU_ARCHS=110
make -j$(nproc)
# 参考
## TensorRT 资源
- [TensorRT 开发者主页](https://developer.nvidia.com/tensorrt)
- [TensorRT 快速入门指南](https://docs.nvidia.com/deeplearning/tensorrt/quick-start-guide/index.html)
- [TensorRT 开发者指南](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html)
- [TensorRT 示例支持指南](https://docs.nvidia.com/deeplearning/tensorrt/sample-support-guide/index.html)
- [TensorRT ONNX 工具](https://docs.nvidia.com/deeplearning/tensorrt/index.html#tools)
- [TensorRT 讨论论坛](https://devtalk.nvidia.com/default/board/304/tensorrt/)
- [TensorRT 发行说明](https://docs.nvidia.com/deeplearning/tensorrt/release-notes/index.html)
## 已知问题
- 请参阅 [TensorRT 发行说明](https://docs.nvidia.com/deeplearning/tensorrt/release-notes)
标签:AI推理, Apache 2.0, Apex, Bash脚本, C++, CNCF毕业项目, ONNX解析器, Python, TensorRT, Vectored Exception Handling, 人工智能, 图像识别, 强类型网络, 推理引擎, 数据擦除, 无后门, 机器学习, 模型优化, 模型转换, 模型量化, 深度学习推理, 深度学习部署, 用户模式Hook绕过, 神经网络, 自动驾驶, 计算机视觉, 请求拦截, 逆向工具, 高性能计算