TAO v5.5.0

TAO Converter with Retinanet

TAO 提供了 tao-converter 工具,以方便在 TensorRT 和/或 Deepstream 上部署 TAO 训练的模型。本节详细说明如何使用 tao-converter 生成 TensorRT 引擎。

对于具有基于 x86 的 CPU 和独立 GPU 的部署平台,tao-converter 分发在 TAO docker 容器中。因此,我们建议使用 docker 容器来生成引擎。但是,这要求用户遵守与 docker 容器分发的 TensorRT 相同的次要版本。TAO docker 容器包含 TensorRT 8.0 版本。

对于具有独立 GPU 的 x86 平台,默认的 TAO 软件包包含为 TensorRT 8.2.5.1 构建的 tao-converter,该版本使用 CUDA 11.4 和 CUDNN 8.2。但是,对于任何其他版本的 CUDA 和 TensorRT,请参考概述部分进行下载。下载 tao-converter 后,请按照以下说明生成 TensorRT 引擎。

  1. 在目标机器上解压缩 zip 文件。

  2. 使用以下命令安装 OpenSSL 软件包

    复制
    已复制!
                

    sudo apt-get install libssl-dev

  3. 导出以下环境变量

复制
已复制!
            

$ export TRT_LIB_PATH=”/usr/lib/x86_64-linux-gnu” $ export TRT_INC_PATH=”/usr/include/x86_64-linux-gnu”

  1. 使用以下示例命令运行 tao-converter 并生成引擎。

  2. 有关在 Jetson 上构建 TensorRT OSS 的说明,请参见上面的 TensorRT OSS on x86 部分或此 GitHub 仓库

注意

请务必遵循各个模型的导出模型部分中提到的输出节点名称。

对于 Jetson 平台,tao-converter 可在 NVIDIA 开发者专区下载。您可以选择您希望下载的版本,如概述部分所列。下载 tao-converter 后,请按照以下说明生成 TensorRT 引擎。

  1. 在目标机器上解压缩 zip 文件。

  2. 使用以下命令安装 OpenSSL 软件包

    复制
    已复制!
                

    sudo apt-get install libssl-dev

  3. 导出以下环境变量

复制
已复制!
            

$ export TRT_LIB_PATH=”/usr/lib/aarch64-linux-gnu” $ export TRT_INC_PATH=”/usr/include/aarch64-linux-gnu”

  1. 对于 Jetson 设备,TensorRT 预装在 Jetpack 中。如果您使用的是较旧的 JetPack,请升级到 JetPack-5.0DP。

  2. 有关在 Jetson 上构建 TensorRT OSS 的说明,请参见上面的 TensorRT OSS on Jetson (ARM64) 部分或此 GitHub 仓库

  3. 使用以下示例命令运行 tao-converter 并生成引擎。

注意

请务必遵循各个模型的 导出模型 部分中提到的输出节点名称。

复制
已复制!
            

tao-converter [-h] -k <encryption_key> -d <input_dimensions> -o <comma separated output nodes> [-c <path to calibration cache file>] [-e <path to output engine>] [-b <calibration batch size>] [-m <maximum batch size of the TRT engine>] [-t <engine datatype>] [-w <maximum workspace size of the TRT Engine>] [-i <input dimension ordering>] [-p <optimization_profiles>] [-s] [-u <DLA_core>] input_file

必需参数

  • input_file:使用 export 导出的 .etlt 模型的路径。

  • -k:训练时用于编码 .tlt 模型的密钥

  • -d:逗号分隔的输入维度列表,应与用于 tao model retinanet export 的维度匹配

  • -o:逗号分隔的输出 blob 名称列表,应与用于 tao model retinanet export 的输出配置匹配。对于 RetinaNet,请将此参数设置为 NMS

可选参数

  • -e:保存引擎的路径。默认路径为 ./saved.engine

  • -t:所需的引擎数据类型,如果在 INT8 模式下,则生成校准缓存。默认值为 fp32。选项为 fp32fp16int8

  • -w:TensorRT 引擎的最大工作区大小。默认值为 1073741824(1<<30)

  • -i:输入维度顺序;所有其他 TAO 命令都使用 NCHW。选项为 nchwnhwcnc。对于 RetinaNet,您可以省略此参数,因为默认值为 nchw

  • -p:用于具有动态形状的 .etlt 模型的优化配置文件。参数格式是以逗号分隔的优化配置文件形状列表,格式为 <input_name>,<min_shape>,<opt_shape>,<max_shape>,其中每个形状的格式为 <n>x<c>x<h>x<w>。如果模型有多个输入张量,则可以多次指定此参数。这仅对 TAO v3.0 中引入的新模型有用。

  • -s:一个布尔值,用于在构建 TensorRT 引擎时应用 TensorRT 严格的类型约束。

  • -u:在 Jetson 设备上构建 TensorRT 引擎时,指定 DLA 核心索引。

INT8 模式参数

  • -c:校准缓存文件的路径,仅在 INT8 模式下使用。默认值为 ./cal.bin

  • -b:在导出步骤中用于 INT8 校准缓存生成的批次大小。默认值为 8

  • -m:TensorRT 引擎的最大批次大小。默认值为 16。如果遇到内存不足的问题,请相应地减小批次大小。此参数仅对使用动态形状生成的 .etlt 模型有用。

示例输出日志

以下是导出 RetinaNet 模型的示例日志。

复制
已复制!
            

tao-converter -k $KEY \ -d 3,384,1248 \ -o NMS \ -e /export/trt.fp16.engine \ -t fp16 \ -i nchw \ -m 1 \ /ws/retinanet_resnet18_epoch_100.etlt .. [INFO] Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output. [INFO] Detected 1 inputs and 2 output network tensors.

上一个 TAO Converter with Multitask Classification
下一个 TAO Converter with SSD
© 版权所有 2024, NVIDIA。 上次更新时间:2024 年 10 月 15 日。