写点什么

MNN 支持 NPU 啦

  • 2019-12-05
  • 本文字数:1685 字

    阅读完需:约 6 分钟

MNN支持NPU啦

✪ AI 芯片时代 ✪

2016 - 2017 年,AlphaGo 先后战胜李世石和柯洁,随着深度学习进入公众视野的,还有 Google 的 TPU 。


之后,Qualcomm、Apple 等芯片厂商也相继进入了这个战场。一时间,APU、TPU、NPU 成了科技媒体的宠儿,各大厂商在发布会上的跑分比武应接不暇。


而 XPU 们也确实凭借着为深度学习定制的向量、矩阵、张量计算单元和更高效的缓存设计等,实现了数倍于 CPU、GPU 的性能。


以麒麟 NPU 为例,从 18 年 7 月的麒麟 970 到 19 年 9 月的麒麟 990 ,短短两年就实现了数倍的性能提升,是不是有一种摩尔定律再临的感觉?



除了性能强劲之外,XPU 的功耗相比于 CPU、GPU 也要更低。依然以麒麟 810 和 990 为例,接近 1/10 的功耗表现,可以和我的电量恐惧症说再见了!


✪ MNN + HUAWEI HiAI ✪

MNN 作为阿里巴巴开源的端侧推理引擎,已经支撑了两届淘宝双十一。我们以轻量级的推理引擎和配套工具,支持 Caffe、TensorFlow、PyTorch 训练框架和端侧 CPU、GPU、NPU 上的高效推理。


手机淘宝中有许多对实时性和精度要求都比较高业务,例如视频流检测、拍立淘等等。在算力有限的情况下,性能和精度往往不可兼得 —— 要么接受更慢的响应速度,保障精度,例如放弃视频流,只支持图片;要么舍弃一部分精度,用更小的模型换取更快的速度。


HiAI 是华为端侧 AI 能力开放平台,通过 HiAI Foundation 芯片能力开放,可以借助异构调度和 NPU 加速, 获得更佳的性能和功耗,有了这样性能和功耗同时得以提升的方案, MNN 就可以在配备了 NPU 的设备上启用那个名场面 —— 我全都要!



那么,究竟要怎么做呢?毕竟 NPU 是完全不同于 CPU 和 GPU 的计算设备。在这里,就需要简单回顾一下 MNN 对计算设备的抽象了。


计算设备在 MNN 中,被抽象为 Backend ,即后端;每一种后端都有三种职责:计算资源的分配、计算任务的调度、数据拷贝(含必要的格式转换)。 MNN 在实现对华为 NPU 支持的时候,就依赖了这种抽象设计。



具体来说,创建会话阶段,我们会在 NPUExecution 的 onCreate 方法中,将 MNN 的 Op 转换为 HiAI 的 OM Op ,逐步构建出 OM 的模型图;资源分配阶段,我们会在 NPUBackend 的 onResizeEnd 方法中,编译 OM 的模型图,生成 NPU 可用的 IR 模型,并预留出输入输出相关的 AI Tensor ;在推理运行阶段,我们会借助 NPUBackend 的 onCopyBuffer 方法,将输入数据从 MNN Tensor 拷贝到 AITensor ,而后利用华为 NPU 执行推理计算,再将结果从 AITensor 拷贝到 MNN Tensor。


整个过程看上去还是非常复杂的,但是 MNN 把绝大部分复杂的工作隐藏在了后端的抽象设计中。用户在使用的时候,只需要将 backend 的 type 设置为 NPU ,就可以实现对 NPU 的调用。同时,如果设备不支持 NPU ,还可以自动将计算回退到 CPU 上来实现。

✪ 双十一 NPU 实战 ✪

在今年的双十一中,拍立淘率先使用了 MNN + NPU 的能力。我们和天猫以及其他商家展开深度合作,推出了商家扫 Logo 活动 —— 用户可以像扫二维码一样,在扫描商家 Logo 后,获取商家发放的权益。在 NPU 加速之后,商家 Logo 在手机上只需要几毫秒的时间,就可以精准识别。是的,就是如此丝滑。


拍立淘在双十一期间开启了数十个品牌的 Logo 扫描,相关招商渠道建设中,敬请关注拍立淘官方渠道。准备好你的脑洞吧。


