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

简介: 端智能在手淘中的应用。

屏幕快照 2020-02-13 上午11.00.36.png

作者|舒会(玄裳)
出品|阿里巴巴新零售淘系技术部

关注「淘系技术」微信公众号,回复“MNN”即可获取两次直播完整版 PPT 及视频回放链接;
点击下方「阅读原文」获取 MNN 开源地址,欢迎大家 star 我们哦~

作者:舒会(玄裳)

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

引言

淘系专家带你初探端智能与MNN(上篇)里,我们探讨了端智能的特性,挑战以及趋势。端智能是Mobile First和AI First两条道路的交叉点,也是许多移动开发者跨界发展的出路。

在这篇文章里,我们会介绍一下手机淘宝中端智能的应用。然后会介绍一下手机淘宝端智能中提供核心基础设施的推理引擎MNN。顺带说一句,MNN团队中许多成员之前是做移动开发的。移动开发者向AI开发跨界,可以参考一下哦。

手机淘宝中端智能的应用

手机淘宝(手淘)里面的端智能应用比比皆是。从大家最常用的商品搜索框,到利用照相机视频流买东西的“拍立淘”,再到最近几年兴起的使用AR(增强现实)进行化妆品的试妆,到处都是端智能的应用。

个人认为,端智能在手淘中的应用方式,分为以下两类:

1、利用AI新技术,创造全新的交互方式。这种利用AI,打开一个新赛道的方式是最难的,也是最有回报的。这方面的例子是AR试妆(口红,染发等)。现在在手淘里,你可以进入雅诗兰黛的口红页面,点击“在线试妆”来玩AR技术预览口红的效果。见下图。

屏幕快照 2020-02-13 上午11.02.17.png

2、利用 AI 新技术,给已有的工作的流程提供新的增长点。这个所谓的增长点,可以是更加契合用户个人的特点,也可以是某些操作更加有效率,更加节省服务端的压力,或者更加隐私。当然,可以是以上的几点(个性化,时效性,省服务端算力,隐私性)结合起来。

  • 个性化:千人千模。全局模型可以被用户的个人使用数据个性化定制。目前手淘首页的“猜你喜欢”页面的推荐内容,就是使用了用户的个人数据对全局推荐模型进行了定制,取得CTR的提升 (目前此功能在灰度实验中)。
  • 时效性+省服务端的算力:以手机淘宝首页的信息流为例,手机端会向服务端请求展示的商品,服务端为回复一定数量的商品以及相应的排序,但是这个排序是可以被app内的用户行为实时改变的。这个所谓的“端上重排”就是手机端利用本地的信息,运行一个ML模型,快速做出决定,不用与服务端通信。端上重排根据用户的浏览信息重排商品,可以提高转化率。
  • 隐私性:这方面比较火的是前几年由Google推出的Federated Learning。它可以在每个用户数据不离开手机的情况下,训练出一个描述所有用户的模型,同时有安全算法保证最终的全局模型无法逆向出原始的训练数据。Federated Learning还存在一些基本的研究挑战没有解决[1],所以手机淘宝还停留在尝试Federated Learning,并没有完全工业落地。

MNN介绍

MNN (Mobile Neural Network) 是阿里巴巴内部自己研发的推理引擎。在它研发之初,TFLite刚刚发布,而且由于TFLite最初版有诸多问题,为了快速响应业务的变化,阿里巴巴决定内部自研推理引擎MNN。MNN在2019年5月初在Github开源。开源至今,受益于阿里巴巴内部的用户和开源社区用户的反馈,MNN逐渐成长为一个优秀的、成熟稳定的推理引擎。目前,在阿里巴巴内部,MNN是端上推理引擎的事实标准。

MNN主要解决的是现在端智能的两大痛点:1. 底层的硬件、操作系统碎片化 (CPU、GPU、NPU, Android/iOS, Mobile/IOT) 2. 机器学习的框架复杂(TFLite,PyTorch, ONNX, etc.)。为了能够在不同的硬件、操作系统里发挥最好的功能,MNN会在运行时根据运行环境寻找出最快的算子实现算法(我们称这个过程为“半自动搜索”)。关于半自动搜索的技术细节,我们在第二次直播中有深度解答:http://mudu.tv/watch/4397479

