本文主要由 9 月 21 日在百度科技园举办的 AI 快车道 Paddle Lite 专场的演讲材料整理而成,分别介绍了 Paddle Lite 的性能特性、使用方法、架构设计等,并且提供了完整的使用案例,可供开发者迅速开展应用。
在技术革新的浪潮下,智能硬件结合人工智能越来越广地进入了我们的生活。小到智能手机、手表,大到智能交通系统、工业自动检测平台等,无不渗透了人工智能的威力。此外,为人工智能深度学习定制的硬件近年来也有井喷之势。人工智能在多种服务平台,多种硬件下得到了越来越多的应用。这里的应用一般指的是深度学习模型在实际场景中的推理计算。虽然硬件的快速发展带来了计算性能的提升,但多样化的硬件平台也给应用开发带来了挑战。同时,对深度学习任务而言,实际应用中的算力和内存的限制仍然显得非常苛刻。
针对多平台多硬件的场景,飞桨(PaddlePaddle)在今年 8 月份升级发布了 Paddle Lite 推理引擎。它支持多种硬件、多种平台,还具备轻量化部署、高性能实现等重要特性。
百度在深度学习推理引擎领域耕耘多年,在 2017 年开始,公司内部就有多个自研推理引擎并各有所长,比如有的主打手机端部署,有的则侧重支持多硬件多平台。2019 年,随着飞桨整体生态的构建,我们将这些推理引擎的技术积累进行了整合,将 Paddle Mobile 品牌升级为 Paddle Lite,旨在支持更广泛硬件平台,在架构和性能上集众家之长,并融入了对硬件和平台支持的最新的思考。8月份我们发布了 Paddle Lite 的 Beta 版本,并于 9 月 22 日发布了 RC 版本。Paddle Lite 是一个开源项目,其所有项目代码在 Github 上维护:
-
仓库地址:https://github.com/PaddlePaddle/Paddle-Lite
-
最新文档地址:https://paddlepaddle.github.io/Paddle-Lite
1. 特性&能力
Paddle Lite 支持如下特性:①多硬件平台支持;②轻量化部署;③高性能实现;④量化计算支持。下面我们一一介绍。
1.1. 多硬件平台支持
目前支持如下 7 种硬件:
-
ARM CPU V7、V8
-
Mali GPU, Adreno GPU, Metal GPU
-
Huawei NPU
-
FPGA
Paddle Lite 自上而下支持两个层次的多平台支持,一个是上层的多种训练平台支持,除了飞桨训练出的原生模型,还可以通过 X2Paddle 工具将 Caffe, TensorFlow, ONNX 等第三方平台的模型转化为 PaddlePaddle 的模型格式,从而加载进 Paddle Lite 部署。X2Paddle 的使用方法非常简单,参考上面命令便可完成相应模型的转化。Paddle Lite 官方测试验证过的模型列表如下。
除了多种训练平台这个层次外,在底层,Paddle Lite 也支持服务器端和移动端两种平台的预测部署。
1.2. 轻量级部署
完善的多硬件平台支持必须至少有如下支持,比如完整的各类硬件后端支持,多份硬件相关算子的实现,计算图详尽的分析和优化能力。这些能力的支持必然带来最终部署库的体积膨胀,难以轻量化部署。
Paddle Lite 针对这个问题,在架构上做了相应的设计:
在具体架构上,由模型加载执行的顺序,严格拆分为分析和执行两个阶段。分析阶段有完整的计算图分析优化的能力(比如算子融合,内存优化等),由于策略较多,体积较大;执行阶段只包含相关算子&#