caffe不支持relu6_国产AI框架再进化!百度Paddle Lite发布:率先支持华为NPU在线编译,全新架构更多硬件支持...

乾明 边策 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

国产AI框架飞桨刚刚带来新进化:Paddle Lite正式发布!

高扩展、高性能、轻量化,还是首个支持华为NPU在线编译的深度学习端侧推理框架,剑指加大力度攻占移动端侧场景。

而且大环境如此,这样的自主研发基础框架进展,也有了更多的寄寓。

诚意和实力方面也值得称道。针对更广泛、更异构的AI硬件支持,是Paddle Lite的核心亮点之一。

5cbb3d61ba497b16ffb91d29b3572b52.png

此次升级发布,Paddle Lite的架构有了重大升级,在多硬件、多平台以及硬件混合调度的支持上更加完备。

不仅涵盖ARM CPU、Mali GPU、Adreno GPU、华为NPU等移动端芯片,也支持FPGA等边缘设备常用硬件,并具备可兼容支持云端主流芯片的能力。

其中,Paddle Lite还成为了首个华为NPU在线编译的深度学习推理框架。更早之前,百度和华为宣布在AI开发者大会上强强联手。

b401697ceefc0e76713dd1bd6f9aa274.png

值得一提的是,对标Google推出的TensorFlow Lite,升级发布的Paddle Lite更是直接围绕前者不足进行了补强。

官方表示,不仅支持范围更广的AI硬件终端,增强了部署的普适性,并且具备明显的性能优势。

AI框架的竞争,愈加激烈,也进入全新阶段。

何为Paddle Lite?

Paddle Lite,是Paddle Mobile的进化版,是一款主打端侧高性能轻量化部署的推理引擎。

核心用途是将训练出的模型在不同硬件平台场景下快速部署,根据输入数据,执行预测推理得到计算结果,支持实际的业务应用。

在AI技术落地中,推理阶段与实际应用相关联,直接关系到用户的体验,是非常具有挑战性的一环。

b6bc3bb331fc1384ee5b95fe4bc82ad8.png

而更具挑战性的是,当前承载推理的硬件,正日趋异构化。云端、移动端和边缘端对应着各种不同的硬件,底层的芯片架构差异很大。

如何能够完整地支持如此众多的硬件架构,并且实现这些硬件之上人工智能应用性能的优化,实现更快的速度?

Paddle Lite给出的解决方案是:

通过全新架构高扩展性和高灵活度地建模底层计算模式,加强了多种硬件、量化方法、Data Layout 混合调度执行的能力,从而保障了宏观硬件的支持能力,并通过极致的底层优化,实现了领先的模型应用性能效果。

Paddle Lite五大特性

官方介绍,Paddle Lite一共有五大特性:高扩展性、训练推理无缝衔接,通用性、高性能和轻量化。

1、高扩展性。

新架构对硬件抽象描述能力更强,可容易地在一套框架下对新硬件进行集成,具有非常好的扩展性。例如,对于FPGA的扩展支持变得非常简单。

此外,参考了LLVM的Type System和MIR(Machine IR),可以模块化地对硬件和模型进行更细致的分析和优化,可以更便捷高效地扩展优化策略,提供无限可能。

目前,Paddle Lite已经支持21种 Pass 优化策略,涵盖硬件计算模式混合调度、INT8量化、算子融合、冗余计算裁剪等不同种类的优化。

2、训练推理无缝衔接。

不同于其他一些独立的推理引擎,Paddle Lite依托飞桨训练框架及其对应的丰富完整的算子库,底层算子的计算逻辑与训练严格一致,模型完全兼容无风险,并可快速支持更多模型。

和飞桨的PaddleSlim模型压缩工具打通,直接支持INT8量化训练的模型,并可获得比离线量化更佳的精度。

3、通用性。

官方发布18个模型的 benchmark,涵盖图像分类、检测、分割及图像文字识别等领域,对应80个算子Op+85个 Kernel,相关算子可以通用支持其他模型。

