端智能与MNN初探

2020 年 2 月 07 日

端智能与MNN初探

端智能介绍

什么是端智能?为什么要做它?

端智能(On-Device Machine Learning)是指把机器学习的应用放在端侧做。这里的“端侧”,是相对于云服务而言的。它可以是手机,也可以是 IOT 设备等。而端侧所做的机器学习,不仅包括模型的推理,也包括了模型的训练。

传统的机器学习,由于模型大小、机器算力的问题,很多是放在服务端做的。比如 Amazon AWS 有“Amazon Rekognition Service”,Google 有 “Google Cloud Vision Service”。而随着以手机为代表的端侧设备算力的提高,以及模型设计本身的演进,大小更小、能力更强的模型逐渐能够部署到端上运行。端智能可以说是业界从 Mobile First 走向 AI First 的过程中必然会出现的产物。

你可能要问,模型可以放到端上跑,不一定代表它一定要放到端上跑。那为什么一定要做端智能呢?

关于这个问题,我们先来看一则新闻 [1],主要内容是说工信部正在加强对于侵害用户隐私的 App 的整治。以后想不经过用户的同意而获得他们的数据就没那么简单了。而机器学习的核心就在于数据。有许多研究表明,有了足够的数据,模型结构再简单,也能获得很好的结果。中国对于数据隐私性的重视在加强,国外就更不用说了。欧洲有极其苛刻的数据隐私保护法律 GDPR (General Data Protection Regulation)。下图就代表了广大在外企工作的朋友们被 GDPR 折磨的痛苦(笔者亲身经历)。

可以说,隐私性是未来做机器学习所绕不开的一点。而端智能可以做到数据不离端而进行推理甚至模型训练,相比于云端机器学习有天然的隐私性优势。由 Google 推动的 Federated Learning 在这样的背景下应运而生,它能够让大量的端侧设备使用各自的数据协同训练出一个全部模型,并且保证训练数据不离端,隐私得到保护。这个就是端智能充分利用端侧设备的算力的一个例子。在手机淘宝,Federated Learning 也在布局之中。

除了隐私性上面的优势以外,端智能在算力方面也有天然的优势。给大家看一组数据的对比:2018 年,世界上最快的计算机“Summit”的算力是 143.5 PFLOPS [2] . 而在 2018 年,华为卖出了 1700 万台 P20 [3]。每台 P20 中的麒麟 970 NPU 的算力是 1.92 TFLOPS [4]。这些 NPU 合起来的算力就有 32640 PFLOPS,相当于 227 个“Summit”。端侧设备的算力不容小觑。可以说,它是一个算力的海洋。

除了隐私性、更大的算力资源,许多应用场景是“非端不可”的,因为这些场景有很强的实时性。比如 Snapchat 中的人脸贴纸功能,需要对视频流的每一帧进行处理,然后渲染。这就要求图像处理的模型(例如人脸关键点的检测模型)运行在端上。

总结来说,更好的隐私性,更大的算力资源池,实时性是端智能独特的优势,也是做端智能的原因。

端智能的挑战

端智能的挑战主要有:速度、设备碎片化、引擎大小、模型大小、内存占用

速度:尤其在中国的环境下,手机设备碎片化严重,许多中低端的手机性能还不够。推理引擎的运行速度非常重要。很多时候,某个视觉交互场景的 FPS 低于 30,就是幻灯片体验,不能用。过了 30 FPS 就能用。这是一个 0 到 1 的区别。速度快才能让许多端智能应用场景在各种端上运行。

设备碎片化:端侧设备的碎片化比较严重,有不同 OS 和版本,各种加速硬件(DSP, NPU, GPU 等)。如何适配各种设备,保证模型在不同的设备上都能运行并充分利用硬件加速,是一个挑战。

引擎大小:推理引擎需要集成到 app 里才能运行模型。App 大小超过一定的阈值,App Store/Play Store 不给自动更新。

模型大小:模型太大会影响加载速度,模型更新时花费过多用户的数据流量,而且运行时的内存占用太大。

内存占用:运行时内存占用太大导致 GC 频繁,影响用户体验,严重的甚至导致系统 OOM。

