简介

众所周知,模型部署框架部署的是深度学习模型,因此我们希望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-导出相关推荐

  1. ArcGIS二次开发基础教程(03):保存文档和导出地图

    ArcGIS二次开发基础教程(03):保存文档和导出地图 保存文档 保存: //这里的path为全局变量 在打开文件获添加数据时赋值原路径 //判断打开文件是否为mxd文件 是则保存 不是则另存为 i ...

  2. QIIME 2教程. 03老司机上路指南Experience(2020.11)

    文章目录 老司机上路指南 本节视频视频教程 为什么要改用QIIME 2? 老司机上路前的几点建议 数据处理步骤 数据导入 样本拆分 双端合并 去除非生物序列 相似序列分组 去噪 OTU聚类 物种分类 ...

  3. TIS教程04-客户端

    简介 在之前的文章中,我们主要关注服务端的配置和部署,这无可厚非,因为Triton Inference Server本就是服务端框架.但是,作为一个完善的生态,Triton也对客户端请求做了诸多封装以 ...

  4. TIS教程02-模型

    简介 在本系列的上一篇文章中,介绍了TIS(triton inference server)的安装和运行,但是深度学习模型的服务器部署的核心依然是模型,因此本文将关注于TIS部署时模型相关的内容,包括 ...

  5. TIS教程01-安装

    简介 TIS(Triton Inference Server)是NVIDIA推出的AI模型部署框架,前身为ensorRT Inference Server,它支持多种深度学习框架作为backend(如 ...

  6. Magicodes.IE基础教程之导出Pdf

    说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性说明 PdfExporterAttribut ...

  7. 最简洁影视后期制作(AE)教程之导出导入

    一.导入素材(资源)   注意:学习AE的人必须知道的一个问题是:别人问你AE是什么软件,答案:图层制软件(别问我为什么,你学习什么是图层的时候你也许会知道为什么了)   1,是视频文件 2,是视频的 ...

  8. QIIME2教程. 03老司机上路指南Experience(2020.11)

    老司机上路指南 QIIME 2 for Experienced Microbiome Researchers https://docs.qiime2.org/2020.11/tutorials/qii ...

  9. (10.2.3.3)静电的设计教室:APP设计利器Sketch教程(03)-让插件助你一臂之力(原创

    通过上两节的文章,大家可能已经对sketch这款软件的基本操作有了一个大概的了解(如果还有朋友没看过之前的文章,请点这里) 但很多朋友可能会有疑惑,"好像sketch的功能也没有那么强大啊? ...

  10. 【CMS建站】写给大家看的网站制作教程03—零基础学网站制作的简单入门指南...

    作者 | 杨小爱 来源 | web前端开发(ID:web_qdkf) 在上一篇<[CMS建站]写给大家看的网站制作教程02-网站制作的工具介绍与下载安装>文章中,我详细的讲解了关于制作一个 ...

最新文章

  1. Pixysoft.Framework.Noebe.Socket 开发实录
  2. C/C++实现快速排序
  3. php 离线 gis,在 Web 页面中使用离线地图
  4. 开发转运维有什么好点的理由_芜湖好点的团购社区费用
  5. ArcGIS实验教程——实验二十二:空间数据符号化
  6. 云服务器ecs搭建环境,ECS云服务器linux下搭建开发环境
  7. 【报告分享】2020中国企业数字化转型研究报告-清华大学.pdf(附下载链接)
  8. C++中二维数组的动态分配
  9. 蓝桥杯 前缀判断——2013年省赛C/C++A组真题5
  10. 导航栏html_html操作和思考(二):统一导航栏文字高度的方法
  11. 微信小程序之点餐系统附源码
  12. ie8 升级页面html,ie7浏览器怎么升级到ie8?
  13. Myeclipse8.5 cn 序列号
  14. android xutils 教程,Android xUtils更新到3.0后的基本使用规则详解
  15. 好用的PDF编辑软件有哪些?这几款工具建议收藏
  16. php怎么弄面包屑,php实现面包屑导航例子分享
  17. FFMPEG 常用命令一览
  18. 除了啤酒与尿布 大数据又助电商玩口碑营销
  19. cad图纸打印出来更高效的方法介绍
  20. 微信支付服务器商模式,微信支付分正式支持服务商模式!

热门文章

  1. sqlsever2019:控制流全解
  2. Sentinel-2A数据处理
  3. 沃邮箱 android,沃邮箱
  4. presto时间转换、时间加减、时间差
  5. unity particle system 粒子系统 制作闪电放电效果
  6. 感冒病毒 suspects 并查集
  7. ProxmoxVE7.0+Ceph15.2集群搭建
  8. 免费创建微信公众号全攻略(转载)
  9. 笔记本电脑突然断网,intel wireless AC 9462驱动无法启动
  10. (矩阵Part2):矩阵进阶