11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2019-11-08
  • 本文字数:2051 字

    阅读完需:约 7 分钟

多框架、多硬件支持,端侧推理引擎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:481771

评论

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

力扣429 - N叉树的层序遍历【BFS+DFS】

Fire_Shield

LeetCode DFS BFS 9月月更

哈希索引

周杰伦本人

9月月更

Python 教程之数据分析(7)—— Jupyter Notebook 入门

海拥(haiyong.site)

Python 9月月更

全球新兴市场移动应用报告

易观分析

移动应用

Nodejs安装及环境配置

nodejs NVM 9月月更

【JS】防抖与节流---在定义时返回的是回调函数

Sam9029

JavaScript 前端 防抖节流 9月月更

数据治理(十二):Ranger2.1.0源码编译

Lansonli

数据治理 9月月更

Ansible如何使用lookup插件模板化外部数据

山河已无恙

ansible 9月月更

使用 Angular Transfer State 的一个具体例子

Jerry Wang

typescript 前端开发 angular Web Component 9月月更

「趣学前端」前端设计模式学习与应用

叶一一

前端 设计模式 9月月更

HTML笔记3

喜羊羊

9月月更

redis数据类型

想要飞的猪

Java进阶(十三)servlet监听器

No Silver Bullet

Java Servlet 9月月更

C++ 学习 ------cmath 头文件的源码学习 03

桑榆

c++ 源码阅读 9月月更

社招前端二面常见面试题

coder2028

JavaScript 前端

C++学习------cmath头文件的源码学习02

桑榆

c++ 9月月更

计算机网络——OSI参考模型

StackOverflow

编程 计算机网络 9月月更

「工作小记」多个页面的相似操作公共化设计方案

叶一一

前端 设计思维 9月月更

LeetCode-1. 两数之和(java)

bug菌

9月日更 Leet Code 9月月更

LeetCode-861. 翻转矩阵后的得分(Java)

bug菌

9月日更 9月月更

IntelliJ IDEA远程调试Elasticsearch6.1.2

程序员欣宸

elasticsearch 9月月更

学人工智能难吗?怎么用它赚到钱?

felix

人工智能 赚钱 副业赚钱 算法

HTML笔记2

喜羊羊

9月月更

高性能使用索引

周杰伦本人

9月月更

【C语言深度剖析】重点详解函数的形参和实参、传值和传址

Albert Edison

开发语言 传值 C语音 9月月更 传址

库调多了,都忘了最基础的概念 《锁与线程2终结篇》

知识浅谈

线程 9月月更

HTML笔记1

喜羊羊

9月月更

2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,

福大大架构师每日一题

算法 rust 福大大

Python 教程之变量(1)—— 变量、表达式、条件和函数

海拥(haiyong.site)

Python 9月月更

这个中秋,国潮元宇宙的A新玩法是……?

文心大模型

「工作小记」后台系统代码简洁之路-详情页设计

叶一一

前端 设计模式 React Hooks 9月月更

多框架、多硬件支持,端侧推理引擎Paddle Lite 2.0 正式发布_架构_春维_InfoQ精选文章