Fork me on GitHub

自动化 AutoML 工具 Pluto 在 OPPO 的典型应用

图片

分享嘉宾:胡东方 OPPO 高级算法工程师
编辑整理:王帅 金山云
出品平台:DataFunTalk

导读: AI算法在工业上的应用日益增多,在实际应用中,由于与ML代码库交互模块繁多导致整体机器学习pipeline的复杂度和工作量较大。同时,AI算法在芯片上部署时,需适配指标而进行大量的反复实验。基于上述背景及痛点,亟需 自动机器学习(AutoML) 辅助实现机器学习全流程自动化。此外,由于工业应用中端的资源限制,需将AI算法进行 模型压缩Pluto是OPPO自研的 AutoML工具 ,具有硬件感知Uniformed算法框架两个特性,实现在统一框架中联合优化。Pluto在OPPO的典型应用包含视频超分、算法成果E^2^NAS和CV算法应用。

今天的介绍包括下面四方面:

  • 为什么需要AutoML?
  • 为什么需要模型压缩?
  • Pluto: AutoML工具
  • Pluto在OPPO的典型应用

01 为什么需要AutoML?

首先从下面两个方面介绍为什么需要自动机器学习AutoML。

1. AI算法在工业中的应用

AI算法在工业上的应用日益增多,如智能系统、推荐系统、疾病诊断、智能零售、自动化物流线、安全工作、野生动物识别等。

图片

近几年AI 算法需求量呈现指数级增长,同时在实际应用中,机器学习的代码量(ML code)仅占整个机器学习pipeline的较小比例,更大比例模块为与ML code交互的模块,如数据收集、特征工程、资源管理等。交互模块繁多导致整体机器学习 pipeline的复杂度和工作量加大,因此,需要与ML库交互的模块更简洁友好,方便算法工程师应用。

图片

2. AI算法部署有哪些挑战?

此外,在AI算法部署时,理想状态为算法工程师从模型构建、训练、压缩以及芯片适配、模型推理inference、云&端协同性能评估,到最终端侧落地,运行一次即可落地并满足需求。

图片

但实际情况中,由于模型压缩后在芯片上推理时,各项指标往往不能立即满足要求,需进行大量的反复实验(包含模型压缩和模型再训练),整个过程中将花费非常多的专家努力。

图片

针对上述背景以及痛点,诞生了自动机器学习AutoML。在工业应用背景下,期待AutoML可辅助实现机器学习全流程自动化,特别是可自动部署,在最少人力干预下保持模型性能。具体地,有如下特性:

①友好的开发体验

②易于迭代调试&打包

③挖掘硬件的极致性能

④通常场景快速部署

基于上述内容,AutoML一方面可避免大量反复实验,另一方面可降低AL门槛,用户不需要专业的技术背景,即可轻松地处理任务,从而可节省大量的人力成本以及时间和资源消耗。

图片

02 为什么需要模型压缩?

模型压缩的主要原因在于资源限制,工业中落地业务通常都受限于载体的资源。

①需关注资源限制的应用场景较多 ,如美颜相机中考虑避免泄密,美颜算法应用最好在手机端实现。但手机端算力与云端服务器相比差距较大。其他需关注资源限制的应用场景,其他如多模态应用、语音应用推荐等,都是在资源有限的芯片上进行落地。

②基于市场分析 ,中低端机型手机用户远高于高端机型。因此 需考虑中低端机型的资源问题

基于上述分析,我们需要将AI 算法模型进行压缩。

图片

图片

此外,将庞大复杂的模型压缩到芯片(资源有限)可支撑推理的程度,我们需要在模型压缩时候平衡模型性能(如精度)和资源约束(如时延、能耗、占存等)。

图片

03 Pluto: AutoML工具

OPPO自研的AutoML工具Pluto有如下两大特性。

1. Pluto特性之一:硬件感知

模型压缩落地上线成功与否与模型的精度以及时延、能耗、占存等硬件指标相关。硬件感知特性指的是可将硬件信息或指标在模型压缩过程中无障碍获取并带入到模型压缩训练中。这样的优势为模型不需要反复迭代,就可以得到最终模型,同时满足落地的硬件要求。

图片

模型压缩在执行时通常会使用 FLOPs(每秒浮点运算次数)来近似衡量模型在端侧的能耗和时延。