端智能的几个趋势判断

端智能行业是一个飞速发展的行业,我们在这样的大环境下,不进则退。在这里,把我们平时做的调研总结一下,说 4 个趋势:

  1. 端上推理的重要性高于训练,但是补齐端上训练能力也有价值。
  2. 后摩尔时代到来,XPU 百花齐放。
  3. NLP 逐步走向成熟。
  4. 从手机端到 AIOT 端。

端上推理与训练

在《2019-2020 中国人工智能计算力发展评估报告》中 [5],调查机构 IDC 有报告指出,推理相对于训练的比重会逐年上升,预计到 2022 年会超过训练。如下图所示。

从另外一个角度来说,端上训练的重要性并没有降低。TensorflowLite 把 On-Device Training 列入了它的规划之中 [6];Apple CoreML 3 把 On-Device Training 作为它主打的功能 [7];即将开源的华为 Mindspore 框架也会拥有 On-Device Training 功能。

► 后摩尔时代与 XPU

Google Jeff Dean 在 2019 年 12 月中旬的一次采访中提到:One thing that’s been shown to be pretty effective is specialization of chips to do certain kinds of computation that you want to do that are not completely general purpose, like a general-purpose CPU。

摩尔定律在过去的几年逐渐失效,general-purpose CPU 性能的增长速度已经平滑。见下图:

Image From:

与此同时,每年出现的 ML 模型对算力的要求成指数增长。见下图:

Image From:

为了满足新模型对算力的要求,出现了许多针对 AI 特殊加速的“XPU”。比如 Google 的 TPU、Edge TPU,华为的麒麟 NPU 等。

可以说,未来的端智能大部分算力要靠 XPU 来提供。如何适配碎片化的 XPU,充分利用硬件性能,将是未来几年推理引擎都需要面临的挑战。

The “ImageNet” Moment of NLP

CV 中的 ImageNet Challenge 在 2015 年进入到了一个特别的时刻:机器学习模型的准确率正式超过了人类 (ResNet 的 Top-5 Error Rate 是 3.6%,而人类的 Top-5 Error Rate 是 5.1%) 见下图。

Image From:

而 NLP 里机器学习模型的能力超过人类的时刻(所谓“ImageNet Moment”)也已经到来。大家看 2019 年 Google ALBERT 模型在几个 NLP benchmark 上面的表现:

RACE Leaderboard:

在 RACE benchmark 上, ALBERT 虽然不及人类最佳 performance,但是已经远超普通人类的 performance,也就是 Amazon Mechanical Turk 的结果。而在 SQuAD benchmark 上,ALBERT 的 ensemble 模型 performance 已经超过了人类 3% 左右。见下图:

SQuAD Leaderboard:

既然都已经在某些 benchmark 上超越了人类,可以预见,未来的几年是 NLP 的广泛应用的几年。目前,最小的 ALBERT 模型大约 47MB。这个大小已经适合在手机端上运行了。

从手机端到 AIOT 端

“端智能”中所谓的“端”,不局限于手机端。未来的几年,将属于 AIOT (Artificial Intelligence of Things)。未来的几年,全球手机的出货量不会再像往年那样大幅增长,而是平稳甚至下滑,而以智能音箱为代表的 AIOT 设备的出货量正在处于一个飞速发展的时期。见下面两图:

全球手机出货量趋势:

全球智能音箱出货量:

在 AIOT 端还没有既定的标准,NN API 的影响力局限于 android。AIOT 端是未来的主战场,为 AIOT 端设计 AI 应用,让 AI 应用在 AIOT 端运行更快,是应用开发、算法开发和引擎开发者都需要做的。

从交互方式来看,AIOT 端的交互方式跟手机也不同。手机是一个以触觉、视觉(touch screen)为主导的交互方式,而 AIOT 端的交互方式中 NLP 的比例要大很多,Amazon Alexa、Google Home、天猫精灵这些智能音箱都是语音驱动的。

小结

在这一篇文章里,我们探索了一下端智能的特性、挑战和发展趋势。下一篇公众号文章中,我们会谈一谈手机淘宝中端智能的应用,并介绍一下手机淘宝中的端智能核心的技术基础:端上推理引擎 MNN。

