深度学习模型部署(十)模型部署配套工具二

news2024/11/19 0:21:10

上篇blog讲了trtexec和onnx_graphsurgeon两个工具,一个用于将onnx转化为trt模型,另一个用于对onnx模型进行修改。这篇blog讲polygraphy和nsight systems,前者用于进行模型优化以及结果验证,后者用于性能分析。

polygraph

polygraph有API库,也有命令行工具,命令行工具有多个模式:

  • run模式:推理模型,得到运行细节,包括推理时间,各层的推理时间等信息,可以看作一个推理测试器
  • debug模式:检测onnx模型转trt模型中的错误,并将模型分为可转换部分和不可转换部分。
  • data模式:调整分析输入输出的数据和模型权重
  • convert模式:基本等同于run
  • surgeon模式:对模型进行优化
    run模式官方文档
    例子:
polygraphy run model-02.plan \ # 推理该模型,这里也可以用onnx模型
    --trt \ # 使用TensorRT推理,--onnxrt是指用onnxruntime推理
    --input-shapes 'tensorX:[4,1,28,28]' \ # 输入的shape,tensorX是对应输入的名称
    --verbose \ # 生成详细信息
    > result.log 2>&1 # 将详细信息重定向到result.log

polygraphy run modelB.onnx \
    --trt \
    --plugins ./AddScalarPlugin.so \ # 添加插件,tensorRT插件再下篇blog讲
    > result-07.log 2>&1

surgeon模式官方文档
例子:

polygraphy surgeon sanitize yolov5s_v7.onnx \
    --fold-constant \
    -o modelA-FoldConstant.onnx \
    > result.log

inspect模式文档
例子:

polygraphy inspect capability yolov5s.onnx > result_capability.log # 查看tensorRT是否支持该模型

其他用到再写,不在工具学习上做无用功

nsight systems

官方文档
在这里插入图片描述

nv官方教程地址。
四个工具的整体工作流程:
1、使用polygraphy判断tensorRT是否支持,如果支持,进行优化,不支持则处理不支持的层
2、如果不支持,使用onnx_graphsurgeon对模型进行修改
3、使用trtexec进行测试,查看推理效果,如果推理时间不理想,使用nsight systems查看哪里时间影响最大
4、如果精度不理想,使用polygraphy查看整体模型中每一层的输出,查看输出误差较大的层,进行处理
6、得到一个工作状态良好的模型,用TensorRT进行推理部署。
还是那句话,不要在工具上费工夫,用到啥再学啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1521452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python程序设计基础——代码习题

1 __name__属性 import demodef main():if __name__ __main__:print(这个程序被直接运行。)elif __name__demo:print(这个程序作为模块被使用。) main()3.3 编写程序,生成包含1000个0~100之间的随机整数,并统计每个元素出现的次数。 import randomx[r…

WebGIS之实现查询地区天气并让地区高亮

一.预览>> 二.思路>> 根据搜索框的内容来进行页面视角的切换,对应的地区高亮,右边有关天气的地方实时更新,并且因为代码体量非常小,并没有选择在框架下完成。直接一个html文件搞定了,但实际上还是有一些坑…

C#集合和数据结构,随笔记录

C#集合和数据结构 System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表/链表、位数组、哈希表、队列和堆栈)的集合 System.Collections.Generic命名空间: 所有集合都直接或间接基于ICollection接口 列表类集…

Vue3+TS+Vite 找不到模块“@/components/xxx/xxx”或其相应的类型声明

引入vue文件时文件是存在的,引入路径也是对的,报找不到模块,有一些解决方案是在tsconfig.json里面做一些配置,大家可以自行百度(不知道是不是我百度的不对,我的没有解决)还有一种是在项目根目录…

免密ssh密钥登录Linux该如何设置

我们在使用ssh客户端远程连接Linux服务器时,为了考虑安全方面的因素,通常使用密钥的方式来登录。密钥分为公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,私钥是由个人自己持有,并且必须妥善保管和注意保密。 Li…

安装python、pycharm,打好基础,准备飞起

python安装使用 安装python安装包 以下为自定义安装python安装包,无特殊要求可直接进行安装。 勾选Add Python 3.6 to PATH, 然后点击 Customize installation,进行自定义安装。 所有的都勾上,然后点击Next。 可选择自己需要…

perl 用 XML::DOM 解析 Freeplane.mm文件,生成测试用例.csv文件

Perl 官网 www.cpan.org 从 https://strawberryperl.com/ 下载网速太慢了 建议从 https://download.csdn.net/download/qq_36286161/87892419 下载 strawberry-perl-5.32.1.1-64bit.zip 约105MB 解压后安装.msi,装完后有520MB,建议安装在D:盘。 运行 …

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItemGroup)

该组件用来展示列表item分组,宽度默认充满List组件,必须配合List组件来使用。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。该组件的父组件只能是List。 使用说明 当List…

拿捏指针(二)

个人主页:秋邱博客 所属栏目:C语言 (感谢您的光临,您的光临蓬荜生辉) 目录 前言 数组与指针 数组名的理解 指针数组与数组指针 指针数组 数组指针 数组传参 一维数组传参的本质 二维数组传参的本质 二维数组…

Spring源码流程图

1.IOC源码 流程图地址:https://www.processon.com/view/link/626ce8dc0e3e742d46229977 2.AOP源码 流程图地址:https://www.processon.com/view/link/627134571efad45d06d6a1de 3.事务源码 流程图地址:https://www.processon.com/view/li…

Android中compile,implementation和api的区别,以及gradle-wrapper的详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 前言: compile,implementation和api的区别和其作用 compile和api会进行传递…

AI赋能写作:AI大模型高效写作一本通

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

15.7k stars一个实用型OCR,支持80多种语言

一个实用型 OCR,支持 80 多种语言和所有流行的书写脚本,包括:拉丁文、中文、阿拉伯文、梵文、西里尔文等。 特点 支持本地或云/API部署 准确度提高到 99% 以上 完全可定制,支持 80 多种语言 支持表格识别 二维码/条码提取识别 GitHub数据 15.7k s…

PS学习-放大图片保持清晰

快捷键冲突所以有的不能截屏 500就是原图的5倍 还很清晰

如何本地搭建hMailServer邮件服务

文章目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpola…

获取远程管理软件保存的凭据

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 内网敏感数据的发现 内网的核心敏感数据,不仅包括数据库、电子邮件,还包括个人数据及组织的业务数据、技术数据等。可以说,价值较高…

C语言数据结构基础笔记——树、二叉树简介

1.树 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 (图片来源于网络)…

【Unity】persistentDataPath、streamingAssetsPath和dataPath

介绍 我们在用Unity进行开发时,资源路径是我们最常用到的,下面我就来简单介绍一下几种常用的路径。 1.dataPath dataPath是包含游戏数据文件夹的路径,是app程序包安装路径 Windows: xxx /Assets (如下图) Mac: xxx…

ideaSSM失物招领管理系统网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 失物招领管理系统是一套完善的完整信息管理系统,结合SSM框架完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数…

计算机网络笔记(湖科大教书匠版本)

目录 第一章、 ①三种交换方式 ②计算机网络的定义和分类 ③计算机网络的性能指标 1.速率 2.带宽 3.吞吐量 4.时延 5.时延带宽积 6.往返时间 7.利用率 8.丢包率 ④常见的三种计算机网络体系结构​编辑 ⑤计算机网络体系结构分层的必要性​编辑 第二章、物理层 ①…