70578df9a8a4a341cd449679dc279836.png

而且, 还兼容支持其他框架训练的模型,对于 Caffe 和 TensorFlow训练的模型,可以通过配套的X2Paddle工具转换之后进行推理预测。

现在,Paddle Lite已经与飞桨的PaddleSlim模型压缩工具打通,直接支持INT8量化训练的模型,并可获得比离线量化更佳的精度。

支持多硬件,目前已支持的包括ARM CPU, Mali GPU、Adreno GPU、华为NPU、FPGA等,正在优化支持的有寒武纪、比特大陆等AI芯片,未来还会支持其他更多的硬件。

此外,还提供Web前端开发接口,支持javascript调用GPU,可在网页端快捷运行深度学习模型。

4、高性能。

在ARM CPU上,性能表现优异。针对不同微架构,进行了kernel的深度优化,在主流移动端模型上,展现出了速度优势。

909dbdd37916bf2c14cbd7a60904c092.png

此外,Paddle Lite也支持INT8量化计算,通过框架层的优化设计和底层高效的量化计算实现,结合 PaddleSlim 模型压缩工具 中 INT8量化训练功能,可以提供高精度高性能的预测能力。

5baecacb9a05bf972c5f1160173d7640.png

在华为NPU, FPGA上也有很好的性能表现。

b9207192c11c2b77a835c06ddb94d078.png

5、轻量化。

针对端侧设备特点进行深度定制及优化,无任何第三方依赖。

整个推理过程分为模型加载解析、计算图的优化分析及设备上的高效运行。移动端可以直接部署经过优化分析的图,执行预测。

Android 平台上 ,ARMV7 动态库只需要800k,ARMV8动态库仅有1.3M,也可以根据需要,进行更深度的剪裁。

目前,Paddle Lite及其前身的相关技术,已经在百度App、百度地图、百度网盘和自动驾驶等产品大规模使用。

比如百度App新近推出实时动态多目标识别功能,在Paddle Lite的支持下,把原来云端200多层的视觉算法模型优化到10几层,实现100ms以内识别物体,8ms内做出物体位置追踪更新。

081fdf4194f69f60302f67a89cbc1fba.gif

相比之下,人类肉眼识别物体,一般需要170ms到400ms,追踪物体刷新需要40ms左右,这意味着其识别速度已经超过了人眼。

而实现这一切,正是得益于Paddle Lite强大的端侧推理能力,能够完美承担飞桨在多硬件平台上的高效部署,并实现了模型应用的极致性能优化。

全新架构详解

背靠百度,Paddle Lite的架构有一系列自主研发技术。

据介绍,Paddle Lite参考了百度内部多个预测库架构实现,以及优势能力整合,并重点增加了多种计算模式(硬件、量化方法、Data Layout)混合调度的完备性设计,新架构设计如下:

dc7708e3711d915fab7325b35cc222ca.png

其中最上面一层是模型层,直接接受Paddle训练的模型,通过模型优化工具转化为NaiveBuffer特殊格式,以便更好地适应移动端的部署场景。

第二层是程序层,是operator序列构成的执行程序。

第三层是一个完整的分析模块,包括了 MIR(Machine IR) 相关模块,能够对原有的模型的计算图针对具体的硬件列表进行算子融合、计算裁剪在内的多种优化。

不同于飞桨训练过程中的IR (Internal Representation),硬件和执行信息也在这一层加入到分析中。

最底层是执行层,也就是一个Kernel序列构成的Runtime Program。执行层的框架调度框架极低,只涉及到Kernel 的执行,且可以单独部署,以支持极致的轻量级部署。

整体上来看,不仅着重考虑了对多硬件和平台的支持,而且也强化了多个硬件在一个模型中混合执行的能力、多个层面的性能优化处理,以及对端侧应用的轻量化设计。

国产深度学习框架崛起

