使用 TensorRT 进行优化和性能分析
NVIDIA TensorRT SDK 促进了机器学习模型的高性能推理。从 TAO 5.0.0 版本开始,通过 tao model <model_name> export
端点导出的模型现在可以使用 trtexec
工具直接使用 TensorRT 进行优化和性能分析,trtexec
工具是一个命令行包装器,可帮助您快速利用 TensorRT 和原型模型,而无需编写自己的推理应用程序。它有 3 个主要用途
在随机或用户提供的输入数据上对网络进行基准测试(性能分析)
从模型生成序列化的 TensorRT 引擎。在 TAO 的情况下,模型采用 ONNX 或 UFF 格式。
从 TensorRT 构建器推广序列化的定时缓存
trtexec
有几个命令行标志,可帮助自定义模型的输入、输出和 TensorRT 构建配置,包括 network precision
、layer-wise precision
和 number of iterations`
以运行性能分析等。
以下是最常用的 CLI 参数
--onnx=<model>`
:指定输入 ONNX 模型。--uff=<model>`
:指定输入 UFF 模型。--output=<tensor>`
:指定输出张量名称。仅当输入模型为 UFF 格式时才需要。--maxBatch=<BS>`
:指定构建引擎的最大批次大小。仅当输入模型为 UFF 或 Caffe 格式时才需要。如果输入模型为 ONNX 格式,请使用 –minShapes、–optShapes 和 –maxShapes 标志来控制输入形状的范围,包括批次大小。
--minShapes=<shapes>
:输入张量的最小形状。此输入格式为“<input_node_name>:NxCxHxW”,其中 input_node_name是模型的输入节点名称,N、C、H 和 W 是张量的输入批次大小、输入通道、输入高度和输入宽度。对于具有多个输入节点的模型,可以使用逗号分隔。仅当模型为 ONNX 格式时才需要。
--optShapes=<shapes>
:输入张量的最佳形状。此输入格式为“<input_node_name>:NxCxHxW”,其中 input_node_name是模型的输入节点名称,N、C、H 和 W 是张量的输入批次大小、输入通道、输入高度和输入宽度。对于具有多个输入节点的模型,可以使用逗号分隔。仅当模型为 ONNX 格式时才需要。
--maxShapes=<shapes>
:输入张量的最大形状。此输入格式为“<input_node_name>:NxCxHxW”,其中 input_node_name是模型的输入节点名称,N、C、H 和 W 是张量的输入批次大小、输入通道、输入高度和输入宽度。对于具有多个输入节点的模型,可以使用逗号分隔。仅当模型为 ONNX 格式时才需要。
--saveEngine=<file>
:指定保存引擎的路径。--fp16, --int8, --noTF32, and --best
:指定网络级精度。--timingCacheFile=<file>
:指定要加载和保存到的定时缓存。--verbose
:打开详细日志记录。--skipInference
:构建并保存引擎,而不运行推理。-–useDLACore=N
:对支持 DLA 的层使用指定的 DLA 核心。-–allowGPUFallback
:允许 DLA 上不支持的层在 GPU 上运行。--loadEngine=<file>
:从序列化的计划文件加载引擎,而不是从输入 ONNX、UFF 或 Caffe 模型构建引擎。--batch=<N>
:指定运行推理的批次大小。仅当输入模型为 UFF 或 Caffe 格式时才需要。如果输入模型为 ONNX 格式或引擎是使用显式批次维度构建的,请改用 –shapes。
--shapes=<shapes>
:指定运行推理的输入形状。--calib=<file>
:读取 INT8 校准缓存文件
trtexec
端点作为 TAO Deploy 容器和 tao deploy`
模式的一部分提供。
对于 x86 设备已弃用的 TAO Converter,仍然是部署到 Jetson 设备所必需的。TAO Converter 作为单独的二进制文件分发,适用于 x86 和 Jetson 平台。tao-converter 二进制文件作为 NGC 资源提供。
按模型划分的 TRTEXEC 说明
- TRTEXEC 与 ActionRecognitionNet
- TRTEXEC 与 BodyPoseNet
- TRTEXEC 与 CenterPose
- TRTEXEC 与分类 TF1/TF2/PyT
- TRTEXEC 与 Deformable-DETR
- TRTEXEC 与 DetectNet-v2
- TRTEXEC 与 DINO
- TRTEXEC 与 DSSD
- TRTEXEC 与 EfficientDet TF1/TF2
- TRTEXEC 与面部地标估计
- TRTEXEC 与 Faster RCNN
- TRTEXEC 与 Grounding DINO
- TRTEXEC 与 LPRNet
- TRTEXEC 与度量学习识别
- TRTEXEC 与 Mask RCNN
- TRTEXEC 与多任务分类
- TRTEXEC 与 OCDNet
- TRTEXEC 与 OCRNet
- TRTEXEC 与 PointPillars
- TRTEXEC 与 PoseClassificationNet
- TRTEXEC 与 ReIdentificationNet
- TRTEXEC 与 ReIdentificationNet Transformer
- TRTEXEC 与 RetinaNet
- TRTEXEC 与 Segformer
- TRTEXEC 与 SiameseOI
- TRTEXEC 与 SSD
- TRTEXEC 与 UNet
- TRTEXEC 与 YOLO_v3
- TRTEXEC 与 YOLO_v4
- TRTEXEC 与 YOLO_v4_tiny
- TRTEXEC 与 VisualChangeNet
- TRTEXEC 与 Mask2former
- TRTEXEC 与 Mask Grounding DINO