写点什么

多框架、多硬件支持,端侧推理引擎 Paddle Lite 2.0 正式发布

2019 年 11 月 08 日

多框架、多硬件支持,端侧推理引擎Paddle Lite 2.0 正式发布

今年 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。官方已经验证如下主流模型的适配情况:


模型paddlecaffetensorflowonnx
mobilenetv1YYY
mobilenetv2YYYY
resnet18YYY
resnet50YYYY
mnasnetYYY
efficientnetYYYY
squeezenetv1.1YYY
shufflenetYYY
mobilenet_ssdYYY
mobilenet_yolov3YY
inceptionv4Y
mtcnnYYY
facedetectionYY
unetYYY
ocr_attentionY
vgg16Y


除了上述主流模型以外,


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 支持两种模式的编译:


  1. tiny_publish:用于对部署体积有严格要求的平台,对应 MobileConfig 预测接口。

  2. 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


完善文档内容,主要包括


  • 增加支持硬件的列表,参考 here

  • 增加根据模型裁剪算子的方法,参考here

  • 更新最新 Benchmark,参考 here


为了实际地展示 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


  1. Paddle Lite的Github链接:


https://github.com/PaddlePaddle/Paddle-Lite


  1. Paddle Lite的文档链接:


https://paddlepaddle.github.io/Paddle-Lite/


  1. Paddle Lite Demo的链接:


https://github.com/PaddlePaddle/Paddle-Lite-Demo


  1. PaddlePaddle的Github链接:


https://github.com/paddlepaddle


2019 年 11 月 08 日 13:481392

评论

发布
暂无评论
发现更多内容

《TED TALKS演讲的力量》阅读笔记

Jesse Xing

读书笔记 演讲 TED

一不小心画了 24 张图剖析计网应用层协议!

cxuan

计算机网络 计算机 协议

jdk 源码系列之ReentrantLock

sinsy

源码 jdk ReentrantLock 公平锁 非公平锁

完美!阿里P8都赞不绝口的世界独一份489页SQL优化笔记

马士兵老师

Java 数据库 程序员 架构师 SQL优化

Java垃圾回收GC概览

Java JVM GC

anyRTC Flutter SDK :全面实现跨平台音视频互动

anyRTC开发者

音视频 WebRTC RTC sdk 安卓

《精进:如何成为一个很厉害的人》阅读心得

Jesse Xing

读书笔记 个人成长 精进

从接口异常说说线上问题排查流程

QiyihaoLabs

线上排障 指标监控 链路监控 日志监控 排障流程

Pulsar Summit Asia 2020 中文专场议题出炉!

Apache Pulsar

大数据 开源 Apache Pulsar

面试前不陪女朋友也要看完这套spring源码面试题(附答案)

小Q

Java 学习 编程 架构 面试

《乌合之众——群体心理研究》读书笔记

Jesse Xing

读书笔记 心理学 乌合之众 群体心理学

算法有多重要,看字节腾讯等公司面试多重视就行了

小Q

Java 学习 架构 面试 算法

Android网络性能监控方案

应用研发平台EMAS

android 性能 监控 移动开发 应用

非线性声学回声如何破解?华为云硬核技术为你解决

华为云开发者社区

算法 音视频 音视频算法

搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目

yi念之间

接口测试的时候如何生成随机数据进行测试

测试人生路

接口测试

数字货币交易所开发源码,场外币币交易平台搭建

WX13823153201

数字货币交易所开发

TCP性能分析与调优策略

云流

程序员 计算机网络 网络协议

音像协呼吁保护音乐版权:短视频平台成为侵权重灾区

石头IT视角

京东技术中台Flutter实践之路(二)

京东智联云开发者

开源 中台 大前端 Web UI

初级工程师职场生存要点

javaadu

程序员 职场成长 开发日志

神经网络之dropout总述

Dreamer

学习

18张图,揭开阿里巴巴开发手册强制使用SLF4J作为门面担当的秘密

沉默王二

Java slf4j 日志系统

把最新JAVA面试真题(阿里/字节跳动/美团)整理出来,却被自己菜哭了,赶紧去刷题了

Java架构追梦

Java 阿里巴巴 架构 面试 面试题

IPFS云算力挖矿系统开发技术

薇電13242772558

区块链 IPFS

当代开发者的六大真实现状,你被哪一个场景“戳中”了?

华为云开发者社区

开发者 调研 报告

不会这些mysql得面试题,那可能说明你要回炉了

小Q

Java MySQL 数据库 学习 面试

架构师训练营 - 第七周 - 作业一

行者

JMeter100个线程竟然只模拟出1个并发

dongfanger

软件测试 Jmeter 性能测试 压力测试 测试工具

Redis基础—了解Redis是如何做数据持久化的

云流

数据库 redis 编程 计算机

马士兵老师首推Java七条自学路线,自学到底能不能行?自学也能拿到40W年薪?

Java架构追梦

Java 架构 面试 马士兵 项目实战

飞猪Flutter技术演进及业务改造的实践与思考

飞猪Flutter技术演进及业务改造的实践与思考

多框架、多硬件支持,端侧推理引擎Paddle Lite 2.0 正式发布-InfoQ