飞桨(PaddlePaddle)的进化,不仅仅只是一个简单的产品升级。

放在大趋势与大环境中,意义正在变得不同。

一方面是大趋势。

今年是AI在落地化重要的一年,国内在AI硬件,AI硬件研发,包括百度、阿里、华为等巨头公司都在积极布局AI芯片的设计和制造。

硬件的快速发展并不能弥补软件端的缺失,国外科技巨头已经加快步伐,想要占领这一市场空白地带。

今年的TensorFlow开发者大会上,谷歌已经将在边缘部署AI应用的TensorFlow Lite作为重点,显然这一框架目前并不能很好地适配国内公司开发的各种硬件。

国外科技公司也不会去花大量的精力在诸多不同厂商、不同架构的国产芯片上。于是飞桨看到机遇,并且初见成效。

据百度刚发布的Q2财报显示,飞桨的开发者下载量在2019年第二季度环比增加了45%。

作为目前最流行的国产机器学习框架,飞桨推出Paddle Lite着实花了大量精力解决国内AI硬件应用范围小、开发困难的局面。

另一方面,绕不开的大形势话题。

相比以往,AI发展中的自主研发和无断供之忧,也开始被屡屡谈及。

除了专利、硬件,底层算法框架,在安卓断供华为之后也被抬上桌面。

当前,两大深度学习框架TensorFlow、PyTorch虽然是开源项目,但都在美国公司掌控之下,都可能要“遵守美国法律”。

1754778c1302d5b20f68d27fd684fc9f.png

所以也不是没有“卡脖子”的风险。

之前,该如何发展这样的底层核心技术的话题,各方专家谈了又谈,热切呼吁,但真正变成行动,依然难上加难。

不仅需要时间、人才、资源等各方面的投入,也需要恰当的时机——至少没到积重难返的时候。

于是Paddle Lite的升级,就显得恰逢其时。一来已有积累,二来时机不晚,可以换道超车。

不过,说一千道一万,最终还是上手试试最直接。

话不多说,我们看货、验货:

传送门

关于本次发布的Paddle Lite,重点功能升级汇总如下:

  • 1、架构重大升级,通过添加Machine IR、Type system、轻量级 Operator 和 Kernel 等,增加了通用多平台和多硬件支持,多 precision 和 data layout 混合调度执行,动态优化,轻量级部署等重要特性。

  • 2、完善了Java API,与 C++ API 一一对应。

  • 3、新增NaiveBuffer 模型存储格式,移动端部署与protobuf解耦,使预测库尺寸更小。

  • 4、通过X2Paddle 支持 Caffe 和 TensorFlow 模型的预测,目前官方验证6种模型转化支持。

  • 5、新增对华为海思 NPU 的深度支持,成为首个支持华为NPU在线编译的框架,已验证

  • 6、支持FPGA ,已验证 ResNet50 模型。

  • 7、对于Mali GPU 和 Adreno GPU,支持 OpenCL 和 ARM CPU Kernel混合调度,已验证了在MobileNetV1、MobileNetV2、ResNet-50等模型上的效果。

  • 8、对于ARM架构的CPU,Paddle Lite增加了对vgg-16、EfficientNet-b0、ResNet-18等常见模型的支持验证。

  • 9、新增各类硬件 Kernel 70种。

更多详情:

欢迎加入官方qq群:

d91005e1bd20d40e8620792dd1a9e96c.png

官网地址:
https://www.paddlepaddle.org.cn

项目地址:
https://github.com/PaddlePaddle/Paddle-Lite

直播 | Style-Gan的架构与实现

3d940b50576023bb1ccd14c2b0b090d5.png0a5d512a0d6caba75590cf8f5ddc1eed.png

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 ! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode笔记】1143. 最长公共子序列(Java、动态规划、字符串)

文章目录题目描述思路 & 代码二刷三刷题目描述 算是很高频的面试题了,而且题号还挺后的 思路 & 代码 注意:dp[i]][j] 和 charAt(i) 有1的下标差(dp初始化边界)核心思想:当前值可构成新的最大子串就左上角值…

