模型部署优化的学习路线是什么?

开发 前端
模型部署优化这个方向其实比较宽泛。 从模型完成训练,到最终将模型部署到实际硬件上,整个流程中会涉及到很多不 同层面的工作,每一个环节对技术点的要求也不尽相同。

[[417099]]

知友问: 我现在只会 Python,每天工作就是写脚本处理数据、训练模型,但是没什么工程能力,我想往模型部署优化、算法落地这个方向发展,请问该怎么学习与规划?

模型部署优化这个方向其实比较宽泛。 从模型完成训练,到最终将模型部署到实际硬件上,整个流程中会涉及到很多不 同层面的工作,每一个环节对技术点的要求也不尽相同。

部署的流程大致可以分为 以 下几个环节:

一、模型转换 

从训练框架得到模型后,根据需求转换到相应的模型格式。 模型格式的选择通常是根据公司业务端 SDK 的需求,通常为 caffe 模型或 onnx 模型,以方便模型在不同的框架之间适配。

该环节的工作需要对相应的训练框架以及 caffe/onnx 等模型格式有所了解。

常用的 Pytorch 和 TensorFlow 等框架都有十分成熟的社区和对应的博客或教程; caffe 和 onnx 模型格式也有很多可参考和学习的公开文档。

即使没找到有可参考的文章时,好在二者都是开源的,依然可以通过对源码和样例代码的阅读来寻找答案。

二、模型优化 

此处的模型优化是指与后端无关的通用优化,比如常量折叠 、 算数优化 、 依赖优化 、 函数优化 、 算子融合 以及 模型信息简化等等。

部分训练框架会在训练模型导出时就包含部分上述优化过程,同时如果模型格式进行了转换操作,不同 IR 表示之间的差异可能会引入一 些冗余或可优化的计算,因此在模型转换后通常也会进行一部分的模型优化操作。

该环节的工作需要对计算图的执行流程、各个 op 的计算定义、程序运行性能模型有一定了解,才能知道如果进行模型优化, 如何 保证优化后的模型具有更好的性能。

了解 得 越深入,越可以挖掘到更多的模型潜在性能。

三、模型压缩 

广义上来讲,模型压缩也属于模型优化的一部分。模型压缩本身也包括很多种方法,比如剪枝 、 蒸馏 、 量化等等。 模型压缩的根本目的是希望获得一个较小的模型,减少存储需求的同时降低计算量,从而达到加速的目的。

该环节的工作需要对压缩算法本身 、 模型涉及到的算法任务及模型结构设计 、 硬件平台计算流程三个方面都有一定的了解。

当因模型压缩操作导致模型精度下降时,对模型算法的了解,和该模型在硬件上的计算细节有足够的了解,才能分析出精度下降的原因,并给出针对性的解决方案。

对于模型压缩更重要的往往是工程经验 , 因为在不同的硬件后端上部署相同的模型时, 由于 硬件计算的差异性,对精度的影响往往也不尽相同,这方面只有通过 积累 工程经验来不断提升。

Open PPL 也在逐步开源自己的模型压缩工具链,并对上述提到的模型算法、压缩算法 和 硬件平台适配等方面的知识进行介绍 。

四、模型部署

模 型部署是整个过程中最复杂的环节。从工程上讲,主要的核心任务是模型打包 、 模型加密,并进行 SDK 封装。

在一个实际的产品中,往往会用到多个模型。

模型打包是指将模型涉及到的前后处理,以及多个模型整合到一起,并加入一些其他描述性文件。 模型打包的格式和模型加密的方法与具体的 SDK 相关。 在该环节中主要涉及到的技能与 SDK 开发更为紧密。

从功能上讲,对部署最后的性能影响最大的肯定是 SDK 中包含的后端库,即实际运行模型的推理库。 开发一个高性能推理库所需要的技能点就要更为广泛 ,并且 专业。

并行计算的编程思想在不同的平台上是通用的,但不同的硬件架构的有着各自的特点,推理库的开发思路也不尽相同,这也就要求对开发后端的架构体系有着一定的了解。

具体到不同架构的编程学习,建议参考当前各大厂开源的推理库来进一步学习 。

 

责任编辑:张燕妮 来源: OpenPPL
相关推荐

2024-02-20 15:17:35

机器学习模型部署

2013-05-23 09:20:15

系统优化

2018-04-09 14:25:06

数据库MySQL索引

2013-05-23 09:29:45

系统优化程序员

2022-02-04 22:28:14

ICS安全模型

2018-08-06 07:51:03

NFV网络功能虚拟化

2021-01-25 09:00:00

机器学习人工智能算法

2020-05-21 14:05:17

TFserving深度学习架构

2024-09-09 11:45:15

ONNX部署模型

2013-08-05 09:31:04

Android4.3TRIM

2010-06-03 11:34:42

Hadoop

2022-03-28 18:59:02

DockerFlask深度学习

2022-05-10 10:19:04

AI深度学习模型

2020-04-22 11:22:41

物联网智能调度智能运输

2018-08-31 21:00:39

数据交换模型数据模型应用程序

2018-07-03 05:44:12

物联网IoT网络

2012-11-15 16:03:43

2014-08-13 17:09:57

ios学习

2017-07-11 10:19:24

浅层模型机器学习优化算法

2023-03-30 14:10:30

点赞
收藏

51CTO技术栈公众号