References

[1] https://www.infoq.cn/article/64HTcpIr9fCr9FINqq09
[2] https://en.wikipedia.org/wiki/Supercomputer
[3] https://www.huaweicentral.com/huawei-sold-over-17-million-units-of-p20-series-and-7-5-million-units-of-mate-20-series-in-2018/
[4] https://hexus.net/tech/news/cpu/109757-huawei-kirin-970-soc-dedicated-neural-processing-unit/
[5] http://www.cbdio.com/BigData/2019-09/02/content_6150878.htm
[6] https://www.tensorflow.org/lite/guide/roadmap
[7] https://developer.apple.com/machine-learning/core-ml/

We are hiring

作者介绍

舒会(玄裳),MNN 项目核心负责人之一,阿里巴巴淘系技术高级技术专家,先后任职于美国 Amazon、Google,Google ML Kit Founding Members 之一。

本文转载自公众号淘系技术(ID:AlibabaMTT)。

原文链接

https://mp.weixin.qq.com/s/NUXVB4aK87keQD21wJx3Cw

2020 年 2 月 07 日 10:30 1283

评论

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

重学 Java 设计模式:实战中介者模式「按照Mybatis原理手写ORM框架,给JDBC方式操作数据库增加中介者场景」

小傅哥

设计模式 小傅哥 代码优化 代码规范 中介者模式

深入浅出kubernetes之WorkQueue详解

博文视点Broadview

Kubernetes 源码分析 k8s 队列 延迟队列

架构师训练营第四周学习总结

张明森

一二线城市知名 IT 互联网公司名单(新版)

程序员生活志

互联网 IT 大厂

IM聊天教程:发送图片/视频/语音/表情

GoEasy消息推送

websocket 即时通讯 聊天室 聊天

那些会阻碍程序员成长的细节[3]

码闻强

程序员 职业规划 职业成长

海阅优品致力打造新零售蓝海

Geek_116789

MySQL实战45讲笔记(1)

王传义

msyql

Dart vs Swift

柠檬水

swift dart

对直播带货的一点思考

Neco.W

直播 直播带货

来了!8M/S+速度,Pdown复活!

程序员生活志

从0开始设计Flutter独立APP | 第二篇: 完整的国际化语言支持

渔子长

flutter 前端

告别静默式看房 融云音视频助力上海中原 App 上线 VR 带看服务

Geek_116789

架构师训练营第四周作业

张明森

了不起的 TypeScript 入门教程 [1.2 w字]

阿宝哥

JavaScript typescript 前端 Web

创新管理体系标准ISO56002介绍

涛哥

数字化转型 创新

区块链≠分布式账本,别再傻傻分不清

CECBC区块链专委会

区块链技术 高考 信息防篡改

揭秘!中国人一定要知道的北斗卫星系统

程序那些事

北斗卫星 北斗系统 卫星定位 卫星授时 黑科技

软件架构语录

hiqian

玩转Java8中的 Stream 之从零认识 Stream

Java小咖秀

学习 stream java8 Java 面试 经验

ARTS - Week 4

Khirye

ARTS 打卡计划 arts

势能造就下的互联网大厂程序员为什么去开滴滴了?

非著名程序员

程序员 程序人生 提升认知 程序员成长

ARTS 第五周 6.21-6.28

我笔盒呢

为什么建议你使用枚举?

王磊

Java 枚举

融云年中大促钜惠来袭 IM+RTC 超值套餐最低6折起

Geek_116789

【写作群星榜】6.20~6.26 写作平台优秀作者 & 文章排名

InfoQ写作平台

写作平台 排行榜

MySQL系列 - SQL查询与修改执行过程

俊俊哥

MySQL 性能优化 关系型数据库 存储

架构师训练营第四周作业

hiqian

限频/限流的一些思考

i风语

Java redis 微服务 sentinel ratelimiter

iOS 动画 - 窗景篇(三·完结)

柯烂

ios swift 动画 移动互联网 动效

一群龙舟划手 “拍了拍” 你:端午节安康~

BonreeAPM

端智能与MNN初探-InfoQ