Lite 预测流程

Lite是一种轻量级、灵活性强、易于扩展的高性能的深度学习预测框架,它可以支持诸如ARM、OpenCL、NPU等等多种终端,同时拥有强大的图优化及预测加速能力。如果您希望将Lite框架集成到自己的项目中,那么只需要如下几步简单操作即可。

workflow

一. 准备模型

Paddle Lite框架直接支持模型结构为PaddlePaddle深度学习框架产出的模型格式。目前PaddlePaddle用于推理的模型是通过save_inference_model这个API保存下来的。 如果您手中的模型是由诸如Caffe、Tensorflow、PyTorch等框架产出的,那么您可以使用 X2Paddle 工具将模型转换为PadddlePaddle格式。

二. 模型优化

Paddle Lite框架拥有优秀的加速、优化策略及实现,包含量化、子图融合、Kernel优选等优化手段。优化后的模型更轻量级,耗费资源更少,并且执行速度也更快。 这些优化通过Paddle Lite提供的opt工具实现。opt工具还可以统计并打印出模型中的算子信息,并判断不同硬件平台下Paddle Lite的支持情况。您获取PaddlePaddle格式的模型之后,一般需要通该opt工具做模型优化。opt工具的下载和使用,请参考 模型优化方法

注意: 为了减少第三方库的依赖、提高Lite预测框架的通用性,在移动端使用Lite API您需要准备Naive Buffer存储格式的模型。

三. 下载或编译

Paddle Lite提供了Android/iOS/X86平台的官方Release预测库下载,我们优先推荐您直接下载 Paddle Lite预编译库。 您也可以根据目标平台选择对应的源码编译方法。Paddle Lite 提供了源码编译脚本,位于 lite/tools/文件夹下,只需要 准备环境调用编译脚本 两个步骤即可一键编译得到目标平台的Paddle Lite预测库。

四. 开发应用程序

Paddle Lite提供了C++、Java、Python三种API,只需简单五步即可完成预测(以C++ API为例):

  1. 声明MobileConfig,设置第二步优化后的模型文件路径,或选择从内存中加载模型

  2. 创建Predictor,调用CreatePaddlePredictor接口,一行代码即可完成引擎初始化

  3. 准备输入,通过predictor->GetInput(i)获取输入变量,并为其指定输入大小和输入值

  4. 执行预测,只需要运行predictor->Run()一行代码,即可使用Lite框架完成预测执行

  5. 获得输出,使用predictor->GetOutput(i)获取输出变量,并通过data<T>取得输出值

Paddle Lite提供了C++、Java、Python三种API的完整使用示例和开发说明文档,您可以参考示例中的说明快速了解使用方法,并集成到您自己的项目中去。

针对不同的硬件平台,Paddle Lite提供了各个平台的完整示例:

您也可以下载以下基于Paddle-Lite开发的预测APK程序,安装到Andriod平台上,先睹为快:

更多测试工具

为了使您更好的了解并使用Lite框架,我们向有进一步使用需求的用户开放了 Debug工具Profile工具。Lite Model Debug Tool可以用来查找Lite框架与PaddlePaddle框架在执行预测时模型中的对应变量值是否有差异,进一步快速定位问题Op,方便复现与排查问题。Profile Monitor Tool可以帮助您了解每个Op的执行时间消耗,其会自动统计Op执行的次数,最长、最短、平均执行时间等等信息,为性能调优做一个基础参考。您可以通过 相关专题 了解更多内容。