乐趣区

关于百度:模型端侧加速哪家强一文揭秘百度EasyEdge平台技术内核

近年来,深度学习技术在诸多畛域大放异彩,因而广受学术界和工业界的青眼。随着深度学习的倒退,神经网络构造变得越来越简单。简单的模型诚然具备更好的性能,然而高额的存储空间与计算资源耗费使其难以无效地利用在各硬件平台上。因而深度学习模型在端上部署和减速成为了学术界和工业界都重点关注的钻研畛域。

一方面,有许多深度学习框架能够让开发者和研究者用于设计模型,每个框架具备各自独特的网络结构定义和模型保留格局。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.

退出移动版