本期是由百度飞桨资深研发工程师为大家带来飞桨高性能端侧推理引擎Paddle Lite技术解析,敬请观看。
视频关键知识点Notes:
01
背景介绍
近年来,深度学习模型推理部署的场景已经发生了很大的变化,从类别有限的服务器端,到目前碎片化的终端分布,比如智能手表、智能手机、音箱等等。除了终端设备形态本身,硬件架构也迅速发展,有更多移动端的芯片选择,对AI的推理引擎提出了更高的要求。
为了应对这些要求,飞桨孵化出一款高性能端侧推理引擎Paddle Lite,特性是支持多硬件多平台、轻量化部署、方便移动端的上线、还有高性能实现。2019年8月份初始发布,10月末发布2.0正式版,为开发者提供与百度内部项目相同的能力。
02
基本特性
2.1 多硬件支持
2.2 多平台支持
Paddle Lite 自上而下支持两个层次的多平台支持,一个是上层的多种训练平台支持,除了飞桨训练出的原生模型,还可以通过 X2Paddle 工具将Caffe, TensorFlow, ONNX 等第三方平台的模型转化为飞桨(PaddlePaddle) 的模型格式,从而加载进 Paddle Lite 部署。
2.3 轻量级部署
Paddle Lite把整个架构拆分成了分析和执行两大阶段,分析阶段的一系列功能会作为离线工具,而执行阶段可以单独拆开来部署到移动端。
2.4 高性能实现
Paddle Lite 的实现也是比较高效的,比如在端侧推理非常主流的硬件 ARM CPU上,MobileNetV1 的性能优势明显。
2.5 量化计算支持
量化计算是神经网络计算的趋势。神经网络有信息冗余的特点,即使使用低精度计算也能保证效果,基于这个优点,各硬件平台都通过量化计算来提供更快,功耗体积更有优势的硬件。Paddle Lite 在这方面也有很好的支持。
03
通用硬件平台的架构设计
Paddle Lite 在架构的设计中,重点考虑了相对广泛的多硬件平台支持的能力。首先在Kernel 层,一种算法可以为多个硬件或者实现方法注册多个实现。
3.1 Kernel重载
执行模型,特别在预测时,会在底层转化为一系列OP算子序列,序列会展开成一个Graph静态图,静态图会进一步确定具体分硬件的Kernel。有时候有多种硬件可选,所以可能会有X86 CPU和NV GPU混合执行,这在Paddle Lite来讲是非常容易的。
3.2 类型推导
在一个具体的模型里,多种硬件的Kernel混合执行是类似编译器或编译语言里类型推导的过程。过程中每一步都可以定位到一个Kernel,在每一步Paddle Lite都会做一个类型推导,来确定我们具体需要其选择的硬件的Kernel种类以及它的精度、数据排布能力。
3.3 适度的硬件抽象
Paddle Lite大部分的代码都是Kernel算子具体的实现。算子数量有一百多十个。另外图分析有几十种模块化的分析优化,我们叫Pass。这两个都会随着持续的优化而不断的增加。
04
用户接口及案例
获取模型的方法以下几种:
https://www.paddlepaddle.org.cn/start
https://github.com/PaddlePaddle/models
https://github.com/PaddlePaddle/X2Paddle
https://github.com/PaddlePaddle/models/tree/develop/PaddleSlim
https://github.com/PaddlePaddle/Paddle-Lite-Demo
05
Roadmap
Paddle Lite在10月31日的时候发布了2.0的正式版本,11月底又发布了2.1版本,目前的节奏是每个月会有一个新版本。持续加强的方向包括框架功能强化、硬件支持范围持续增大、整体性能优化、量化部署方案的完善等,未来也会有越来越多的INT8的模型出来。最后是持续增加更多的Demo、代码和文档。
06
附Paddle Lite 2.1版本 Release Notes
重点功能
基础功能升级
性能
编译
文档
Bug 修复
进入网盘获取视频中的PPT,链接:
https://pan.baidu.com/s/1ABDngOHQDoWcl15QLqswng 密码:d43b
本文分享自 PaddlePaddle 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!