目前端上的深度学习引擎有许多家(Google有TFLite,Facebook有PyTorch,苹果有CoreML,百度有PaddleLite,腾讯有NCNN,小米有MACE,阿里巴巴有MNN),MNN提供了什么特殊的价值呢?为什么用户要选用MNN而不是别的呢?

第一:MNN 的性能是领先于业界的。2019年9月的数据:Arm CPU上MNN 的单线程推理性能大约是TFlite的2~4倍;4线程推理性能大约是 TFLite 的10~20倍。(更多具体实验数据,我们在第二次直播给出:http://mudu.tv/watch/4397479

第二:MNN 的大小有优势。它的静态库约为 TFLite 的66.7% (MNN + OpenCL backend: 1.2M + 334K; TFLite + NNApi backend: 2.3M)。

第三:MNN 支持多种异构设备。CPU方面,MNN 支持了X86,ArmV7, V8。GPU 方面,MNN 支持了 OpenCL, OpenGL, Vulkan, Metal。NPU方面,MNN 支持了华为的 NPU ,并用在手淘的拍立淘场景中。

第四:MNN 的算子支持程度已经得到大幅的加强。MNN 在2019年12月大约增加了200个 OP 。

▐ MNN 的主要模块

MNN 的主要模块有:模型转换,模型量化工具和推理引擎本身。

► 模型转换

模型转换器如下图:

屏幕快照 2020-02-13 上午11.03.17.png

目前,MNN还没有支持从头开始训练一个模型的能力。也就是说,用户必须事先用其他的训练框架比如Tensorflow, PyTorch把模型训练好,然后再转换为MNN的模型格式,最终部署到端上。

它主要的工作流程是,先解析“源头”格式的模型(Caffe、TF、ONNX),进行一些与硬件无关的优化,例如图优化、算子融合、算子替换、布局调整等。得到初步优化的图之后,转换为MNN自己的格式。MNN的模型格式是一个自定义Schema的flatbuffer格式 [2]。

► 量化工具

模型转换好之后,可以使用 MNN 的量化工具对模型进行压缩。目前,MNN支持 post-training quantization(无训练量化)。后续 MNN 会支持 quantization-aware training(带训练量化),以获得更好的准确率和更低比特的压缩。

模型的量化工具如下图:

屏幕快照 2020-02-13 上午11.03.40.png

MNN的量化方案是自己实现的,它目前有ADMM和KL散度两种方案。也就是说,“源头”的预训练好的模型需要是浮点的。ADMM量化方案,是MNN根据达摩院的Paper “Extremely Low Bit Neural Network: Squeeze the Last Bit Out with ADMM” [3] 实现的。它与KL散度的区别在于:ADMM是基于数学优化的方法,只需要几十个数据点即可,但是计算较慢。而KL散度是基于概率统计的方法,需要较多的数据(500到1000个数据点),计算较快。实际操作上来说,对特征的量化,ADMM和KL散度没有巨大的差距;对权重的量化,推荐使用ADMM。

▐ MNN 未来展望

对于未来的发展,我们主要立足于两点来看:第一,解决现有问题;第二,把握未来的趋势,面向未来做技术布局。

解决现有问题方面:

MNN 的易用性还不够。这方面,我们会有一整套的易用性提升:开箱即用的工具箱;文档补齐;Demo 示例;预编译包等… 这些易用性提升的改变,我们预计在今年春节之前发布。
训练:很多时候,要获得一个用于某个应用场景的模型其实很简单:拿 MobileNet 做一下迁移学习,就可以达到很好的效果。MNN 未来会加入训练模型的能力,让这种迁移学习的场景可以直接通过 MNN 的 API 或者工具达成。

面向未来的技术布局方面:

MNN + NPU:NPU的运行速度快了 CPU 好几倍,而且能耗有优势。是未来的主流。而且在可预见的未来,NPU的碎片化比较严重。MNN目前支持了华为的海思NPU,以后会支持更多的 NPU ,并且会提供一个统一的 API ,降低碎片化。
MNN 小程序:小程序平台降低了外部客户把他们的软件写入手淘的门槛。以后,手淘里面的端智能能力,可以通过小程序透出给外部开发者,使用简单,功能强大。今年的双11,modiface 与我们合作,通过小程序使用 MNN ,巨大提升了运行速度(相比于 TFJS ),降低了内存使用。未来,更多的外部客户可以在他们的小程序里调用 MNN ,简单、高效地将机器学习带到小程序里。
模型压缩:前文也提到了 NLP 应用是未来的一大趋势。而 NLP 的模型普遍大于 CV 模型。在这个时候,大幅度地压缩模型,能够让之前只能在服务器运行的模型放到端上运行。所以未来的 MNN ,会提供更好的模型压缩。

结语

坊间传言,许多人在众多推理引擎中选择 MNN 的原因是它快。而 MNN 并没有那么易用。这些用户为了能够使用 MNN 将他们的模型部署到 app 中所做的事情,可谓翻山越岭。

2020年,我们希望 MNN 与用户们一起成长,能够真正成为好用、高效的机器学习引擎,帮助开发者把端智能玩进自己的 app 中。

References
[1] https://en.wikipedia.org/wiki/Federated_learning#Technical_limitations

[2] https://github.com/alibaba/MNN/blob/master/schema/default/MNN.fbs

[3] https://arxiv.org/abs/1707.0987

We are hiring


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

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

屏幕快照 2020-02-07 下午3.57.54.png

相关文章
|
传感器 人工智能 算法
AI概述:阿里文娱智能算法的新应用
阿里巴巴文娱-智能算法的新应用方向
AI概述:阿里文娱智能算法的新应用
|
8天前
|
人工智能 自然语言处理 算法
AI时代的企业内训全景图:从案例到实战
作为一名扎根在HR培训领域多年的“老兵”,我越来越清晰地感受到,企业内训的本质其实是为企业持续“造血”。无论是基础岗的新人培训、技能岗的操作规范培训,还是面向技术中坚力量的高阶技术研讨,抑或是管理层的战略思维提升课,内训的价值都是在帮助企业内部提升能力水平,进而提高组织生产力,减少对外部资源的依赖。更为重要的是,在当前AI、大模型、Embodied Intelligence等新兴技术快速迭代的背景下,企业必须不断为人才升级赋能,才能在市场竞争中保持领先。
|
22天前
|
人工智能 自然语言处理 算法
【AI问爱答-双十一返场周直播】AI产品专家直播解读重点AI应用场景怎么用?
阿里云【AI问爱答】栏目强势回归,11月25日至28日每晚19:00,连续四天直播,涵盖AI营销、企业办公、社交娱乐及大模型推理调优四大主题,助您深入了解AI应用,解决实际问题。欢迎预约观看!
|
5月前
|
人工智能 运维 Serverless
|
机器学习/深度学习 算法 测试技术
蚂蚁集团开源代码大模型CodeFuse!(含魔搭体验和最佳实践)
蚂蚁集团在刚刚结束的2023外滩大会上开源了代码大模型CodeFuse,目前在魔搭社区可下载、体验。
|
存储 人工智能 并行计算
喜马拉雅基于DeepRec构建AI平台实践
快速落地大模型训练和推理能力,带来业务指标和后续算法优化空间的显著提升。喜马拉雅AI云,是面向公司人员提供的一套从数据、特征、模型到服务的全流程一站式算法工具平台。
|
机器学习/深度学习 搜索推荐 算法
天池 DeepRec CTR 模型性能优化大赛 - 夺冠技术分享
这篇文章复盘一下我们本次的参赛经验, 希望对大家有所启发。今天我们会从5大角度来浅谈我们夺冠的优势。
|
机器学习/深度学习 人工智能 达摩院
2022最火的AIGC落地怎么用,阿里达摩院团队深度解读
2022最火的AIGC落地怎么用,阿里达摩院团队深度解读
518 0
|
机器学习/深度学习 存储 人工智能
【直播预告】蚂蚁端智能技术进展与思考
【直播预告】蚂蚁端智能技术进展与思考
161 0
|
机器学习/深度学习
《基于机器学习的阿里智能助理-- 在电商领域的架构构建与实践》电子版地址
基于机器学习的阿里智能助理-- 在电商领域的架构构建与实践
86 0
《基于机器学习的阿里智能助理-- 在电商领域的架构构建与实践》电子版地址