TIS教程03-导出
简介
众所周知,模型部署框架部署的是深度学习模型,因此我们希望TIS只对模型的推理进行处理,故而需要提供给它合适的模型。而对于PyTorch的模型而言,有着主要的两种部署级模型,一种就是通用的ONNX模型以便支持诸多框架,另一种则是PyTorch自带的TorchScript模型。本文及本系列的其他文章都采用TorchScript模型进行部署。
TorchScript
首先来介绍一下TorchScript是啥?
TorchScript主要的应用场景是把Python/PyTorch代码转换成等价的C++代码从而提高深度学习模型在线上生产环境部署的运行效率。Python代码会被编译成TorchScript编译器可以理解的一种格式(ScriptModule),C++的生产环境可以载入该格式的文件并用内置的JIT来执行对应的代码。
落地到模型这个层面来说,其实就是将PyTorch模型从Python进程(一般指的是开发环境,用于模型设计和训练)中保存并加载到没有Python依赖(一般指的是部署环境,用于模型的线上部署)的进程中。这个过程中,纯Python模型转换为独立于Python的TorchScript程序,如C++环境中,使得生产环境的部署成为了可能,在这种环境中,Python程序可能由于性能和多线程的原因不适用。
TorchScript从PyTorch1.x开始陆续完善,是PyTorch和TensorFlow竞争工业部署市场浓墨重彩的一笔。
模型导出
实际上,TorchScript支持的是Python到C++这类高效语言环境的转换,其中最典型的就是使用C++编写的LibTorch库。不过,TorchScript自成一个生态,也有比较底层的语法需要学习,下文我也只是介绍最基础的模型导出的常见策略,至于LibTorch的细节使用Triton Inference Server也不需要过分关注,我们只需要关注模型在TIS中的推理运行结构即可。
要想保存TorchScript模型,需要首先构建出这个模型并跟踪运行一次,就可以将模型序列化为本地文件了。
import torchx = torch.randn(1, 3, 640, 640)
model = create_model('yolov5s')
ts_model = torch.jit.trace(model, x, strict=False)
ts_model.save('yolov5.ts.pt')
上面就是使用TorchScript将PyTorch模型导出的实例代码,我这里是将yolov5s导出。至于模型加载的细节,则由TIS来负责,事实上TIS支持包括TensorRT、TorchScript(LibTorch)、TensorFlow等多种后端,我们只需要去完善输入输出的配置细节即可。
总结
本文只是简单介绍了TorchScript模型导出的简单操作,想要了解更多的建议去详细学习一下官方文档。
TIS教程03-导出相关推荐
- ArcGIS二次开发基础教程(03):保存文档和导出地图
ArcGIS二次开发基础教程(03):保存文档和导出地图 保存文档 保存: //这里的path为全局变量 在打开文件获添加数据时赋值原路径 //判断打开文件是否为mxd文件 是则保存 不是则另存为 i ...
- QIIME 2教程. 03老司机上路指南Experience(2020.11)
文章目录 老司机上路指南 本节视频视频教程 为什么要改用QIIME 2? 老司机上路前的几点建议 数据处理步骤 数据导入 样本拆分 双端合并 去除非生物序列 相似序列分组 去噪 OTU聚类 物种分类 ...
- TIS教程04-客户端
简介 在之前的文章中,我们主要关注服务端的配置和部署,这无可厚非,因为Triton Inference Server本就是服务端框架.但是,作为一个完善的生态,Triton也对客户端请求做了诸多封装以 ...
- TIS教程02-模型
简介 在本系列的上一篇文章中,介绍了TIS(triton inference server)的安装和运行,但是深度学习模型的服务器部署的核心依然是模型,因此本文将关注于TIS部署时模型相关的内容,包括 ...
- TIS教程01-安装
简介 TIS(Triton Inference Server)是NVIDIA推出的AI模型部署框架,前身为ensorRT Inference Server,它支持多种深度学习框架作为backend(如 ...
- Magicodes.IE基础教程之导出Pdf
说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性说明 PdfExporterAttribut ...
- 最简洁影视后期制作(AE)教程之导出导入
一.导入素材(资源) 注意:学习AE的人必须知道的一个问题是:别人问你AE是什么软件,答案:图层制软件(别问我为什么,你学习什么是图层的时候你也许会知道为什么了) 1,是视频文件 2,是视频的 ...
- QIIME2教程. 03老司机上路指南Experience(2020.11)
老司机上路指南 QIIME 2 for Experienced Microbiome Researchers https://docs.qiime2.org/2020.11/tutorials/qii ...
- (10.2.3.3)静电的设计教室:APP设计利器Sketch教程(03)-让插件助你一臂之力(原创
通过上两节的文章,大家可能已经对sketch这款软件的基本操作有了一个大概的了解(如果还有朋友没看过之前的文章,请点这里) 但很多朋友可能会有疑惑,"好像sketch的功能也没有那么强大啊? ...
- 【CMS建站】写给大家看的网站制作教程03—零基础学网站制作的简单入门指南...
作者 | 杨小爱 来源 | web前端开发(ID:web_qdkf) 在上一篇<[CMS建站]写给大家看的网站制作教程02-网站制作的工具介绍与下载安装>文章中,我详细的讲解了关于制作一个 ...
最新文章
- Pixysoft.Framework.Noebe.Socket 开发实录
- C/C++实现快速排序
- php 离线 gis,在 Web 页面中使用离线地图
- 开发转运维有什么好点的理由_芜湖好点的团购社区费用
- ArcGIS实验教程——实验二十二:空间数据符号化
- 云服务器ecs搭建环境,ECS云服务器linux下搭建开发环境
- 【报告分享】2020中国企业数字化转型研究报告-清华大学.pdf(附下载链接)
- C++中二维数组的动态分配
- 蓝桥杯 前缀判断——2013年省赛C/C++A组真题5
- 导航栏html_html操作和思考(二):统一导航栏文字高度的方法
- 微信小程序之点餐系统附源码
- ie8 升级页面html,ie7浏览器怎么升级到ie8?
- Myeclipse8.5 cn 序列号
- android xutils 教程,Android xUtils更新到3.0后的基本使用规则详解
- 好用的PDF编辑软件有哪些?这几款工具建议收藏
- php怎么弄面包屑,php实现面包屑导航例子分享
- FFMPEG 常用命令一览
- 除了啤酒与尿布 大数据又助电商玩口碑营销
- cad图纸打印出来更高效的方法介绍
- 微信支付服务器商模式,微信支付分正式支持服务商模式!