近年来,深度学习技术在诸多畛域大放异彩,因而广受学术界和工业界的青眼。随着深度学习的倒退,神经网络构造变得越来越简单。简单的模型诚然具备更好的性能,然而高额的存储空间与计算资源耗费使其难以无效地利用在各硬件平台上。因而深度学习模型在端上部署和减速成为了学术界和工业界都重点关注的钻研畛域。
一方面,有许多深度学习框架能够让开发者和研究者用于设计模型,每个框架具备各自独特的网络结构定义和模型保留格局。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/u...
[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.