现在想试一试的话,还可以掏出你的手机,打开手机淘宝扫一扫,下列 Logo 都可以玩起来啦~

✪ 寄望未来 ✪

笔者和 Apple、Arm、华为等公司的工程师都有过交流,大家对 XPU 的未来都一致看好。虽然 APU、TPU、NPU 间的乱战可能还要持续上三五年,但在深度学习应用领域,它们逐步从云端走向终端,逐步替代 CPU、GPU 应当是大势所趋。


MNN 会持续关注 NPU 领域的发展。同时,MNN 和华为 NPU 的合作也还在进一步推进中,后续 MNN 的相关代码会在建设更成熟之后开源。我们也同样期待华为在 NPU 方面的进一步发展。


We are hiring


淘宝基础平台部-端智能团队欢迎移动端计算优化工程师和推理引擎架构师的加入。对新技术感兴趣,善于创新突破,渴望用新技术给用户带来创新体验的同学请联系我们。


本文转载自“淘系技术”公众平台。


原文链接:https://mp.weixin.qq.com/s/4aFgfBD05ln4wEft-5oEHw


2019-12-05 09:271165

评论

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

彻底搞懂ThreadLocal

千珏

Java 源码分析 多线程 ThreadLocal

新疆重点人员管控平台搭建,可视化大屏

什么是产品思维和产品意识?——课程总结

Deborah

一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG

CoderW

Java MySQL 数据库 程序员 互联网

如何从零开始学Python:(6)如何创建模块并运行?

广之巅

Python 4月日更

图解 Docker 架构

xcbeyond

Docker 容器 4月日更

JVM 读书笔记(二) 垃圾收集

U2647

JVM 4月日更

GitHub惊现!JVM G1GC的算法+实现,90张图+33段代码,你的面试专属!

Java架构师迁哥

家务活中的python协程

行者AI

协程 python学习

如何深入的学习C语言

cdhqyj

编程 C语言 计算机 嵌入式

在数字化迁徙浪潮中,数据可信、数据共享、数据隐私安全缺一不可!

CECBC

大数据

区块链“进军”文娱产业将碰撞出哪些火花?

CECBC

娱乐

软件测试——教育机构课程顾问常见黑话大全

程序员阿沐

程序员 软件测试 教育 机构 教育培训

简简单单才是真,初试 Svelte

LeanCloud

混搭的美感|靠谱点评

无量靠谱

博睿数据携数据链DNA创新理念,闪耀金融科技应用发展研讨会四川站

博睿数据

百度C++工程师的那些极限优化(内存篇)

百度Geek说

c++ C# 内存访问

低代码与数字化校园应用案例:2周时间构建50+应用,直呼过瘾!

优秀

低代码 数字化校园

拒绝假货!LVMH与普拉达、卡地亚联手推出区块链平台AURA

CECBC

恒源云_Gpushare.com | RTX 3090独家训练实录:MMDetectionV2 + ResNeSt

恒源云

人工智能 深度学习 gpu CV nlp

头条观察 | 从比特币的角度理解牛市暴跌

CECBC

比特币

一文搞定 Flink Job 的运行过程

shengjk1

flink flink源码 flink源码分析

聪明人的训练(二十二)

Changing Lin

4月日更

Redis为什么是单线程?高并发响应快?

Linux服务器开发

redis Linux服务器开发 网络io C++后端开发 单线程

打造创新模型,博睿数据首倡服务可达的数据链DNA

博睿数据

Redis学习01

Hex

Redis 核心技术与实战

浪潮云洲链接入“星火•链网”,走向工业互联网的星辰大海

云计算

恒源云_Gpushare.com | 三步搞定GPU免费云端训练!

恒源云

人工智能 深度学习 gpu CV nlp

肝了15000字性能调优系列专题(JVM、MySQL、Nginx and Tomcat),看不完先收藏

北游学Java

Java MySQL nginx tomcat JVM

2021年3月券商App行情刷新及交易体验评测报告

博睿数据

面向软件 IT 专业的高校大学生付费学习现状问卷调研

Albert

4月日更

MNN支持NPU啦_语言 & 开发_MNN团队_InfoQ精选文章