模型端侧加速哪家强?一文揭秘百度easyedge平台技术内核

百度大脑 百度大脑     2022-12-08     172

关键词:

近年来,深度学习技术在诸多领域大放异彩,因此广受学术界和工业界的青睐。随着深度学习的发展,神经网络结构变得越来越复杂。复杂的模型固然具有更好的性能,但是高额的存储空间与计算资源消耗使其难以有效地应用在各硬件平台上。因此深度学习模型在端上部署和加速成为了学术界和工业界都重点关注的研究领域。

一方面,有许多深度学习框架可以让开发者和研究者用于设计模型,每个框架具备各自独特的网络结构定义和模型保存格式。AI工程师和研究者希望自己的模型能够在不同的框架之间转换,但框架之间的差距阻碍了模型之间的交互操作。另一方面,由于深度学习模型庞大的参数量,直接在边缘端部署模型会产生较高的时延。

百度EasyEdge端与边缘AI服务平台可以很好地解决上述问题。EasyEdge可以支持多种主流深度学习框架的模型输入,提供了方便的部署功能,针对业内各类主流芯片与操作系统进行了适配,省去了繁杂的代码过程,可以轻松将模型部署到端设备上。EasyEdge在集成了多种加速技术的同时对外提供多个等级的加速服务,以平衡模型推理时间和精度,一方面可以最大限度的减小模型在端上部署的延时,另一方面可以匹配更广泛的使用场景。

EasyEdge支持多种不同类型深度学习模型的部署,包括常见的模型类型包括图像分类、检测、分割以及部分人脸检测、姿态估计。目前EasyEdge支持的经典网络种类超过60种以及多种自定义的网络类型。

同时EasyEdge支持接入多种深度学习框架,包括飞桨PaddlePaddle、Pytorch、Tensorflow、MxNet等。为了更方便的实现部署,目前EasyEdge支持部分深度学习框架模型的互转换,如图1所示。例如用户想要在Intel的CPU上使用OpenVINO部署一个Pytorch模型,EasyEdge可以实现经过多次模型转换,将torch模型格式转换成OpenVINO IR格式,最后基于OpenVINO部署框架完成模型部署。

图1 EasyEdge支持多种模型框架转换

EasyEdge对于端设备的支持也是很广泛的,既支持常见的通用芯片CPU、GPU以及通用arm设备,也支持市面上主流的专用芯片,如Intel Movidius系列,海思NNIE等,如图2所示,EasyEdge目前已建设为业界适配最广泛的端与边缘服务平台。

图2 EasyEdge支持多种硬件设备部署

解析EasyEdge中的模型压缩技术

为了能实现多种网络在不同芯片的高效部署,EasyEdge后台提供了多种优化操作,如模型格式转换、图优化、芯片优化、模型低精度计算优化、模型裁剪和蒸馏等。其中模型压缩技术是至关重要的一环,EasyEdge中用到的模型压缩技术包括常见的模型低精度计算,结构化裁剪以及模型蒸馏等。如图3所示,为了更好的适配端设备,EasyEdge 集成了多种模型压缩库,可根据实际部署情况灵活调用。

图3 EasyEdge中的模型压缩技术

模型低精度计算旨在通过少量的比特去表示原本32bit的浮点数据。一方面是为了压缩模型体积大小,对于较大的模型可以使端侧设备更快地将模型load到内存中,减小IO时延,另一方面,通常处理器对于定点的计算能力会强于浮点,因此量化后的模型往往可以被更快的推理计算。如图4所示,分布不规则的浮点数据被量化到少数几个定点。EasyEdge支持包括常见低精度类型包括FP16和INT8,其中INT8量化技术能提供最大限度的无损压缩。

图4 模型量化[1]

INT8量化技术的实现方法大致分为两种,训练后量化和训练中量化。顾名思义训练后量化就是在已经训练好的FP32模型中插入量化节点,通过统计学方法尽可能通过少量定点数去还原原来的浮点数据,而训练中量化会在训练之前就插入模拟量化节点,在训练过程中就模拟量化后的数据去计算各个节点的output,这样模型最终会拟合收敛到模型量化后最优。如图5所示。相比之下训练中量化具有更好的精度,但是需要耗费更长的时间。

图5 训练量化原理[2]

EasyEdge同时具备训练中量化和离线训练量化的能力,并且会根据不同的实际情况选择不一样的量化方法。深度学习模型中,分类模型最终一般会以计算最终Layer的topK最为最终的输出结果,这种性质就决定了模型更注重最终输出的排序关系而非数值本身的大小,因此分类模型相比于基于数值回归的检测模型具有更强的量化鲁棒性。基于这一点,EasyEdge的量化策略会根据模型类型灵活调整,在分类相关任务中会倾向于使用离线量化技术,以缩短发布时长,而基于anchor回归的一系列检测模型中则更倾向于通过再训练来保证精度。另一方面,根据端侧设备、部署框架不同,EasyEdge采取的量化策略也会有所区别。例如在使用PaddleFluid框架将模型部署到CPU上时,较敏感的OP在量化之后会极大的影响最终精度,因此在EasyEdge中这些OP的输入输出数据类型采用FP32,而其余OP的计算会采用INT8。这种Layer级别的混合精度量化策略可以很好的平衡推理速度和精度。

