19 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
:mega:📣 公告 📣📣
TensorRT 11.X 现已发布,带来强大的新功能,旨在加速您的 AI 推理工作流。随着此次重大版本升级,TensorRT 的 API 已得到精简,并移除了 10.X 中的部分遗留功能。
以下提供下列功能的迁移指南:
- 弱类型网络(Weakly-typed networks)及相关 API 已被移除,由 强类型网络(Strongly Typed Networks).
- 隐式量化(Implicit quantization)及相关 API 已被移除,由 显式量化(Explicit Quantization)
- IPluginV2 及相关 API 已被移除,由 IPluginV3
- TREX 工具已被移除,由 Nsight Deep Learning Designer
- 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)的演练,并查看示例和工具使用技巧,请参阅 导入工作流指南。
- 如需查看各导入路径的逐模型支持矩阵(LLM、encoder-NLP、视觉、音频、diffusion、多模态),请参阅 支持的模型。
- 如需向 TensorRT-OSS 贡献代码,请参阅我们的 贡献指南 和 编码规范。
- 如需了解 TensorRT-OSS 版本中新增加和更新的内容摘要,请参阅 更新日志。
- 商务咨询请联系 researchinquiries@nvidia.com
- 媒体及其他咨询请联系 Hector Marinez:hmarinez@nvidia.com
需要企业级支持?NVIDIA 全球支持可通过 NVIDIA AI Enterprise 软件套件. 为 TensorRT 提供服务。访问 NVIDIA LaunchPad 可免费使用在 NVIDIA 基础设施上托管的一组 TensorRT 动手实验。
加入 TensorRT 与 Triton 社区,了解最新产品更新、bug 修复、内容、最佳实践等。
智能体编码技能(Agentic Coding Skills)
与 TensorRT 使用和基准测试相关的多种技能可在此处获取。安装方法请参阅您首选编码智能体的说明。
预构建 TensorRT Python 软件包
我们提供 TensorRT Python 软件包,便于安装。
安装方法:
pip install tensorrt
您可以跳过 Build(构建) 部分,直接通过 Python 使用 TensorRT。
构建
前置条件
要构建 TensorRT-OSS 组件,您首先需要以下软件包。
TensorRT GA 构建
- TensorRT v11.1.0.106
- 可通过下方列出的直接下载链接获取
系统软件包
- CUDA
- 推荐版本:
- cuda-13.3.0
- cuda-12.9.0
- CUDNN(可选)
- cuDNN 8.9
- GNU make >= v4.1
- cmake >= v3.31
- python >= v3.10, <= v3.14.x
- pip >= v19.0
- 基础工具
可选软件包
-
NCCL >= v2.19, < v3.0 — 仅在构建多设备支持(
-DTRT_BUILD_ENABLE_MULTIDEVICE=ON)的sampleDistCollective示例时需要。 -
容器化构建
- Docker >= 19.03
- NVIDIA Container Toolkit
-
PyPI 软件包(用于演示应用/测试)
- onnx
- onnxruntime
- tensorflow-gpu >= 2.5.1
- Pillow >= 9.0.1
- pycuda < 2021.1
- numpy
- pytest
-
代码格式化工具(供贡献者使用)
注意:onnx-tensorrt, cub, 和 protobuf 软件包会随 TensorRT OSS 一起下载,无需单独安装。
下载 TensorRT 构建
-
下载 TensorRT OSS
git clone -b main https://github.com/nvidia/TensorRT TensorRT cd TensorRT git submodule update --init --recursive -
(可选 - 若不使用 TensorRT 容器)指定 TensorRT GA 发布版构建路径
若使用 TensorRT OSS 构建容器,TensorRT 库已预装在
/usr/lib/x86_64-linux-gnu下,可跳过此步骤。否则请从 NVIDIA Developer Zone 通过下方直接链接下载并解压 TensorRT GA 构建:
- 适用于 CUDA 13.3、Linux x86_64 的 TensorRT 11.1.0.106
- 适用于 CUDA 12.9、Linux x86_64 的 TensorRT 11.1.0.106
- 适用于 CUDA 13.3、Windows x86_64 的 TensorRT 11.1.0.106
- 适用于 CUDA 12.9、Windows x86_64 的 TensorRT 11.1.0.106
示例:Ubuntu 22.04 x86-64,cuda-13.3
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
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 容器。若进行原生构建,请安装先决条件中的 System Packages(系统软件包)。
-
生成 TensorRT-OSS 构建容器。
示例:x86-64 上的 Ubuntu 24.04,使用 cuda-13.3(默认)
./docker/build.sh --file docker/ubuntu-24.04.Dockerfile --tag tensorrt-ubuntu24.04-cuda13.3示例:x86-64 上的 Rockylinux8,使用 cuda-13.3
./docker/build.sh --file docker/rockylinux8.Dockerfile --tag tensorrt-rockylinux8-cuda13.3示例:Ubuntu 24.04 交叉编译 Jetson(aarch64),使用 cuda-13.3(JetPack SDK)
./docker/build.sh --file docker/ubuntu-cross-aarch64.Dockerfile --tag tensorrt-jetpack-cuda13.3示例:aarch64 上的 Ubuntu 24.04,使用 cuda-13.3
./docker/build.sh --file docker/ubuntu-24.04-aarch64.Dockerfile --tag tensorrt-aarch64-ubuntu24.04-cuda13.3 -
启动 TensorRT-OSS 构建容器。
示例:Ubuntu 24.04 构建容器
./docker/launch.sh --tag tensorrt-ubuntu24.04-cuda13.3 --gpus all注意:
1. 使用与步骤 1 中生成的构建容器对应的--tag。
2. 在构建容器内访问 GPU(运行 TensorRT 应用程序)需要 NVIDIA Container Toolkit。
3. Ubuntu 构建容器的sudo密码为 'nvidia'。
4. 使用--jupyter <port>指定端口号以启动 Jupyter notebooks。
5. 需要对此文件夹具有写入权限,因为该文件夹将以 uid:gid 1000:1000 挂载到 Docker 容器内。
构建 TensorRT-OSS
-
生成 Makefile 并构建
示例:Linux(x86-64)默认 cuda-13.3 构建
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 构建
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
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)
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
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
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] |DebugCUDA_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 >= v2.19, < v3.0。TRT_BUILD_TESTING:为 samples 构建 gTests。需要 gtest(若可用);否则在配置时获取 googletest。
构建 TensorRT DriveOS Samples
-
生成 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 -DCMAKE_CUDA_ARCHITECTURES=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 # 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=<version>。
示例:为 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 -DCMAKE_CUDA_ARCHITECTURES=87
make -j$(nproc)
注意:将
QNX_BASE设置为你的 QNX 工具链安装路径。 若你的 CUDA 版本与示例不同,请设置CUDA_VERSION(在示例中多处使用时),或在 cmake 命令中添加-DCUDA_VERSION=<version>。
示例:为 DOS7 QNX(aarch64)交叉编译
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=<version>。
参考资料
TensorRT 资源
- TensorRT 开发者主页
- TensorRT 快速入门指南
- TensorRT 开发者指南
- TensorRT 示例支持指南
- TensorRT ONNX 工具
- TensorRT 讨论论坛
- TensorRT 发布说明
已知问题
- 请参阅 TensorRT 发布说明