淘系专家带你初探端智能与MNN(上篇)

2023-10-18 12:30
文章标签 智能 初探 专家 mnn 淘系

本文主要是介绍淘系专家带你初探端智能与MNN(上篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者|舒会(玄裳) 

出品|阿里巴巴新零售淘系技术部


  • 关注「淘系技术」微信公众号,回复“MNN”即可获取两次直播完整版 PPT视频回放链接;

  • 点击下方「阅读原文」获取 MNN 开源地址,欢迎大家 star 我们哦~


舒会(玄裳)

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

端智能介绍


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

端智能(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:https://arxiv.org/abs/1911.05289

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

Image From:https://arxiv.org/abs/1911.05289

为了满足新模型对算力的要求,出现了许多针对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:https://arxiv.org/abs/1911.05289

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

RACE Leaderboard:http://www.qizhexie.com/data/RACE_leaderboard.html

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

SQuAD Leaderboard:https://rajpurkar.github.io/SQuAD-explorer/

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

 

► 从手机端到 AIOT 端

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

全球手机出货量趋势:https://www.statista.com/statistics/263441/global-smartphone-shipments-forecast/

全球智能音箱出货量:https://www.canalys.com/static/press_release/2019/CanalysSSPR20191112V2GP-1.pdf

在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

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

简历投递至吕行:chengfei.lcf@alibaba-inc.com

扫描下方二维码了解详情

END

了解 MNN 

点击下方图片即可阅读

火爆专场 干货来袭 | 淘宝端智能演进和思考

重磅| 淘宝轻量级的深度学习端侧推理引擎 MNN 开源

好文!必须点赞

这篇关于淘系专家带你初探端智能与MNN(上篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232593

相关文章

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订