在离线量化过程中,会出现部分outlier数据点距离中心分布太远的情况,这会导致传统的量化策略会过大的预估量化range,而导致最终量化精度较低,如图13所示。为了应对这种情况,EasyEdge集成了后校准技术,通过多次迭代以寻找更合适的阈值,使量化后INT8数据分布和量化前FP32数据分布具有最小的KL散度,以此来降低量化误差。

模型裁剪通常指的是结构化裁剪。结构化裁剪是通道级别的裁剪,如图6所示,旨在删除多余的计算通道。

图6 模型结构化裁剪[3]

对于某一个卷积核的裁剪,如图7所示,在中间的kernel同时裁剪掉input和output的一个通道时,其输入输出tensor对应的通道将减小,这带来两方面好处,一方面是在减小卷积核大小之后,模型体积得以减小,减少了推理过程中的IO时间,另一方面tensor本身体积被压缩,因此相比压缩之前只需要更少的内存开销。

EasyEdge目前采取的就是这种通道裁剪技术。同时在裁剪通道的选择上,封装了基于L1-norm、L2-norm和FPGM[8]等多种方法,并且会根据实际情况灵活选择。另一方面,裁剪后的模型由于更改了部分Layer的shape,因此可能会影响到网络拓扑结构的合理性,EasyEdge平台集成了通道调整方法,实现通过广度优先查找算法,逐个矫正通道数,并且对于部分特殊难以调整的block会配置跳过,保证裁剪算法的合理性。

图7 针对一个卷积核的结构化裁剪[4]

对于部分模型的裁剪,EasyEdge采用通道敏感度分析技术,通过在每个Layer上多次裁剪推理计算最终精度损失来分析各个Layer对于通道裁剪的敏感度。另一方面,EasyEdge还集成了Layer级别的配置裁剪策略,通过阈值过滤的方法,在相同压缩率目标下,尽可能多的保留更敏感的层,以达到最小的精度影响。举个例子,如图8所示,一个ResNet50网络中,通过敏感度分析得出结论,起始层和终止层对裁剪更敏感,因此实施更低的裁剪率,而中间层具有更多的冗余,因此采用更高的裁剪率。

不仅如此,EasyEdge在上层融合了一些简单的超参搜索的技术,一方面需要尽可能保留敏感Layer的参数信息,另一方面需要找出最匹配设定压缩率的模型。例如一个120M大小的模型,在配置裁剪率为50%的时候,可以精确裁剪到60M左右,这种技术使EasyEdge平台在模型压缩层面可以提供更差异化的服务。

图8 基于敏感度的裁剪,精准的裁剪率控制[5]

对于部分模型的加速,EasyEdge使用了基于Hinton[9]的蒸馏技术。模型蒸馏的目的是利用大模型学习到的知识去调教更小的模型,目的是为了让小模型的精度能够逼近大模型的精度。如图9所示,一般蒸馏的方法是在同一个session中,将大模型的某些层输出和小模型的部分输出以一定的形式关联,这样在训练小模型的过程中,大模型所学到的知识会作用于小模型的梯度反向传播,促进小模型的收敛。

图9 知识蒸馏功能[6]

 本次新上功能,主要功能基于模型压缩框架PaddleSlim开发,EasyEdge平台基于其中的压缩功能做了进一步的封装和优化。想了解更多相关信息可以登录github搜索PaddleSlim。

(在CPU GPU ARM上的加速效果展示,最后总结下模型压缩效)我们分别在三种最常用的端设备,即CPU、GPU和ARM上发布了超高精度检测模型,具体设备型号如下:

CPU: Intel® Xeon® Processor E5-2630 v4

GPU: NVIDIA Tesla V100

ARM: Firefly-RK3399

如图10所示,其中直方图中acc1-acc3分别代表不同加速等级,加速等级越高模型被裁剪的通道数越多,纵坐标是网络对单张图片的推理延时。可以观察到EasyEdge的模型压缩能力在三种端上速度收益都很明显,直观上看通用CPU上加速效果最好,可以达到超过一倍的速度提升,这也跟EasyEdge平台在不同端设备上采取的加速方法相关,当多种加速技术同时使用时会取得较大的提升。其中GPU本身拥有更强的算力,因此减小FLOPS对于GPU的加速效果而言略弱于CPU和通用ARM。

