TensorRT 实用工具介绍

1.前言

工程化部署是一个复杂的任务,涉及的环节众多,因此需要有足够好的工具来检测、分析,NVIDIA也提供了一系列工具 用于分析、调试、优化部署环节。

本文就介绍两个实用工具,nsight system 和 polygraphy。

nsight system可分析cpu和gpu的性能,可找出应用程序的瓶颈。

polygraphy可在各种框架中运行和调试深度学习模型,用于分析模型转换间的瓶颈

2.nsight system

NVIDIA Nsight Systems是一个系统分析工具,它可以分析CPU和GPU的利用率、内存占用、数据输送量等各种性能指标, 找出应用程序的瓶颈所在。

用户文档User Guide — nsight-systems 2024.6 documentation

安装

打开官网,选择对应的操作系统、版本进行下载 。

https://developer.nvidia.com/nsight-systems/get-started#latest-win-linux

NsightSystems-2023.3.1.92-3314722.msi,双击安装,一路默认

将目录添加到环境变量:C:\Program Files\NVIDIA Corporation\Nsight Systems 2023.3.1\target-windows-x64

将gui工作目录页添加到环境变量:C:\Program Files\NVIDIA Corporation\Nsight Systems 2023.3.1\host-windowsx64

运行

nsys包括命令行工具与UI界面,这里采用UI界面演示。

命令行工具是C:\Program Files\NVIDIA Corporation\Nsight Systems 2023.3.1\target-windows-x64\nsys.exe

UI界面是C:\Program Files\NVIDIA Corporation\Nsight Systems 2023.3.1\host-windows-x64\nsys-ui.exe

nsys运行逻辑是从nsys端启动任务,nsys会自动监控任务的性能。

第一步:启动nsys。在cmd中输入nsys-ui,或者到安装目录下双击nsys-ui.exe。

第二步:创建project,配置要运行的程序。在这里运行本章配套代码01_trt_resnet50_cuda.py。具体操作如下图所示

第三步:查看统计信息

nsight system是一个强大的软件,但具体如何有效使用,以及如何更细粒度、更接近底层的去分析耗时,请大家参照官 方文档以及需求来学习。

3.polygraphy

Polygraphy — Polygraphy 0.49.13 documentation

polygraphy是TensorRT生态中重要的debug调试工具,它可以

使用多种后端运行推理计算,包括 TensorRT, onnxruntime, TensorFlow;

比较不同后端的逐层计算结果;

由模型文件生成 TensorRT 引擎并序列化为.plan;

查看模型网络的逐层信息;

修改 Onnx 模型,如提取子图,计算图化简;

分析 Onnx 转 TensorRT 失败原因,将原计算图中可以 / 不可以转 TensorRT 的子图分割保存;

隔离 TensorRT 中错误的tactic;

常用的几个功能是:

检验 TensorRT 上计算结果正确性 /精度

找出计算错误 / 精度不足的层

进行简单的计算图优化

安装

pip install nvidia-pyindex

pip install polygraphy

验证

polygraphy依托于虚拟环境运行,因此需要激活相应的虚拟环境,然后执行 polygraphy -h polygraphy有七种模式,分别是 {run,convert,inspect,surgeon,template,debug,data},具体含义参见文档

 

1:运行onnx及trt模型

polygraphy run resnet50_bs_1.onnx --onnxrt

polygraphy run resnet50_bs_1.engine --trt --input-shapes 'input:[1,3,224,224]' --verbose

得到如下运行日志,表明两个框架推理运行成功:

2:对比onnx与trt输出结果(常用)

polygraphy还可以充当trtexec的功能,可以实现onnx导出trt模型,并且进行逐层结果对比。

其中atol表示绝对误差,rtol表示相对误差。 

输出的日志如下:

对于每一个网络层会输出onnx、trt的直方图,绝对误差直方图,相对误差直方图

最后会统计所有网络层符合设置的超参数atol, rtol的百分比,本案例中 Pass Rate: 100.0%。 

 

 

更多使用案例推荐阅读github cookbook

https://github.com/NVIDIA/trt-samples-for-hackathon-cn/tree/master/cookbook/07-Tool/Polygraphy-CLI 

猜你喜欢

转载自blog.csdn.net/u012374012/article/details/143201830