图片

但实际上二者差异很大,等效并不合理。例如模型A它是30G FLOPs,Latency可以是15毫秒;而模型B它是180兆FLOPs,模型 Latency 可以达到 40 毫秒。

图片

模型的硬件相关指标如能耗、时延等是与模型结构有关,同时也与具体的硬件实现有关。自研工具Pluto可做到硬件感知,可以更精准地压缩模型。

2.Pluto特性之二:Uniformed算法框架

对比通常的串行模型优化方式,Pluto采用uniform的算法框架,集合了 NAS、剪枝、量化、蒸馏等,实现一体化综合训练,输出最终的模型。

图片

3.Pluto: 统一框架中联合优化

上述两个特性可以概括为下图,在最大化模型性能(如Max精度)的同时,满足应用和硬件要求等约束条件,通过拉格朗日方程,将所有约束并入模型梯度更新过程中,实现在统一框架中联合优化的目标。

图片

Pluto工具中,约束信息可为能耗、时延、占存、FLOPs参数量等。

图片

它可应用于CNN模型中,如剪裁CNN模型的layer、channel等,并可应用于带有时序信息的RNN模型,以及skip connection结构的模型。

图片

由于在不同层之间联动压缩时,模型对齐较困难,skip connection结构在模型压缩中属于难点。Pluto实现了模型结构的自动对齐。

Pluto的Uniform框架涵盖多个单点算法,包括NAS、剪枝、量化、知识蒸馏、单帧转时序等。在uniform框架下,Pluto实现综合自动地压缩模型。

图片

04 Pluto在OPPO的典型应用

下面介绍Pluto工具在 OPPO 的部分应用情况。

1. Pluto应用: 视频超分

在第一个表格,对比Baseline,Pluto减少了 90% 的人力计算复杂度,FLOPs压缩掉了93%,同时PSNR(峰值信噪比)仅下降了3.4%。

图片



2. Pluto算法成果E^2NAS

在学术界,我们提出了创新算法E^2NAS,依托NAS在分割人体姿态检测等任务上的效果都超越了SOTA。

具体地,下图展示了人体姿态检测任务在数据集coco上的效果。三个图分别为两种不同手机机型,Google pixel单核和四核以及HTC单核下测出的AP和Latency。在对比图中,红色星形为我们的算法,可以看出在latency 较小的时(0~300毫秒)时,E^2NAS全面超过了 SOTA 算法。

图片

3. Pluto算法成果:其他 CV 算法应用

Pluto的算法成果包括在CV 算法的应用,如在AINR(去噪声)项目和AISR(影像超清)项目上均收益明显。在保持模型性能不变或者是略高的情况下,latency分别加速了15.6%和35%,同时模型大小分别减小了50%和12%。还有video depth上,初始化时间减少45%,功耗减少21%;matting项目上,在小模型基础上还能继续压缩13.3%的初始化时间和6.3%的推理时间,等等,不再一一列举。

图片

05 答疑环节

Q1:模型压缩的原理是什么?

A1:通过解最优化问题,实现模型压缩,具体优化项和约束如下:

最大化模型的性能

满足资源约束项

例如:

  • Latency(如在手机上落地,模型Latency在20毫秒以内)
  • FLOPs
  • 功耗
  • 能耗等等

③采用拉格朗日方法将有约束条件的最优化问题转化为无条件的最优化问题,将不等式公式组(条件约束)放于Loss项中作为惩罚项。

Q2:AutoML耗资源,训练需多长时间?

A2:AutoML比较消耗资源,但资源消耗是有一个度的。

(1)所需资源与耗时与具体任务相关

①如在coco256任务上,原始模型训练大概为三天半时间。若用NAS搜索的耗时与上述训练基本持平。

②如果将人体姿态检测数据集换成MPII ,耗时一天多即可搜索得到一个最优子网。

(2)采用AutoML并不一定增加训练资源和时长

①如在分类原始任务,基于8卡训练3天。

②若换成Pluto工具,进行最优结构搜索,基于8卡也是3天,基本持平。

(3)时间是可以trade off的,取决于超网和搜索算法的选择

①构建超网的大小

  • 若构建一个上千亿的超网,可用单路径或多路径方式进行forward。

