百度深度学习平台飞桨( PaddlePaddle )再放大招!端侧推理引擎全新升级,重磅发布 Paddle Lite ,旨在推动人工智能应用在端侧更好落地。该推理引擎在多硬件、多平台以及硬件混合调度的支持上更加完备,是飞桨在 Paddle Mobile 的基础上进行的一次大规模升级迭代。通过对底层架构设计的改进,扩展性和兼容性等方面实现显著提升。目前, Paddle Lite 已经支持了 ARM CPU , Mali GPU , Adreno GPU ,华为 NPU 以及 FPGA 等诸多硬件平台,是目前首个支持华为NPU 在线编译的深度学习推理框架。
随着技术进步,手机等移动设备和边缘设备已成为非常重要的本地深度学习载体。然而日趋异构化的硬件平台和复杂的终端侧的使用状况,让端侧推理引擎的架构能力颇受挑战。端侧模型的推理往往还面临着严苛的算力和内存的限制。
为了能够更完善地支持众多的硬件架构,并且实现在这些硬件之上深度学习模型性能的极致优化,百度飞桨基于 Paddle Mobile 预测库,融合 Anakin 等多个相关项目的技术优势,全新发布端侧推理引擎 Paddle Lite 。通过全新架构高扩展性和高灵活度地建模底层计算模式,加强了多种硬件支持、混合调度执行和底层实现的深度优化,更好满足人工智能应用落地不同场景。
此次升级发布, Paddle Lite 对应着架构的重大升级,在多硬件、多平台以及硬件混合调度的支持上更加完备。
不仅涵盖 ARM CPU 、 Mali GPU 、 Adreno GPU 、华为 NPU 等移动端芯片,也支持 FPGA 等边缘设备常用硬件,并具备可兼容支持云端主流芯片的能力。
Paddle Lite 还是首个华为 NPU 在线编译的深度学习推理框架。更早之前,百度和华为宣布在 AI 开发者大会上强强联手。
Paddle Lite 支持范围更广的 AI 硬件终端,增强了部署的普适性,并且具备明显的性能优势。
Paddle Lite 五大特性
Paddle Lite 一共有五大特性:高扩展性、训练推理无缝衔接、通用性、高性能和轻量化。
1.高扩展性
新架构对硬件抽象描述能力更强,可容易地在一套框架下对新硬件进行集成,具有非常好的扩展性。例如,对于 FPGA 的扩展支持变得非常简单。
此外,参考了 LLVM 的 Type System 和 MIR ( Machine IR ),可以模块化地对硬件和模型进行更细致的分析和优化,可以更便捷高效地扩展优化策略,提供无限可能。目前,已经支持21种 Pass 优化策略,涵盖硬件计算模式混合调度、INT8 量化、算子融合、冗余计算裁剪等不同种类的优化。
2.训练推理无缝衔接
不同于其他一些独立的推理引擎, Paddle Lite 依托飞桨训练框架及其对应的丰富完整的算子库,底层算子的计算逻辑与训练严格一致,模型完全兼容无风险,并可快速支持更多模型。
和飞桨的 PaddleSlim 模型压缩工具打通,直接支持 INT8 量化训练的模型,并可获得比离线量化更佳的精度。
3.通用性
官方发布18个模型的 benchmark ,涵盖图像分类、检测、分割及图像文字识别等领域,对应80个算子 Op +85个 Kernel,相关算子可以通用支持其他模型。
兼容支持其他框架训练的模型,对于 Caffe 和 TensorFlow 训练的模型,可以通过配套的 X2Paddle 工具转换之后进行推理预测。
支持多硬件,目前已支持的包括 ARM CPU , Mali GPU 、 Adreno GPU 、华为 NPU 、 FPGA 等,正在优化支持的有寒武纪、比特大陆等 AI 芯片,未来还会支持其他更多的硬件。
此外,还提供 Web 前端开发接口,支持 Java 调用 GPU ,可在网页端快捷运行深度学习模型。
4.高性能
在 ARM CPU 上,性能表现优异。针对不同微架构,进行了 kernel 的深度优化,在主流移动端模型上,展现出了速度优势。
此外,支持 INT8 量化计算,通过框架层的优化设计和底层高效的量化计算实现,结合 PaddleSlim 模型压缩工具 中 INT8 量化训练功能,可以提供高精度高性能的预测能力。
在华为 NPU , FPGA 上也有很好的性能表现。
5.轻量化
针对端侧设备特点进行深度定制及优化,无任何第三方依赖。整个推理过程分为模型加载解析、计算图的优化分析及设备上的高效运行。移动端可以直接部署经过优化分析的图,执行预测。
Android 平台上 , ARMV7 动态库只需要800k, ARMV8 动态库仅有1.3M,也可以根据需要,进行更深度的剪裁。
目前, Paddle Lite 及其前身的相关技术,已经在百度 App 、百度地图、百度网盘和自动驾驶等产品大规模使用。
比如百度 App 新近推出实时动态多目标识别功能,把原来云端200多层的视觉算法模型优化到10几层,实现100ms 以内识别物体,8ms 内做出物体位置追踪更新。
相比之下,人类肉眼识别物体,一般需要170ms 到400ms ,追踪物体刷新需要40ms 左右,这意味着其识别速度已经超过了人眼。
而实现这一切,正是得益于 Paddle Lite 强大的端侧推理能力,能够完美承担飞桨在多硬件平台上的高效部署,并实现了模型应用的极致性能优化。
全新架构详解
Paddle Lite 的架构有一系列自主研发技术,整合了百度内部多个预测库架构优势能力,并重点增加了多种计算模式(硬件、量化方法、 Data Layout )混合调度的完备性设计,新架构设计如下:
其中最上面一层是模型层,直接接受 Paddle 训练的模型,通过模型优化工具转化为 NaiveBuffer 特殊格式,以便更好地适应移动端的部署场景。
第二层是程序层,是 operator 序列构成的执行程序。
第三层是一个完整的分析模块,包括了 MIR ( Machine IR ) 相关模块,能够对原有的模型的计算图针对具体的硬件列表进行算子融合、计算裁剪在内的多种优化。
不同于飞桨训练过程中的 IR ( Internal Representation ),硬件和执行信息也在这一层加入到分析中。
最底层是执行层,也就是一个 Kernel 序列构成的 Runtime Program 。执行层的框架调度框架极低,只涉及到 Kernel 的执行,且可以单独部署,以支持极致的轻量级部署。
整体上来看,不仅着重考虑了对多硬件和平台的支持,而且也强化了多个硬件在一个模型中混合执行的能力、多个层面的性能优化处理,以及对端侧应用的轻量化设计。
助力中国 AI 生态发展
飞桨( PaddlePaddle )的进化,不仅仅只是一个简单的产品升级。
飞桨框架本着更加开放的态度建立众多硬件厂商深度合作,必将极大的加速 AI 技术工业化生产落地的进程,飞桨及时抓住市场机遇且初见成效。
据百度刚发布的 Q2 财报显示,飞桨的开发者下载量在2019年第二季度环比增加了45%。
作为目前最流行的国产机器学习框架,飞桨推出 Paddle Lite ,投入大量精力解决国内 AI 硬件应用范围小、开发困难的局面。
端侧推理引擎在人工智能应用落地环节有着重要影响,直接关系到用户的体验,在自动驾驶等人工智能应用领域,端侧推理引擎甚至关乎用户的生命财产安全。百度飞桨推出 Paddle Lite 对端侧推理引擎性能进行大幅优化提升,对于人能智能应用的落地起到关键的推动作用。未来, Paddle Lite 将支持更多硬件,覆盖更广泛的应用领域。
传送门
关于本次发布的 Paddle Lite ,重点功能升级汇总如下:
1、架构重大升级,通过添加 Machine IR 、 Type System 、轻量级 Operator 和 Kernel 等,增加了通用多平台和多硬件支持,多 precision 和 data layout 混合调度执行,动态优化,轻量级部署等重要特性。
2、完善了 Java API ,与 C++ API 一一对应。
3、新增 NaiveBuffer 模型存储格式,移动端部署与 protobuf 解耦,使预测库尺寸更小。
4、通过 X2Paddle 支持 Caffe 和 TensorFlow 模型的预测,目前官方验证6种模型转化支持。
5、新增对华为海思 NPU 的深度支持,成为首个支持华为 NPU 在线编译的框架,已验证。
6、支持 FPGA ,已验证 ResNet50 模型。
7、对于 Mali GPU 和 Adreno GPU,支持 OpenCL 和 ARM CPU Kernel 混合调度,已验证了在 MobileNetV1 、 MobileNetV2 、 ResNet-50 等模型上的效果。
8、对于 ARM 架构的 CPU , Paddle Lite 增加了对 vgg-16 、 EfficientNet-b0 、 ResNet-18 等常见模型的支持验证。
9、新增各类硬件 Kernel 70种。