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