直播预约通道开启!2021腾讯数字生态大会邀您共探产业发展新机遇! 了解详情
写点什么

百度发布全新端侧推理引擎 Paddle Lite,支持华为 NPU 在线编译

2019 年 8 月 21 日

百度发布全新端侧推理引擎Paddle Lite,支持华为NPU在线编译

北京时间 8 约 21 日,InfoQ 获悉:百度深度学习平台飞桨(PaddlePaddle)发布 Paddle Lite,该推理引擎在多硬件、多平台以及硬件混合调度的支持上更加完备,是飞桨在 Paddle Mobile 的基础上进行的一次大规模升级迭代。通过对底层架构设计的改进,拓展性和兼容性等方面实现显著提升。目前,Paddle Lite 已经支持了 ARM CPU,Mali GPU,Adreno GPU,华为 NPU 以及 FPGA 等诸多硬件平台,是目前首个支持华为 NPU 在线编译的深度学习推理框架。


随着技术进步,手机等移动设备已成为非常重要的本地深度学习载体,然而日趋异构化的硬件平台和复杂的终端侧的使用状况,让端侧推理引擎的架构能力颇受挑战。端侧模型的推理往往面临着算力和内存的限制,为了能够完整的支持众多的硬件架构,并且实现在这些硬件之上人工智能应用性能的性能优化,百度飞桨基于 Paddle Mobile 预测库,融合 Anakin 等多个相关项目的技术优势,发布端侧推理引擎 Paddle Lite,通过建模底层计算模式,加强了多种硬件、量化方法、Data Layout 混合调度执行的能力,从而保障了宏观硬件的支持能力。


Paddle Lite 在架构上全新升级,并重点增加了多种计算模式(硬件、量化方法、Data Layout)混合调度的完备性设计,可以完整承担深度学习模型在不同硬件平台上的的推理部署需求,具备高性能、多硬件、多平台、扩展性强等优势。Paddle Lite 依托飞桨训练框架及其对应的丰富完整的算子库,底层算子计算逻辑与训练一致,模型完全兼容无风险,并可快速支持更多模型。


Paddle Lite 架构由四层次组成:


  • 第一层 model 层直接接受 Paddle 训练的模型,通过模型优化工具转化为 NaiveBuffer 特殊格式,以便更好地适应移动端的部署场景;

  • 第二层 Program 层是 operator 序列构成的执行程序;

  • 第三层是一个完整的分析模块,主要包括 TypeSystem、SSA Graph 和 Passes 等模块;

  • 第四层是执行层,由 Kernel 序列构成的 Runtime Program。



Paddle Lite 具有以下重要特性:


与其他端侧引擎相比,Paddle Lite 扩展性更高,框架层硬件抽象层次的描述能力强,容易对新的硬件进行集成,可以模块化地对硬件和模型进行更细致的分析和优化。


在模型支持方面,Paddle Lite 现已支持 Paddle 图像分类、检测、分割及图像文字识别等领域的模型预测,官方发布了 18 个模型的 benchmark。此外,可以通过 X2Paddle 工具将由 Caffe 和 TensorFlow 训练的模型转换后进行预测。


在硬件支持方面,目前 Paddle Lite 已支持 ARM CPU, ARM GPU、华为 NPU 和 FPGA 等硬件平台,正在优化支持的有寒武纪、比特大陆等国产 AI 芯片,并会兼容支持的 Intel、NVIDIA 等主流云端芯片。


在性能方面,Paddle Lite 针对不同微架构,进行了 kernel 的深度优化,支持 INT8 量化计算,在华为 NPU 上也具有良好的性能表现。


Paddle Lite 可针对端侧设备特点进行深度定制及优化,无第三方库依赖,整个推理过程分为模型加载解析、计算图的优化分析及设备上的高效运行。移动端可以直接部署经过优化分析的图,执行预测。Android 平台上,ARMV7 动态库只需要 800k,ARMV8 动态库仅有 1.3M,也可以根据需要,进行更深度的剪裁。


此外,Paddle Lite 还进一步完善提供了 Web 前端开发接口,支持 JavaScript 调用 GPU,可在网页端快捷运行深度学习模型。


2019 年 8 月 21 日 20:039253

评论

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

我在阿里做架构 | 单测最佳实践

九叔

最佳实践 测试 单元测试

连续七年,我们持续领跑

浪潮云

一分钟开发一个表单

Daniel

vue.js 表单 动态表单 6月日更 6 月日更

Python——字典的使用

在即

6月日更 六月日更

Linux之ls命令

入门小站

Linux

【Vue2.x 源码学习】第十五篇 - 生成 ast 语法树 - 构造树形结构

Brave

源码 vue2 6 月日更

前端开发华为鸿蒙系统应用 OpenHarmony JS

孙叫兽

华为 鸿蒙 操作系统 OpenHarmony 鸿蒙开发

软件工程,其实没有任何工程而言

实力程序员

Java包装类(Integer 详解 )

若尘

java编程 六月日更

Python训练营笔记 数据结构大汇总 Day6

万里无云万里天

Python 6月日更

面试官问“你有什么问题要问我”,如何完美回答?

架构精进之路

6 月日更

【Flutter 专题】103 初识 Flutter Mixin

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6 月日更

请阐述vue的diff算法

法医

Vue 前端 6 月日更

「SQL数据分析系列」4. 过滤操作

数据与智能

数据库 SQL语言

架构实战营模块六总结

竹林七贤

【21-8】PowerShell 输入输出

耳东

PowerShell 6月日更

密码学系列之:feistel cipher

程序那些事

加密解密 密码学 程序那些事

论现代科技发展趋势:停滞、减速 OR 蓄力?

老猿Python

发展 科技 软件技术

故事|订单系统中的补偿事务

悟空聊架构

故事 事务 6 月日更 订单系统 补偿事务

PO 就是Scrum中的产品经理?别再搞不清啦

万事ONES

项目管理 Scrum 敏捷开发 PO ONES

项目经理如何有效管理需求变更?

万事ONES

需求管理 ONES 项目经理

缓存的世界 Redis(二)-持久化

卢卡多多

redis redis持久化 配置文件持久化 六月日更

快来,这里有23种设计模式的Go语言实现

华为云开发者社区

go 线程 设计模式 单例模式 go语言

并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

技术八点半

Java 多线程 并发 并发王者

JDK 工具大合集

看山

Java· 6 月日更

OpenVINO+微软黑客松比赛项目简介

IT蜗壳-Tango

IT蜗壳 6 月日更

Java8 的时间库(1):介绍 Java8 中的时间类及常用 API

看山

Java 6 月日更

用EasyRecovery“监控硬盘”功能检测硬盘问题的方法

淋雨

数据恢复 EasyRecovery 文件恢复

页面怎么布局,当然是Grid ԅ(¯﹃¯ԅ)

空城机

JavaScript 前端 6月日更 页面布局

VS code常用插件推荐(总结整理篇)

孙叫兽

前端 vscode 插件 Vue 3

react源码解析13.hooks源码

全栈潇晨

React

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

百度发布全新端侧推理引擎Paddle Lite,支持华为NPU在线编译-InfoQ