使用 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