②搜索算法的实现

  • 对子网评估,若采用多次warm up再进行子网 evaluate会耗资源、耗时。
  • 若有一个meta Network,可直接衡量中间子网,上述warm up和子网evaluate的时间和资源消耗都可省掉。

③还有更节省资源的zero-NAS,可以更大程度的节省资源消耗。

Q3:模型压缩skip connection如何对齐?

A3:我们未采取强制对齐方式,如在在中间强加一个简单卷积层来实现对齐。我们采取的方式如下,如三层网络进行剪枝,如果中间第二层的某一个通道被剪掉了,那输入输出的 dimension会发生变化。为了让这个结构能够继续运行,需要改变其上游的输入和输出dimension,一直向上追溯到某一层无需更改即可中断追溯。

Q4: 有做多模态预训练模型的AutoML工作吗?

A4:预训练模型与AutoML是可以结合的。预训练模型有庞大的数据量,AutoML对数据可感知和筛选。两者结合可间接找到模型中对某些数据感知更强的网络结构。

Q5:Pluto工具相对以前的提升有多少?

A5:在Pluto实际落地应用在视频超分的过程中,可节省人力90%。

图片

  • 算法工程师在做模型轻量化时,在替换模型较重的结构时,需要阅读前沿算法,了解最新进展,找到轻量结构,并在中间需要反复迭代。
  • AutoML无需先验知识,可自动总结结果,人力大概节约90%,FLOPs下降93%,PSNR下降3.4%。当然在这个过程中,我们可以根据落地项目的需求(如不允许PSNR下降),中间可有其他的输出节点,在保持PSNR相同情况下,其FLOPs压缩85% 或90%。

Q6:有相关的论文可以推荐看一下

A6:我们最新方案的论文正在投稿中,可查看类似的一系列论文,如NAS、DARTS等经典论文。

Q7: 该工作是在CPU还是GPU上的性能?

A7:这个要分开说就是模型训练在云端,寻找子网(寻找最优的轻量结构)的过程是在云端执行,寻找到最优模型后,落地在端侧。性能指标是在手机上测出来的。

Q8知识蒸馏、剪枝、量化在AutoML的效果哪个更明显?

A8:Pluto工具采用的是uniform的方式,即将上述单点算法纳入一个综合的框架里,实现综合最优搜索。

单点算法的效果,可提供一些经验。

知识蒸馏。 小的student 和大的teacher 情况,数据量大时,性能提高更多。

剪枝。 需要评估待剪枝网络的模型冗余度的大小,一般减layer或减channel。

  • 若冗余度较大,减掉90%可能对于性能并无损失。
  • 若模型已由专家调优,在特定任务做了精细优化,则剪枝优化的空间很小。
  • 若channel已根据硬件做了优化,如根据硬件的bit位数,或者硬件特例的算子库都做了相对应的调整,则剪枝发挥空间较少。如将16位减到15位或14位,可能无效果或起到反作用。

量化。 在端侧应用较多,包括16 位和8位。效果与模型以及使用的推理框架有关。若算子库已经进行了优化,在训练时选用的话,会比临时选择其他算子更高效。

Q9:降噪与超清,帧率比是否有变化,效果是否更好?

A9:降噪跟超清两个落地应用的效果比SOTA更好。在降噪时,除了有客观的如PSNR、Ssim的指标,也会参考主观评价。在实现主客观两方指标trade off下,得到较好的效果,如AINR的Latency约压缩15%, AISR 的Latency 约压缩35%。

在应用中,帧率比不会改变,不会进行有意调整。

AutoML得到的轻量网络可能会比原来笨重的网络效果更好。

Q10:Student与Teacher结构不一致,蒸馏有关实验效果?

A10: Student和teacher的机构要有一定的差异,又要有一定的相似度。

student和teacher结构不一样化,蒸馏是有效的。

②student与teacher的结构差别很大,蒸馏的效果会大打折扣。

③student和teacher的结构非常相近,蒸馏提升效果有限(student会被teacher带来一些bias偏差)。

④student和teacher的结构非常相近,蒸馏提升效果有限。(student会被teacher带来一些bias偏差)

NAS里有一些专门工作对两者非常相近时进行调整,该部分可查阅block NAS类的论文。


本文地址:https://www.6aiq.com/article/1662559200169
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出