> [!NOTE] > 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。 > [English](./README.en.md) · [原始项目](https://github.com/NVIDIA/TensorRT) · [上游 README](https://github.com/NVIDIA/TensorRT/blob/HEAD/README.md) > 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Documentation](https://img.shields.io/badge/TensorRT-documentation-brightgreen.svg)](https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html) [![Roadmap](https://img.shields.io/badge/Roadmap-Q3_2026-brightgreen.svg)](documents/tensorrt_roadmap_2026q3.pdf) # :mega::mega: 公告 :mega::mega: TensorRT 11.X 现已发布,带来强大的新功能,旨在加速您的 AI 推理工作流。随着此次重大版本升级,TensorRT 的 API 已得到精简,并移除了 10.X 中的部分遗留功能。 以下提供下列功能的迁移指南: - 弱类型网络(Weakly-typed networks)及相关 API 已被移除,由 [强类型网络(Strongly Typed Networks)](https://docs.nvidia.com/deeplearning/tensorrt/latest/inference-library/advanced.html#strongly-typed-networks). - 隐式量化(Implicit quantization)及相关 API 已被移除,由 [显式量化(Explicit Quantization)](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) - 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)版本的一个子集,并包含一些扩展和 bug 修复。 - 如需分步了解 TensorRT 导入路径(ONNX、Torch-TensorRT、HuggingFace/Optimum、Network Definition API)的演练,并查看示例和工具使用技巧,请参阅 [导入工作流指南](documents/import_workflows.md)。 - 如需查看各导入路径的逐模型支持矩阵(LLM、encoder-NLP、视觉、音频、diffusion、多模态),请参阅 [支持的模型](documents/supported_models.md)。 - 如需向 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 全球支持可通过 [NVIDIA AI Enterprise 软件套件](https://www.nvidia.com/en-us/data-center/products/ai-enterprise/). 为 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/),了解最新产品更新、bug 修复、内容、最佳实践等。 # 智能体编码技能(Agentic Coding Skills) 与 TensorRT 使用和基准测试相关的多种技能可在[此处](.agents/skills)获取。安装方法请参阅您首选编码智能体的说明。 # 预构建 TensorRT Python 软件包 我们提供 TensorRT Python 软件包,便于安装。 \ 安装方法: ```bash pip install tensorrt ``` 您可以跳过 **Build(构建)** 部分,直接通过 Python 使用 TensorRT。 # 构建 ## 前置条件 要构建 TensorRT-OSS 组件,您首先需要以下软件包。 **TensorRT GA 构建** - TensorRT v11.1.0.106 - 可通过下方列出的直接下载链接获取 **系统软件包** - [CUDA](https://developer.nvidia.com/cuda-toolkit) - 推荐版本: - cuda-13.3.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.14.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) > 注意:[onnx-tensorrt](https://github.com/onnx/onnx-tensorrt), [cub](http://nvlabs.github.io/cub/), 和 [protobuf](https://github.com/protocolbuffers/protobuf.git) 软件包会随 TensorRT OSS 一起下载,无需单独安装。 ## 下载 TensorRT 构建 1. #### 下载 TensorRT OSS ```bash 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.3、Linux x86_64 的 TensorRT 11.1.0.106](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/11.1.0/tars/TensorRT-Enterprise-11.1.0.106-Linux-x86_64-cuda-13.3-Release-external.tar.zst) - [适用于 CUDA 12.9、Linux x86_64 的 TensorRT 11.1.0.106](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/11.1.0/tars/TensorRT-Enterprise-11.1.0.106-Linux-x86_64-cuda-12.9-Release-external.tar.zst) - [适用于 CUDA 13.3、Windows x86_64 的 TensorRT 11.1.0.106](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/11.1.0/zip/TensorRT-Enterprise-11.1.0.106-Windows-amd64-cuda-13.3-Release-external.zip) - [适用于 CUDA 12.9、Windows x86_64 的 TensorRT 11.1.0.106](https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/11.1.0/zip/TensorRT-Enterprise-11.1.0.106-Windows-amd64-cuda-12.9-Release-external.zip) **示例:Ubuntu 22.04 x86-64,cuda-13.3** ```bash cd ~/Downloads tar --zstd -xvf TensorRT-Enterprise-11.1.0.106-Linux-x86_64-cuda-13.3-Release-external.tar.zst export TRT_LIBPATH=`pwd`/TensorRT-11.1.0.106/lib ``` **示例:Windows x86-64,cuda-12.9** ```powershell Expand-Archive -Path TensorRT-Enterprise-11.1.0.106-Windows-amd64-cuda-12.9-Release-external.zip $env:TRT_LIBPATH="$pwd\TensorRT-11.1.0.106\lib" ``` ## 配置构建环境 对于 Linux 平台,我们建议按照下文所述生成用于构建 TensorRT OSS 的 Docker 容器。若进行原生构建,请安装[先决条件](#prerequisites)中的 _System Packages_(系统软件包)。 1. #### 生成 TensorRT-OSS 构建容器。 **示例:x86-64 上的 Ubuntu 24.04,使用 cuda-13.3(默认)** ```bash ./docker/build.sh --file docker/ubuntu-24.04.Dockerfile --tag tensorrt-ubuntu24.04-cuda13.3 ``` **示例:x86-64 上的 Rockylinux8,使用 cuda-13.3** ```bash ./docker/build.sh --file docker/rockylinux8.Dockerfile --tag tensorrt-rockylinux8-cuda13.3 ``` **示例:Ubuntu 24.04 交叉编译 Jetson(aarch64),使用 cuda-13.3(JetPack SDK)** ```bash ./docker/build.sh --file docker/ubuntu-cross-aarch64.Dockerfile --tag tensorrt-jetpack-cuda13.3 ``` **示例:aarch64 上的 Ubuntu 24.04,使用 cuda-13.3** ```bash ./docker/build.sh --file docker/ubuntu-24.04-aarch64.Dockerfile --tag tensorrt-aarch64-ubuntu24.04-cuda13.3 ``` 2. #### 启动 TensorRT-OSS 构建容器。 **示例:Ubuntu 24.04 构建容器** ```bash ./docker/launch.sh --tag tensorrt-ubuntu24.04-cuda13.3 --gpus all ``` > 注意: >
1. 使用与步骤 1 中生成的构建容器对应的 `--tag`。 >
2. 在构建容器内访问 GPU(运行 TensorRT 应用程序)需要 [NVIDIA Container Toolkit](#prerequisites)。 >
3. Ubuntu 构建容器的 `sudo` 密码为 'nvidia'。 >
4. 使用 `--jupyter ` 指定端口号以启动 Jupyter notebooks。 >
5. 需要对此文件夹具有写入权限,因为该文件夹将以 uid:gid 1000:1000 挂载到 Docker 容器内。 ## 构建 TensorRT-OSS - 生成 Makefile 并构建 **示例:Linux(x86-64)默认 cuda-13.3 构建** ```bash cd $TRT_OSSPATH mkdir -p build && cd build cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DTRT_OUT_DIR=`pwd`/out make -j$(nproc) ``` **示例:Linux(aarch64)默认 cuda-13.3 构建** ```bash 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) ``` **示例:Jetson Thor(aarch64)原生构建,使用 cuda-13.3** ```bash 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) ``` > 注意:对于 protobuf 的原生 aarch64 构建,必须通过 CC= 显式指定 C 编译器。 **示例:Ubuntu 24.04 交叉编译 Jetson Thor(aarch64),使用 cuda-13.3(JetPack)** ```bash 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) ``` **示例:Ubuntu 24.04 交叉编译 DriveOS(aarch64),使用 cuda-13.3** ```bash 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) ``` **示例:Windows(x86)原生构建,使用 cuda-13.3** ```bash 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 默认使用的 CUDA 版本为 13.3。若要覆盖此设置(例如改为 12.9),请在 cmake 命令后追加 `-DCUDA_VERSION=12.9`。 - 必需的 CMake 构建参数: - `TRT_LIB_DIR`:包含库的 TensorRT 安装目录路径。 - `TRT_OUT_DIR`:生成的构建产物将被复制到的输出目录。 - 可选的 CMake 构建参数: - `CMAKE_BUILD_TYPE`:指定生成的二进制文件用于 release 还是 debug(包含调试符号)。取值包括 [`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`:指定是否构建 parsers,例如 [`ON`] | `OFF`。若设为 OFF,CMake 将尝试查找预编译的 parser 库以用于编译 samples。首先在 `${TRT_LIB_DIR}` 中查找,然后在系统中查找。若构建类型为 Debug,则在可用时优先使用库的 debug 构建版本,而非 release 版本。 - `BUILD_PLUGINS`:指定是否构建 plugins,例如 [`ON`] | `OFF`。若设为 OFF,CMake 将尝试查找预编译的 plugin 库以用于编译 samples。首先在 `${TRT_LIB_DIR}` 中查找,然后在系统中查找。若构建类型为 Debug,则在可用时优先使用库的 debug 构建版本,而非 release 版本。 - `BUILD_SAMPLES`:指定是否构建 samples,例如 [`ON`] | `OFF`。 - `BUILD_SAFE_SAMPLES`:指定是否构建 safety samples,例如 [`ON`] | `OFF`。 - `TRT_SAFETY_INFERENCE_ONLY`:指定是否仅构建 safety inference 组件,例如 [`ON`] | `OFF`。若设为 ON,除 `BUILD_SAFE_SAMPLES` 外,所有其他组件都将设为 OFF。 - `TRT_PLATFORM_ID`:裸机构建(与容器化交叉编译不同)。当前支持的选项:`x86_64`(默认)。 - `TRT_BUILD_ENABLE_MULTIDEVICE`:启用多设备 sample(`sampleDistCollective`)。使用 `-DTRT_BUILD_ENABLE_MULTIDEVICE=ON` 进行构建;需要 [NCCL](https://developer.nvidia.com/nccl/nccl-download) >= v2.19, < v3.0。 - `TRT_BUILD_TESTING` :为 samples 构建 gTests。需要 [gtest](https://github.com/google/googletest)(若可用);否则在配置时获取 googletest。 ## 构建 TensorRT DriveOS Samples - 生成 Makefile 并构建 **示例:交叉编译 DOS7 Linux(aarch64)** ```bash 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)** ```bash 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 -DCMAKE_CUDA_ARCHITECTURES=87 make -j$(nproc) ``` **示例:DOS6.5 和 DOS7 Linux(aarch64)原生构建** ```bash 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)** ```bash 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 # Set to your QNX toolchain installation path 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 -DCMAKE_CUDA_ARCHITECTURES=87 make -j$(nproc) ``` > 注意:将 `QNX_BASE` 设置为你的 QNX 工具链安装路径。 > 若你的 CUDA 版本与示例不同,请设置 `CUDA_VERSION`(在示例中多处使用时),或在 cmake 命令中添加 `-DCUDA_VERSION=`。 **示例:为 DOS6.5 QNX Safety(aarch64)交叉编译** ```bash 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 -DCMAKE_CUDA_ARCHITECTURES=87 make -j$(nproc) ``` > 注意:将 `QNX_BASE` 设置为你的 QNX 工具链安装路径。 > 若你的 CUDA 版本与示例不同,请设置 `CUDA_VERSION`(在示例中多处使用时),或在 cmake 命令中添加 `-DCUDA_VERSION=`。 **示例:为 DOS7 QNX(aarch64)交叉编译** ```bash cd $TRT_OSSPATH mkdir -p build && cd build export CUDA_VERSION=13.3 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 -DCMAKE_CUDA_ARCHITECTURES=110 make -j$(nproc) ``` > 注意:将 `QNX_BASE` 设置为你的 QNX 工具链安装路径。 > 若你的 CUDA 版本与示例不同,请设置 `CUDA_VERSION`(在示例中多处使用时),或在 cmake 命令中添加 `-DCUDA_VERSION=`。 # 参考资料 ## 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)