【LeetCode笔记】139. 单词拆分(Java、动态规划、字符串、哈希表)

文章目录题目描述思路 & 代码二刷更新题目描述 漏网之题。。一个月前写的居然没写博客 思路 & 代码 HashSet 存储 word,便于查询动态规划三要素在注释中思路:如果dp[j] true且[j1,i]可以组成单词,则dp[i] true class Solution…

mysqlfor循环中出错继续_Python学习笔记(循环)

循环语句1. while 循环while语句最基本的形式包括一个位于顶部的布尔表达式&#xff0c;一个或多个属于while代码块的缩进语句。while 布尔表达式:代码块while循环的代码块会一直循环执行&#xff0c;直到布尔表达式的值为布尔假。如果布尔表达式不带有<、>、、&#xff…

bootstrap table格式化字符串_你要的PHP字符串处理函数都在这了!

php中文网最新课程每日17点准时技术干货分享打印输出函数说明echo输出一个或多个字符串print输出字符串printf输出格式化字符串sprintfReturn a formatted stringfprintf将格式化后的字符串写入到流sscanf根据指定格式解析输入的字符vfprintf将格式化字符串写入流vprintf输出格…

【LeetCode笔记】35. 搜索插入位置(Java、二分法)

文章目录题目描述思路 & 代码Summary二刷题目描述 考虑了一下&#xff0c;还是把这道题作为单独一篇文了。主要是配合这篇题解一起理解二分法&#xff0c;实践太少理解还不够透彻&#xff0c;还是要温故知新 思路 & 代码 先贴代码&#xff0c;结合注释和下面的总结…

【LeetCode笔记】300. 最长递增子序列(Java、动态规划、二分法、贪心)

文章目录题目描述思路 & 代码动态规划 O(n2n^2n2)动态规划 二分法 贪心 O(nlognnlognnlogn)二刷题目描述 难点在于时间复杂度 O(n * logn&#xff09;的做法 思路 & 代码 动态规划 O(n2n^2n2) 先抛砖引玉啦&#xff5e;dp[i]&#xff1a;以 nums[i] 结尾的子序…

zabbix内网安装部署_zabbix2.4.8升级3.0.31操作部署记录

1. 安装软件准备1.1. 软件准备1.zabbix-2.4.8.tar.gz zabbix-3.0.31.tar.gz下载地址&#xff1a;https://www.zabbix.com/download2.php5.4.16.tar.gz下载地址&#xff1a;https://www.php.net/downloads.php1.2. 注意事项安装过程路径、密码尽量不要出现中文、特殊字符、空格、…

【LeetCode笔记】剑指 Offer 03. 数组中重复的数字(Java、哈希表、原地算法)

文章目录题目描述思路 & 代码二刷题目描述 倒是和leetcode 287 寻找重复数很像。。但是不能使用那道题的快慢指针法&#xff08;也可能是我太菜了&#xff09;重点在于题干的描述【长度为 n 的数组&#xff0c;数字范围【0 &#xff5e; n - 1】 思路 & 代码 可以直…

回归问题的置信区间AUC_互助问答第193期:倾向得分匹配法与面板数据问题

问题一&#xff1a;老师您好&#xff01;我的问题是倾向得分匹配法之前要对匹配变量进行选择&#xff0c;我看见连玉君老师的一篇文章中主要是对处理变量和匹配变量做logit回归&#xff0c;然后根据准R方和AUC值判断&#xff0c;两者越大越好&#xff0c;通常来说AUC应该大于0.…

【LeetCode笔记】剑指 Offer 06. 从尾到头打印链表(Java、翻转链表)

文章目录题目描述思路 & 代码二刷题目描述 思路 & 代码 一次遍历&#xff1a;翻转链表 记录长度二次遍历&#xff1a;遍历翻转后的链表&#xff0c;更新数组O(n) & O(1) /*** Definition for singly-linked list.* public class ListNode {* int val;* …

guns 最新开源框架企业版下载_国内比较火的5款Java微服务开源项目

本文介绍国内比较火的5款Java微服务开源项目&#xff0c;pig是基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式&#xff0c; 多系统SSO登录。作者&#xff1a;程序员杨目录…

【LeetCode笔记】剑指 Offer 10-I. 斐波那契数列 (Java、递归、动态规划)

文章目录题目描述思路 & 代码递归动态规划二刷题目描述 呃&#xff5e;说来尴尬&#xff0c;在简单题栽跟头了 &#xff08;超时&#xff09;一般来说&#xff0c;这玩意是递归教学题了。但实际上会有很多重复的冗余步骤&#xff0c;实际上用动态规划效率会更高 思路 &…

addeventlistener事件参数_Vue的钩子事件和程序化侦听

对于Vue的事件机制&#xff0c;其实有一些高级技巧&#xff0c;我们最好能够掌握。一、组件的生命周期钩子事件Vue的生命周期函数&#xff0c;其实就是Vue开发者设定的一些hook钩子&#xff0c;你只要往hook里面编写代码&#xff0c;它就可以执行。如vue实例里的beforeCreate、…

【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)

