!许可证](https://opensource.org/licenses/Apache-2.0)
TensorRT 开源软件
此仓库包含了NVIDIA TensorRT的开源软件(OSS)组件。它包括TensorRT插件和ONNX解析器的源代码,以及展示TensorRT平台使用和功能的示例应用程序。这些开源软件组件是TensorRT一般可用性(GA)发布版本的子集,并带有一些扩展和错误修复。
- 要贡献代码到TensorRT-OSS,请参阅我们的贡献指南和编码规范。
- 有关TensorRT-OSS发布的新增内容和更新的摘要,请参阅更新日志。
- 对于业务咨询,请联系researchinquiries@nvidia.com。
- 对于媒体和其他咨询,请联系Hector Marinez:hmarinez@nvidia.com。
需要企业支持?NVIDIA全球支持可通过NVIDIA AI 企业软件套件提供TensorRT支持。访问NVIDIA LaunchPad以免费体验在NVIDIA基础设施上托管的TensorRT实践实验室。
加入TensorRT和Triton社区,随时了解最新产品更新、错误修复、内容、最佳实践等信息。
预构建的TensorRT Python包
我们提供了TensorRT Python包以便于安装。
安装方式:
pip install tensorrt
您可以跳过构建部分,直接使用Python享受TensorRT。
构建
先决条件
要构建TensorRT-OSS组件,您首先需要以下软件包。
TensorRT GA 构建
- TensorRT v10.3.0.26
- 可通过以下直接下载链接获取
系统软件包
- CUDA
- 推荐版本:
- cuda-12.5.0 + cuDNN-8.9
- cuda-11.8.0 + cuDNN-8.9
- GNU make >= v4.1
- cmake >= v3.13
- python >= v3.8, <= v3.10.x
- pip >= v19.0
- 必要的工具
可选软件包
- 容器化构建
- Docker >= 19.03
- NVIDIA 容器工具包
- 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开发者专区下载并解压TensorRT GA构建,直接链接如下:
- CUDA 11.8, Linux x86_64 的 TensorRT 10.3.0.26
- CUDA 12.5, Linux x86_64 的 TensorRT 10.3.0.26
- CUDA 11.8, Windows x86_64 的 TensorRT 10.3.0.26
- CUDA 12.5, Windows x86_64 的 TensorRT 10.3.0.26
示例:x86-64 上的 Ubuntu 20.04 + cuda-12.5
cd ~/Downloads tar -xvzf TensorRT-10.3.0.26.Linux.x86_64-gnu.cuda-12.5.tar.gz export TRT_LIBPATH=`pwd`/TensorRT-10.3.0.26
示例:x86-64 上的 Windows + cuda-12.5
Expand-Archive -Path TensorRT-10.3.0.26.Windows.win10.cuda-12.5.zip $env:TRT_LIBPATH="$pwd\TensorRT-10.3.0.26\lib"
设置构建环境
对于Linux平台,我们建议您按照以下说明生成一个用于构建TensorRT OSS的Docker容器。对于本地构建,请安装先决条件中的系统软件包。
-
生成TensorRT-OSS构建容器。
TensorRT-OSS构建容器可以使用提供的Dockerfiles和构建脚本生成。构建容器已经配置好,可直接用于构建TensorRT OSS。
示例:x86-64 上的 Ubuntu 20.04 + cuda-12.5(默认)
./docker/build.sh --file docker/ubuntu-20.04.Dockerfile --tag tensorrt-ubuntu20.04-cuda12.5
示例:x86-64 上的 Rockylinux8 + cuda-12.5
./docker/build.sh --file docker/rockylinux8.Dockerfile --tag tensorrt-rockylinux8-cuda12.5
示例:Jetson(aarch64)交叉编译,Ubuntu 22.04 + cuda-12.5(JetPack SDK)
./docker/build.sh --file docker/ubuntu-cross-aarch64.Dockerfile --tag tensorrt-jetpack-cuda12.5
**示例:aarch64 上的 Ubuntu 22.
-
启动 TensorRT-OSS 构建容器。
示例:Ubuntu 20.04 构建容器
./docker/launch.sh --tag tensorrt-ubuntu20.04-cuda12.5 --gpus all
注意:
1. 使用与步骤1中生成的构建容器相对应的--tag
。
2. 需要 NVIDIA Container Toolkit 才能在构建容器中访问 GPU(运行 TensorRT 应用程序)。
3. Ubuntu 构建容器的sudo
密码是 'nvidia'。
4. 使用--jupyter <port>
指定端口号以启动 Jupyter notebooks。
构建 TensorRT-OSS
-
生成 Makefile 并构建。
示例:使用默认 cuda-12.5 构建的 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-12.5 构建的 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)
示例:在 Jetson (aarch64) 上使用 cuda-12.5 的原生构建
cd $TRT_OSSPATH mkdir -p build && cd build cmake .. -DTRT_LIB_DIR=$TRT_LIBPATH -DTRT_OUT_DIR=`pwd`/out -DTRT_PLATFORM_ID=aarch64 -DCUDA_VERSION=12.5 CC=/usr/bin/gcc make -j$(nproc)
注意:protobuf 的原生 aarch64 构建必须通过 CC= 显式指定 C 编译器。
示例:在 Ubuntu 22.04 上使用 cuda-12.5 (JetPack) 交叉编译 Jetson (aarch64)
cd $TRT_OSSPATH mkdir -p build && cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=$TRT_OSSPATH/cmake/toolchains/cmake_aarch64.toolchain -DCUDA_VERSION=12.5 -DCUDNN_LIB=/pdk_files/cudnn/usr/lib/aarch64-linux-gnu/libcudnn.so -DCUBLAS_LIB=/usr/local/cuda-12.5/targets/aarch64-linux/lib/stubs/libcublas.so -DCUBLASLT_LIB=/usr/local/cuda-12.5/targets/aarch64-linux/lib/stubs/libcublasLt.so -DTRT_LIB_DIR=/pdk_files/tensorrt/lib make -j$(nproc)
示例:在 Windows (x86) 上使用 cuda-12.5 的原生构建
cd $TRT_OSSPATH mkdir -p build cd -p build cmake .. -DTRT_LIB_DIR="$env:TRT_LIBPATH" -DCUDNN_ROOT_DIR="$env:CUDNN_PATH" -DTRT_OUT_DIR="$pwd\\out" msbuild TensorRT.sln /property:Configuration=Release -m:$env:NUMBER_OF_PROCESSORS
注意:
1. CMake 使用的默认 CUDA 版本是 12.4.0。要覆盖此版本,例如改为 11.8,可以在 cmake 命令后附加-DCUDA_VERSION=11.8
。 -
必需的 CMake 构建参数有:
TRT_LIB_DIR
:包含库文件的 TensorRT 安装目录的路径。TRT_OUT_DIR
:生成的构建工件将被复制到的输出目录。
-
可选的 CMake 构建参数:
CMAKE_BUILD_TYPE
:指定生成的二进制文件是用于发布还是调试(包含调试符号)。值包括 [Release
] |Debug
。CUDA_VERSION
:要针对的 CUDA 版本,例如 [11.7.1
]。CUDNN_VERSION
:要针对的 cuDNN 版本,例如 [8.6
]。PROTOBUF_VERSION
:要使用的 Protobuf 版本,例如 [3.0.0
]。注意:更改此参数不会配置 CMake 使用系统版本的 Protobuf,而是配置 CMake 下载并尝试构建该版本。CMAKE_TOOLCHAIN_FILE
:用于交叉编译的工具链文件的路径。BUILD_PARSERS
:指定是否构建解析器,例如 [ON
] |OFF
。如果关闭,CMake 将尝试在编译示例时找到解析器库的预编译版本。首先在${TRT_LIB_DIR}
中,然后在系统中。如果构建类型是 Debug,则如果可用,它将优先选择调试版本的库而非发布版本。BUILD_PLUGINS
:指定是否构建插件,例如 [ON
] |OFF
。如果关闭,CMake 将尝试在编译示例时找到插件库的预编译版本。首先在${TRT_LIB_DIR}
中,然后在系统中。如果构建类型是 Debug,则如果可用,它将优先选择调试版本的库而非发布版本。BUILD_SAMPLES
:指定是否构建示例,例如 [ON
] |OFF
。GPU_ARCHS
:要针对的 GPU (SM) 架构。默认情况下,我们为所有主要的 SM 生成 CUDA 代码。可以在此处指定特定的 SM 版本作为以引号括起来的空格分隔列表,以减少编译时间和二进制文件大小。NVIDIA GPU 的计算能力表格可以在这里找到。示例:- NVidia A100:
-DGPU_ARCHS="80"
- Tesla T4, GeForce RTX 2080:
-DGPU_ARCHS="75"
- Titan V, Tesla V100:
-DGPU_ARCHS="70"
- 多个 SM:
-DGPU_ARCHS="80 75"
- NVidia A100:
TRT_PLATFORM_ID
:裸机构建(与容器化交叉编译不同)。目前支持的选项:x86_64
(默认)。
参考资料
TensorRT 资源
- TensorRT 开发者主页
- TensorRT 快速入门指南
- TensorRT 开发者指南
- TensorRT 示例支持指南
- TensorRT ONNX 工具
- TensorRT 讨论论坛
- TensorRT 发布说明
已知问题
- 请参考 TensorRT 发布说明