01-深度学习模型部署介绍

最近对模型部署很感兴趣,发现这些东西书上没有,所以在网上整理一些在这里,欢迎交流。

如果现在我们已经得到较好效果的AI模型,怎么去部署呢?部署又哪些场景?

比如我们现在有一个已经训练好的YOLOv5模型,他是Pytorch框架的,在部署之前,一般会将其转为ONNX格式,然后用针对不同的部署场景用不同的推理框架来部署。

什么是ONNX格式?

ONNX(Open Neural Network Exchange),开放神经网络交换,是一种模型IR,用于各种深度学习训练和推理框架转换的一个中间表示格式。在实际业务中,可以使用Pytorch或者TensorFlow训练模型,导出成ONNX格式,然后在转换成目标设备上支撑的模型格式,比如TensorRT Engine、NCNN、MNN等格式。ONNX定义了一组和环境,平台均无关的标准格式,来增强各种AI模型的可交互性,开放性较强。

有哪些部署场景?

中心服务器云端部署和边缘部署两种方式。云端部署常见的模式是,模型部署在云端服务器,用户通过网页访问或者 API 接口调用等形式向云端服务器发出请求,云端收到请求后处理并返回结果。 边缘部署则主要用于嵌入式设备,主要通过将模型打包封装到 SDK,集成到嵌入式设备,数据的处理和模型推理都在终端设备上执行。

有哪些模型部署方式?

针对上面提到的两种场景,分别有两种不同的部署方案,Service 部署和 SDK 部署。 Service 部署:主要用于中心服务器云端部署,一般直接以训练的引擎库作为推理服务模式。 SDK 部署:主要用于嵌入式端部署场景,以 C++ 等语言实现一套高效的前后处理和推理引擎库(高效推理模式下的 Operation/Layer/Module 的实现),用于提供高性能推理能力。此种方式一般需要考虑模型转换(动态图静态化)、模型联合编译等进行深度优化。

有哪些支持onnx格式模型的推理框架?

  • TensorRT:英伟达的,用于GPU推理加速。注意需要英伟达GPU硬件的支持。
  • OpenVino:英特尔的,用于CPU推理加速。注意需要英特尔CPU硬件的支持。
  • ONNXRuntime:微软,亚马逊 ,Facebook 和 IBM 等公司共同开发的,可用于GPU、CPU
  • OpenCV dnn:OpenCV的调用模型的模块

学习方向:

  • 算法、特征、业务、实际算法场景感兴趣,可以专注深度学习各种算法知识(识别、检测、分类、校准、损失函数),然后基于这些知识解决实际的问题,可以训练模型,也可以结合传统图像或者其他方法一起解决。现实生活中的问题千奇百怪,一般只使用一个模型解决不了,可能会有多个模型一起上,解决方法也多种多样

  • AI落地、部署、移植、算法SDK感兴趣,可以多看工程落地的一些知识(C++、Makefile、cmake、编译相关、SDK),多参与一些实际项目攒攒经验,多熟悉一些常见的大厂造的部署轮子(libtorch、TensorRT、openvino、TVM、openppl、Caffe等),尝试转几个模型(ONNX)、写几个op(主要是补充,性能不要最优)、写几个前后处理、debug下各种奇葩的错误,让模型可以顺利在一些平台跑起来,平台可以在PC、手机、服务器等等;

  • 算子优化、底层硬件实现实现感兴趣的,可以重点看某一平台的硬件架构(CPU、GPU、NPU、VPU、DSP),然后学学汇编语言,看看内存结构,看看优化方法等等,做一些算子的优化,写一些OP啥的,再者涉及到profile、算子优化、内存复用等等。

  • 当然还有模型压缩、模型剪枝、量化、蒸馏,这些其实也是部署的一部分,根据需要掌握即可。

参考:

ONNX学习笔记 - 知乎

AI 框架部署方案之模型部署概述 - 知乎

https://www.cnblogs.com/xixixing/p/15830977.html

老潘的思考(AI部署、方向、就业)!_Datawhale的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值