2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

  • 2021-07-15
  • 本文字数:4811 字

    阅读完需:约 16 分钟

模型端侧加速哪家强?一文揭秘百度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万有引力计划,为企业提供 AI 基金,可用于购买飞桨企业版 EasyDL 和 BML 公有云的线上服务,最高可兑换,6000+ 小时的自定义模型训练时长;590+ 小时的脚本调参;公有云部署 400+ 小时配额;或兑换 50 个设备端的 SDK。

 

注释:


[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.

 

2021-07-15 13:002374
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 567.3 次阅读, 收获喜欢 1978 次。

关注

评论

发布
暂无评论
发现更多内容

毕业总结

流火

华为云专家详解GaussDB(for MySQL)新特性

华为云开发者联盟

数据库 云计算 后端 算子

使用环信提供的uni-app Demo,快速实现一对一单聊

环信

即时通讯 uni-app集成 环信im

独家消息:阿里云悄然推出RPA云电脑,已与多家RPA厂商开放合作

王吉伟频道

阿里云 RPA 无影云电脑 RPA云电脑 RPA+DaaS

从零开始学 MySQL —数据库和数据表操作

C++后台开发

MySQL 数据库 中间件 后端开发 C++开发

StoneDB 为国产数据库添砖加瓦,基于 MySQL 的一体化实时 HTAP 数据库正式开源!

StoneDB

大数据 MySQL 数据库 #数据库 HTAP #开源

重磅披露!上百个重要信息系统被入侵,主机成为重点攻击目标

青藤云安全

网络安全 网络攻击防御

越来越多地使用 SLO 来实现可观测性|DevOps

观测云

可观测性

【6.24-7.1】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

云小课|3种常用Git工作流推荐

华为云开发者联盟

后端 开发 华为云

云服务器ECS夏日省钱秘籍,这次@老用户快来领走

阿里云弹性计算

阿里云 云服务器ECS

宝,运维100+服务器很头疼怎么办?用行云管家!

行云管家

云计算 运维 服务器 云管

架构师毕业总结

凯博无线

单集群1万节点!腾讯云大数据平台TBDS获得分布式批处理平台万节点能力认证

科技热闻

6月刊 | AntDB数据库参与编写《数据库发展研究报告》 亮相信创产业榜单

亚信AntDB数据库

数据库 AntDB 国产数据库

九章云极DataCanvas公司蝉联中国机器学习平台市场TOP 3

九章云极DataCanvas

透过华为军团看科技之变(六):智慧公路

脑极体

毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?

华为云开发者联盟

面试 工作 offer 大厂 毕业

精耕渠道共谋发展 福昕携手伟仕佳杰开展新产品培训大会

联营汇聚

【直播回顾】战码先锋首期8节直播完美落幕,下期敬请期待!

OpenHarmony开发者

Open Harmony

华为发布HCSP-Solution-5G Security人才认证,助力5G安全人才生态建设

极客天地

如何使用物联网低代码平台进行个人设置?

AIRIOT

低代码 物联网 低代码,项目开发

4. 对象映射 - Mapping.Mapstercover

MASA技术团队

C# .net 微软 框架 Framework

博睿数据一体化智能可观测平台入选中国信通院2022年“云原生产品名录”

博睿数据

智能运维 博睿数据 One 智能可观测平台

混沌工程平台 ChaosBlade-Box 新版重磅发布

阿里巴巴云原生

阿里云 分布式 云原生 混沌工程

BlocProvider 为什么感觉和 Provider 很相似?

岛上码农

flutter ios 安卓 移动端开发 7月月更

AirServer2022最新版功能介绍及下载

茶色酒

AirServer AirServer2022

K8S 应用部署

kubenetes

实例讲解将Graph Explorer搬上JupyterLab

华为云开发者联盟

人工智能 GES

嗨 FUN 一夏,与 StarRocks 一起玩转 SQL Planner!

StarRocks

sql 大数据 数据库·

linux下清理系统缓存并释放内存

入门小站

Linux

模型端侧加速哪家强?一文揭秘百度EasyEdge平台技术内核_AI&大模型_百度飞桨团队_InfoQ精选文章