NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-12-05 09:27989

评论

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

LeetCode 169. Majority Element

liu_liu

算法 LeetCo

HashMap将cpu打满始末

hashmap 线程安全 cpu 100% cpu飙满

浮点数的秘密

C语言与CPP编程

c c++ 编程语言 浮点数

Java四种引用类型:强引用、软引用、弱引用、虚引用

简爱W

我理解的面向对象(ObjectiveSql 实践)

Braisdom

Java ORM框架 ORM

Golang领域模型-实体

奔奔奔跑

架构 微服务 领域驱动设计 DDD Go 语言

我们该怎么保护手机屏幕前的父母?

徐说科技

手机 短视频

Go: 理解 Sync.Pool 的设计

陈思敏捷

sync sync.pool pool Go 语言

金沙账号审核不通过维护不给提现风控怎么回事?怎么办

过山太阳

内容审核 提现不了

不使用Raft算法,就能简单做集群leader选举

架构师修行之路

分布式 架构师

业务架构学习内容有哪些?

周金根

BIZBOK 业务架构

oeasy教您玩转 linux 010212 管道 pipe

o

记录问题 INSERT INTO table ... SELECT ... FROM dual WHERE not exists (...)问题

转山转水

sql SQL语法 sql查询

spark总结

纯纯

重新学习了一遍ThreadLocal

熊斌

学习

企业中台化落地:从战略分析到战术实践及架构演进过程

Barry的异想世界

架构设计 策略模式 模板方法模式 中台架构 领域驱动设计DDD

【高并发】面试官:讲讲什么是缓存穿透?击穿?雪崩?如何解决?

冰河

缓存 穿透 击穿 雪崩 签约计划第二季

为什么每个微服务要有自己独立的数据库?

码猿外

数据库 架构 微服务

计算机的时钟(三):向量时钟

ElvinYang

TOGAF认证课由2天变化为5天的思考

周金根

企业架构 TOGAF

从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅

yes

dubbo cpu

不草率,你只管下载资料,剩下的交给「哇哦」

小Q

Java 学习 架构 面试 分布式

week11--作业

Geek_165f3d

SpringCloud轻松集成Dubbo实现RPC调用

Barry的异想世界

微服务 dubbo nacos RPC spring cloud alibaba

区块链应用层——生态体系的上层建筑

CECBC

区块链技术 生态体系

以大数据为依托提升基层治理效能

CECBC

大数据 信息化管理

区块链激励层——区块链生态建设的驱动力量

CECBC

区块链技术 驱动力量

认证、授权、鉴权和权限控制

哈库拉玛塔塔

spring security 用户权限 鉴权 权限

Spring Security 主要类解释

哈库拉玛塔塔

springsecurity

华为与第四范式,正在酝酿一个帮企业跳出AI悖论的“秘密计划”

脑极体

布式系统消息异常该何去何从

架构师修行之路

分布式 异步

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