图10 不同端设备上的加速情况

那么接下来对比一下同一个硬件设备上,不同类型的模型的加速效果。我们实验了几种不同精度的模型在Jetson (jetson4.4-xavier)上的推理效果,包括MobileNetv1-SSD、MobileNetv1-YOLOv3和YOLOv3。如图11所示,acc1-acc3的含义同上,总体来说,新上的模型压缩功能在牺牲少量精度的情况下最多可以获得40%左右的速度收益,效果明显。另一方面,高性能模型的加速效果相比之下会略差一点,因为高性能模型本身具备一定的加速特质,例如更小的模型体积和更少的FLOPS,因此再提升的空间相比之下更小。

图11 不同的检测模型在Jetson上的推理延时

实际使用过程中具体的速度提升会根据端侧设备和模型类型的不同而有所区别,EasyEdge平台的模型压缩能力在后续迭代中也会持续优化和更新。

现在可以体验一下新功能,在发布模型的时候可以根据自身需求选择合适的加速方案,如图12所示。

图12 EasyEdge提供多种加速方案

发布模型后可以在评测页面观看sdk在端上的推理效果,如图13所示,最快的加速方案伴随着较少的精度损失,可将模型速度提升30%。

图13 EasyEdge提供模型评测功能

EasyEdge的能力也全面集成于飞桨企业版EasyDL和BML中,使用这两大平台,可以一站式完成数据处理、模型训练、服务部署全流程,实现AI模型的高效开发和部署。

近期,飞桨企业版开展【2021万有引力计划】活动,免费送你价值10,000元现金券,可直接用于购买飞桨企业版EasyDL和BML公有云的线上服务,最高可兑换:

  • 6000+ 小时的自定义模型训练时长
  • 590+ 小时的脚本调参
  • 公有云部署 400+ 小时配额
  • 或者兑换 50 个设备端的 SDK

名额有限,立刻领取:https://ai.baidu.com/easydl/universal-gravitation

[1] Fang J, Shafiee A, Abdel-Aziz H, et al. Near-lossless post-training quantization of deep neural networks via a piecewise linear approximation[J]. arXiv preprint arXiv:2002.00104, 2020.

