今年 8 月,飞桨(PaddlePaddle)对外发布面向终端和边缘设备的端侧推理引擎 Paddle Lite Beta 版。经过近两个多月的迭代和发展,2019 Wave Summit+ 深度学习开发者峰会上 Paddle Lite 2.0 正式版发布。
Paddle Lite 的 Github 链接:
https://github.com/PaddlePaddle/Paddle-Lite
飞桨团队也透露,将在今年内继续推进若干小版本的升级,并期待和欢迎开发者加入社区并给出反馈。
在 AI 技术落地中,推理阶段与实际应用相关联,直接关系到用户的体验,是非常具有挑战性的一环。
图 1 典型端侧 AI 应用部署场景
Paddle Lite 是飞桨产品栈中用于端侧高性能轻量化 AI 应用部署的推理引擎,核心用途是将训练出的模型在不同硬件平台场景下快速部署,根据输入数据,执行预测推理得到计算结果,支持实际的业务应用。
图 2 Paddle Lite 功能定位
Paddle lite 自 Beta 版发布以来,在如下核心功能上进行升级:
多框架支持:原生支持 PaddlePaddle 的模型,同时通过 X2Paddle 工具,提供对 TensorFlow,PyTorch 和 ONNX 模型格式的更充分的支持;
多硬件支持:除了 ARM CPU、移动端 GPU、华为 NPU,新增支持 Nvidia GPU 和 X86 CPU;
更好的性能:更新 benchmark,提升了在 ARM CPU 上尤其是 int8 的性能;
更加完备的功能:支持 python API,优化编译流程,新增预测库极致裁剪等功能;
更加完善的文档和 demo:提供完善的文档和多平台的 demo,包括安卓、iOS 和树莓派等。
多框架支持
Paddle Lite 不仅可以支持 Paddle 格式模型,也支持 Caffe, TensorFlow, ONNX 等第三方格式的模型,详情可以参考 X2Paddle。官方已经验证如下主流模型的适配情况:
除了上述主流模型以外,
ARM CPU FP32 新增如下 3 个模型支持:
transformer
facebox
blazeface
ARM CPU INT8 量化预测支持如下模型:
shufflenetv2
mobilenet-ssd
vgg16
googlenet
mobilenetv1
mobilenetv2
Resnet50
多硬件支持
在 v2.0 版本中,Paddle Lite 新增 Nvidia GPU 和 X86 CPU 两大类硬件支持。
Nvidia GPU 方面,为了充分利用 GPU 的高性能,Paddle Lite 用 CUDA 相关软件栈开发了对应的 Kernel,支持 Nvidia 多类 GPU 硬件,比如服务器端的 P4、T4,以及嵌入式端的 Jetson TX2、TX1、Nano 等。
目前 CUDA GPU 支持如下三种模型:
Yolov3
Alexnet
Unet
在 X86 CPU 方面,Paddle Lite 增加了 MKL 相关 Kernel,目前能够驱动 inception v4, googlenet, resnet50 等 3 个模型的高效执行,相应算子对其他多数 CV 类模型具有普适性。
更好的性能
ARM CPU (v7,v8) 上 float32 和 int8 两种计算模式的预测性能均得到提升(见图 3,图 4),详情可以参考最新的Benchmark。
图 3
图 4
测试条件:batchsize=1,单线程
更加完备的功能
支持 python API
为了简化 ARM Linux 相关硬件上的预测部署,Paddle Lite 增加了 Python API 的预测接口,目前在树莓派和 Jetson TX2 等卡上做了应用验证。
优化编译流程
Paddle Lite 支持两种模式的编译:
tiny_publish:用于对部署体积有严格要求的平台,对应 MobileConfig 预测接口。
full_publish:用于对部署体积无要求的平台,使用简便,对应 CxxConfig 预测接口。
编译方面,除了 docker 以外,新增了 Linux(推荐 Ubuntu)、Mac 等编译平台的支持,并且修复了编译(full_publish)时下载 git submodule 缓慢的问题。
在统一的编译脚本下,目前支持:
android ARM CPU, GPU
IOS
X86
NV GPU/CUDA
Huawei NPU
ARM Linux
等硬件平台的预测库编译。
预测库极致裁剪
Paddle Lite 对现有移动端预测库进行了进一步压缩,ARM V8 so 从 1.4M 降到 1.3M;此外,还发布了根据单个模型做定制裁剪的功能,即生成一个只包含该模型必需算子的预测库,效果如下图所示:
图 5
更加完善的文档和 DEMO
完善文档内容,主要包括
为了实际地展示 Paddle Lite 的部署能力,Paddle Lite 增加了 Paddle-Lite-Demo GitHub 官方 DEMO 库,目前包含
Android ARM CPU
Android Huawei NPU
IOS ARM CPU
ARM Linux 树莓派
等多种平台,包括分类、检测等模型的功能演示。
以 ARM Linux 树莓派为例,Paddle Lite 驱动树莓派 3B 调用摄像头进行识别任务,整体效果如图 6 所示:
图 6
详情请参考树莓派摄像头的购买、安装、配置与验证(以树莓派3B为例)。
如果您想了解更多关于 Paddle Lite 的相关内容,请参阅以下文档。
Paddle Lite 的 Github 链接:
https://github.com/PaddlePaddle/Paddle-Lite
Paddle Lite 的 Github 链接:
https://github.com/PaddlePaddle/Paddle-Lite
Paddle Lite 的文档链接:
https://paddlepaddle.github.io/Paddle-Lite/
Paddle Lite Demo 的链接:
https://github.com/PaddlePaddle/Paddle-Lite-Demo
PaddlePaddle 的 Github 链接:
https://github.com/paddlepaddle
评论