AI部署

关于算法与部署落地想法

之前在深度学习环境搭建方面就踩了很多坑,当时就觉得应该写点博客之类的记录一下,一方面加深记忆,免得下次再碰到时还得浪费时间去找解决办法,其次是部分问题确实是不太好解决,如果能把自己的踩坑记录分享出来,能节省一些后来者的宝贵时间也是极好的。

平时接触的都是算法方面的东西,用到的都是在GitHub上开源的算法,使用自己的数据进行复现,基本上没什么难度

而模型部署及工业落地是任何一个算法都需要用到的,有实际应用场景。

我把AI部署的学习看成一条打怪升级之路,一个个障碍就是一个个小怪,得脚踏实地地一个个解决,顺带把碰到的坑都记录下来

关于AI部署

AI部署的基本步骤:

  • 训练一个模型,也可以是拿一个别人训练好的模型
  • 针对不同平台对生成的模型进行转换,也就是俗称的parse、convert,即前端解释器
  • 针对转化后的模型进行优化,这一步很重要,涉及到很多优化的步骤
  • 在模型可以运行的基础上,保证模型的速度、精度和稳定性

平时搭建的框架采用的Backbone都是RCnn和ResNet等比较简单的模型,实际场景中我们使用的模型远远比ResNet50要复杂,我们部署的环境也远远比实验室的环境条件更苛刻,对模型的速度精度需求也比一般demo要高。

需要的技术列表

一些的算法知识+扎实的工程能力

模型部署方向比较务实,相对于算法方向需要提出新的算法(大部分其实都是将别人的开源进行融合之类的),部署是一分耕耘一份收获,算法部署更偏向于开发,最常用的语言是C++,所以第一个技术点:

  1. 学好C++很重要,起码能看懂各种关于部署精巧设计的框架

         好用的开源推理框架:Caffe、NCNN、MNN、TVM、OpenVino

AI部署当然也需要深度学习的基础知识,也需要知道怎么训练模型,怎么优化模型,模型是怎么设计的等等。不然你怎会理解这个模型的具体op细节以及运行细节,有些模型结构比较复杂,也需要对原始模型进行debug。第二个技术点:

         2.深度学习基础知识

         神经网络的pytorch等框架的实现

模型不但要求可以运行,还需要进一步保证与逆行的速度、精度和稳定性,第三个技术点:

         3.模型部署的提速方法

    • 模型结构
    • 剪枝
    • 蒸馏
    • 稀疏化训练
    • 量化训练
    • 算子融合、计算图优化、底层优化

 在接下来的学习过程中主要围绕这几个方面进行展开,最好能接触到实际的项目部署

参考:老潘的AI部署以及工业落地学习之路 - 知乎 (zhihu.com)

 

posted @ 2021-07-28 11:18  ChangYuanD  阅读(467)  评论(0编辑  收藏  举报