[2] Jacob B, Kligys S, Chen B, et al. Quantization and training of neural networks for efficient integer-arithmetic-only inference[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2704-2713.

[3] Han S, Pool J, Tran J, et al. Learning both weights and connections for efficient neural networks[J]. arXiv preprint arXiv:1506.02626, 2015.

[4] Li H, Kadav A, Durdanovic I, et al. Pruning filters for efficient convnets[J]. arXiv preprint arXiv:1608.08710, 2016.

[5] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

[6] Gou J, Yu B, Maybank S J, et al. Knowledge distillation: A survey[J]. International Journal of Computer Vision, 2021, 129(6): 1789-1819.

[7] Wu H, Judd P, Zhang X, et al. Integer quantization for deep learning inference: Principles and empirical evaluation[J]. arXiv preprint arXiv:2004.09602, 2020.

[8] He Y, Liu P, Wang Z, et al. Filter pruning via geometric median for deep convolutional neural networks acceleration[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 4340-4349.

[9] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015.

百度AI开发者社区https://ai.baidu.com/forum ,为全国各地开发者提供一个交流、分享、答疑解惑的平台,让开发者在研发路上不再“孤军奋战”,通过不断地交流与探讨找出更好的技术解决方案。如果你想尝试各种人工智能技术、开拓应用场景,赶快加入百度AI社区,你对 AI 的所有畅想,在这里都可以实现!

扫描下方二维码,添加小助手微信「京东卡、小度定制周边、神秘礼盒、行李箱」等更多福利你来拿~

萌新必看——10种客户端存储哪家强,一文读尽!

...服务,赋能开发者。数据持久数据持久指将内存中的数据模型转化为存储模型,和将存储模型转化为内存中的数据模型这一过程的统称。在普通情况下,我们存储的数据会一直保留,直到我们删除相关内容;或者是这些数据保存... 查看详情

模型推理一文看懂winograd卷积加速算法(代码片段)

...篇卷积加速相关的文章,感兴趣的同学可以查阅《【模型推理】一文看懂Img2Col卷积加速算法》、《【模型推理】一文看懂GoogleTPU脉动阵列加速卷积计算原理》、《【模型推理】谈谈为什么 查看详情

中国开源项目哪家强?看看阿里,百度,腾讯,360等都开...

奇虎360开源github地址:https://github.com/Qihoo3601.MySQL中间层AtlasAtlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy0.8.2版本的基础上,修改了大量bug,添加了很多功能... 查看详情

压缩代码哪家强

...个图形就有相应效果)吃精了一下。 那么,压缩代码哪家强,试了就知道咯。(顺便也笔记一波在线工具网站)http://tool.lu/http://tool.oschina.net/htt 查看详情

互联网公司年终奖哪家强?都是土豪啊

一个以前在易迅上班的同学,去年被变成京东员工了。这不,年关将至向我诉苦,没得年终奖拿,标准13薪……大家都知道腾讯过去的年终奖但是出了名的土豪,只是也仅限于游戏团队,LOL团队拿60个月工资年终奖那年,微信团... 查看详情

体验百度easyedge,畅快部署超多ai芯片

深度学习经过多年发展,AI已经深入人心,事实上,在图像、文本领域,AI在多个产业已经落地了诸多应用,我们熟知的自动驾驶、语音助手,背后就大量运用了AI技术。 当下,PaddlePaddle、TensorFlow、PyTo... 查看详情

存储业务哪家强?(分为个人,企业,要紧与不要紧)

谈谈鄙人对个人云存储业务的看法吧,也希望各位网民理性对待和使用。为何今年个人存储大片关闭,说是政策原理过于片面了,其实政策原因是有的,因为要审查和打击,提高了供应商的运营成本;但最关键是可不是这,主要... 查看详情

深度学习模型压缩与加速

模型压缩与加速前言加速网络的设计分组卷积分解卷积BottleNeck结构神经网络搜索模型剪枝核稀疏化量化操作前言压缩与加速对于深度学习模型的端侧部署至关重要,但假设你的模型部署在服务端,模型的压缩与加速显得... 查看详情

中国虚拟人哪家强?沙利文idc:小冰百度商汤位列第一梯队

金磊整理自凹非寺量子位|公众号QbitAI随着高考成绩张榜,人工智能再度引发热议,各路AI数字人大显身手。从写高考作文,到轻松拿下各类文综理综考题,数字人在高考试卷上大杀四方。不过,外行看热闹ÿ... 查看详情

模型推理一文看懂googletpu脉动阵列加速卷积计算原理

 本教程详细解释了GoogleTPU脉动阵列加速卷积计算原理。 TPU中计算卷积的方式和GPU不同,主要是依靠一种称为“脉动阵列”的硬件电路结构来实现的。脉动阵列的主体部分是一个二维的滑动阵列,其中每一个节点都是... 查看详情

51cto学院三周年学it技术哪家强

  我要去蓝翔学挖掘机、新东方学厨师、51CTO学计算机,未来用电脑控制挖掘机炒菜  2015-3-29日,是我与51CTO初识的日子。  那时候,工资5K,正在深圳这样的大环境下夹缝求生。想加工资,想跳槽,可是拿不... 查看详情

51cto学院三周年学it技术哪家强

  我要去蓝翔学挖掘机、新东方学厨师、51CTO学计算机,未来用电脑控制挖掘机炒菜  2015-3-29日,是我与51CTO初识的日子。  那时候,工资5K,正在深圳这样的大环境下夹缝求生。想加工资,想跳槽,可是拿不... 查看详情

#51cto学院四周年#学it技术哪家强

我要去蓝翔学挖掘机、新东方学厨师、51CTO学计算机,未来用电脑控制挖掘机炒菜!  2015-3-29日,是我与51CTO初识的日子。那时候,毕业一年,工资5K,正在深圳这样的大环境下夹缝求生。想加工资,想跳槽,可是拿不出实... 查看详情

一文了解预训练相关加速技巧(代码片段)

...OneFlow等开源训练工具。2.deepspeed介绍deepspeed是微软开源的模型训练框架.主要有流水线并行,以及ZeRO内存优化技术等.2.13D并行性:扩展到万亿参数模型数据并行训练、模型并行训练和流水线并行训练2.1.1数据并行最常见的DNN并... 查看详情

自然语言处理哪家强?

自然语言处理哪家强? 摘要:语音交互事关未来,这点从大公司收购、投资、合作不断,就可见一斑。如苹果收购Siri、Novauris、Google收购多项语音识别技术专利、Facebook收购Wit.ai等、Amazon收购Yap……目前,基本上所有的巨头... 查看详情

pat1032.挖掘机技术哪家强

PAT1032.挖掘机技术哪家强为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式:输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给... 查看详情

抗ddos究竟哪家强

十全大补帖,抗DDoS究竟哪家强?摘要:现在DDoS攻击太猛了,可是你知道吗,抗D服务也是很猛的,今天小黑羊来给做个抗D产品大盘点650)this.width=650;"src="https://hiphotos.baidu.com/news/w%3D638/sign=f7ed4bce45a98226b8c12824b283b97a/e824b899a9014c08722fe1... 查看详情

pat乙级1032.挖掘机技术哪家强(20)

1032.挖掘机技术哪家强(20)时间限制200ms内存限制65536kB代码长度限制8000B判题程序Standard作者CHEN,Yue为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式... 查看详情