文章目录题目描述思路 & 代码二刷题目描述 注意点&#xff1a;满足数位和大于 k 的格子&#xff0c;不一定可以从 [0, 0] 走到&#xff0c;因此实际上不满足条件 思路 & 代码 考虑到可达性问题&#xff0c;决定用 dfs 来一个个走&#xff0c;不能走 or 走过了就 re…

计算机专业大学排名_U.S.News全美大学排名出炉:UCLA超越伯克利;计算机MIT排第一,斯坦福跌出前四...

栗子 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI一年一度&#xff0c;USNews2020美国大学排名公布。前两位依然稳定&#xff0c;普林斯顿第一&#xff0c;哈佛第二。后面开始就有了变化&#xff0c;今年有三所学校并列第三&#xff1a;哥伦比亚大学、麻省理工学院 (MIT) 以…

【LeetCode笔记】剑指 Offer 15-. 二进制中1的个数 (Java、位运算)

文章目录题目描述思路 & 代码二刷题目描述 涉及二进制&#xff0c;位运算跑不了&#xff5e; 思路 & 代码 既然是32位&#xff0c;那么通过一次遍历&#xff0c;每次判断一个位是否为1即可 public class Solution {// you need to treat n as an unsigned valuepu…

apollo 配置中心_.NET Core 下使用 Apollo 配置中心

“Apollo(阿波罗)是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适用于微服务配置管理场景。服务端基于Spring Boot和Spr…

【LeetCode笔记】剑指 Offer 21-. 调整数组顺序使奇数位于偶数前面(Java、双指针)

文章目录题目描述思路 & 代码二刷题目描述 有点像快排的交换操作 思路 & 代码 类似快排中的找法&#xff0c;具体见代码注释 class Solution {public int[] exchange(int[] nums) {// 双指针啦&#xff5e;int left 0, right nums.length - 1;while(left < r…

【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)

文章目录题目描述思路 & 代码二刷题目描述 思路很值得看的一道题&#xff0c;和之前路径总和 III的双递归思路、结构很像 思路 & 代码 isSubStructrue() 进行一个前序的遍历&#xff1b;通过 || 运算符&#xff0c;在找到时直接终止遍历具体函数功能、思路见代码注…

python使用pip安装包_12.2.1 使用pip安装Python包

12.2.1 使用pip安装Python包 大多数较新的Python版本都自带pip&#xff0c;因此首先可检查系统是否已经安装了pip。在Python 3中&#xff0c;pip有时被称为pip3。 1. 在Linux和OS X系统中检查是否安装了pip 打开一个终端窗口&#xff0c;并执行如下命令&#xff1a; $ pip --v…