采访嘉宾 | 何亮亮

AI前线导读: 随着深度学习领域的快速发展,以及移动端芯片计算能力的逐步提升,设备端上的深度学习推理正在变成一个巨大的需求和趋势,一个好用的深度学习框架成为深度学习应用落地的关键。小米团队打造的MACE (https://github.com/XiaoMi/mace),就是专门为移动端芯片优化的深度学习框架,且已开源供开发者使用。

开发这个移动端深度学习框架的过程并非一帆风顺,克服了一些困难之后,MACE才诞生并逐渐被越来越的开发者采用。在开发过程中,小米有哪些经验和踩坑经验可以分享给开发者?AI前线采访了小米深度学习框架负责人何亮亮来进行了深入的了解。

更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)

作为小米深度学习框架负责人,何亮亮目前负责服务端与移动端深度学习框架的研发工作。他在分布式系统、存储与数据库、异构计算、深度学习、计算机视觉等领域有丰富的实践经验。

何亮亮介绍道,他带领的团队的主要工作内容,包括移动端深度学习框架MACE的开发,服务端深度学习框架的定制与优化,图像处理与计算机视觉算法的开发与优化等工作。

MACE创建背后的故事

相对于PC,更加轻便、易于携带的移动端越来越普及,手机更是人手一部或者多部,这就让在移动端进行深度学习成为一个迫切的需求。鉴于此,专门为移动端而设计的深度学习框架——MACE应运而生。

何亮亮告诉AI前线记者,MACE最初是为了解决公司内部业务的落地而立项的。在2017年,为了落地拍照后处理的模型,小米曾考察了SNPE专有框架和主流的开源深度学习框架。结果,从性能角度看,仅有SNPE满足速度和功耗的要求,但因为SNPE是闭源软件,在部分特性和自定义算子的定制上有较大的制约,沟通成本影响了产品开发周期的可控性。为了同时满足性能和可控性两方面的要求,小米开始了MACE的自主研发。

在研发这个深度学习框架的过程中,遇见困难在所难免。在研发初期,MACE的重点是GPU的性能优化,何亮亮回忆,开发过程中他们遇到的最大困难,无疑是GPU算子的性能优化,由于当时没有任何开源实现可以参考,这项研发工作的难度非常大。

但是,经过多方尝试以及与高通的一些交流,MACE最终达到,甚至在内部私有模型上超过了SNPE的性能,同时还支持除Adreno GPU之外的芯片。后期,小米团队还对CPU和DSP也进行了支持和优化,也达到了较高的水平。

除了算子的性能之外,移动端框架还有其他的一些特有的问题。比如,相比服务端模型推理,移动端的推理对内存占用有着更苛刻的要求。为了优化计算节点间中间结果对内存的占用,小米借鉴了寄存器分配的图染色算法,通过提升内存缓冲区的复用效率,来达到减少内存占用的目标。对于权重的内存占用,小米则采用了半精度浮点和8比特整形量化的方法来进行压缩。另一个小米遇到问题是模型的推理计算对用户体验的影响,对于移动端的GPU,除了可以用作通用计算之外,更重要的作用是图形界面的渲染。如何解决深度学习模型的推理计算对图形渲染的干扰带来的卡顿问题,小米则采用了离线Tuning并自动进行细粒度Kernel拆分的形式来解决。

那么,为什么小米后来决定将这个艰难开发出来的移动端深度学习框架开源给开发者使用呢?何亮亮表示,这是考虑到当时市面上没有成熟的支持异构计算的开源框架可用,为了帮助更广大的开发者提升手机AI方面的体验,小米决定将MACE开源。

如今,MACE项目非常活跃,社区中有200多个Issue讨论和若干Pull Request,用户交流群(756046893)用户有1000多,主要集中在手机应用开发和IoT硬件设备开发领域。

据了解,MACE框架已经广泛应用到小米手机的各种场景和业务中,例如相机场景识别、人像模式、人脸解锁、行为预测、机器翻译、语音识别等。

MACE架构设计-异构计算

对于深度学习框架,尤其是推理框架,最核心的部分是高性能的kernel实现。MACE的NEON, GPU的kernel实现均达到较高水平,同时对于Hexagon DSP也进行了支持和优化。

目前,MACE支持主流的CNN模型,同时也支持机器翻译、语音识别的部分模型。除此之外,与MACE一同开源的,还有MACE Model Zoo项目(https://github.com/XiaoMi/mace-models),这个项目聚合了了一些常用的深度学习模型。

何亮亮介绍道,MACE的核心框架是C++,算子分别设计为OpenCL和汇编语言,具体选择哪个取决于底层的硬件,而周边工具则采用了更灵活的Python。

目前,MACE还无法做到在安卓和苹果系统之间自由切换,只支持安卓和Linux。

MACE在易用性、资源调度和兼容性方面的表现究竟如何?据悉,MACE提供了丰富的文档和Model Zoo,让开发者可以快速入手,且兼容主流的ARM CPU和常见的移动端GPU,开发者可以灵活地选择不同的CPU/GPU/DSP计算设备。

与三大移动端框架大比拼

当前移动端的三大框架Caffe2、TensorFlow Lite、Core ML无论是从知名度还是采用广度上都比MACE有很大的优势。但是,相比于这三大框架,MACE也有自己独特的优势。

相对于Caffe/Caffe2/TensorFlow Lite,MACE最大的优势是对GPU和DSP等异构计算的支持,劣势则是知名度和生态有不小的差距;而Core ML作为不同平台的专有框架,应用场合目前没有与MACE重叠。

对于开发者来说,MACE最大的吸引力在于它对CPU/DSP异构计算的支持,这让MACE具有其他开源框架不具备的性能优势。

另一方面,Caffe2、TensorFlow Lite、Core ML 均使用 offline 方式,可在无需网络连接的情况下确保用户数据的私密性。和其他框架一样,MACE也采用端侧离线模式。

那这是否代表移动端深度学习框架的趋势会倾向于offline呢?对此,何亮亮表示,移动端深度学习框架存在的意义在于端侧的本地计算。至于深度学习的推理在未来主要是online还是offline模式,他认为主要取决于场景,并不会趋同到一个模式。

具体而言,这主要取决于业务模式、产品体验、成本、隐私法规等几个因素。

业务模式主要是指特征数据的源头以及推理结果的去向,不管是从成本还是用户体验来说,数据和计算的保持局部性大多是有益的,例如,对于特征来自服务端的场景,天然适合online模式,比如广告信息流的点击率预估;而特征来自端测,则适合offline模式,例如拍照的后处理。而未来芯片的发展,以及5G的普及,也会导致online和offline的成本变化,也会影响两种模式的选择。另外,隐私法规的出台也是一个很重要的决定因素。

跟其他技术一样,随着行业的发展和成熟,移动端深度学习框架也会逐渐成熟并成为标准化的基础设施,但在此之前,仍会存在百家争鸣的局面,选择适合的框架解决产品落地的问题是最重要的。

目前,在移动端深度学习领域,无论是深度学习的异构计算芯片,还是芯片之上的深度学习框架,都处在蓬勃发展的阶段。这不仅给开发者提供了众多的选择,同时也带来了碎片化的负担和困扰。小米作为智能手机和IoT设备厂商,同样面临着深度学习推理软硬件选型的问题。为了更好的评估不同供应商的芯片和框架软件的性能指标,小米发起了开源移动端深度学习基准测试项目Mobile AI Bench ,希望借助小米在手机和智能硬件供应链方面的优势,与广大芯片厂商和开发者共同努力,推动移动端深度学习推理领域的发展。

会议推荐:

12 月 20-21,AICon 全球人工智能与机器学习技术大会将于北京盛大开幕,学习来自 Google、微软、BAT、360、京东、美团等 40+AI 落地案例年终总结,与国内外一线技术大咖面对面交流,不见不散。

比拼三大移动端深度学习框架,小米MACE有哪些优势?相关推荐

  1. 小米开源自研移动端深度学习框架MACE

    小米人工智能与云平台副总裁崔宝秋博士在开源中国开源世界高峰论坛上发表<小米 AI 时代的开源>演讲,并在会上宣布,开源小米自研的移动端深度学习框架 Mobile AI Compute En ...

  2. 小米开源移动端深度学习框架MACE,自主研发,专为IoT设备优化

    允中 发自 凹非寺  量子位 报道 | 公众号 QbitAI 这可能是小米目前为止最重要的AI大动作. 昨天(6月28日),在2018开源中国开源世界高峰论坛现场,小米人工智能与云平台副总裁崔宝秋对外 ...

  3. AI开发者看过来,主流移动端深度学习框架大盘点

    简书作者 dangbo 在<移动端深度学习展望>一文中对现阶段的移动端深度学习做了相关展望.作者认为,现阶段的移动端 APP 主要通过以下两种模式来使用深度学习: online 方式:移动 ...

  4. 大数据早报:百度开源移动端深度学习框架 中国联通成立大数据公司(9.26)

    数据早知道,上36dsj看早报! 来源36大数据,作者:奥兰多 『深度学习』百度开源移动端深度学习框架mobile-deep-learning 2017 年 9 月 25 日,百度在 GitHub 开 ...

  5. 移动端深度学习框架——绝影简介

    绝影(Prestissimo) 绝影是九言科技开发的高性能移动端深度学习框架,其项目地址见 https://github.com/in66-dev/In-Prestissimo 背景 绝影前身是一个G ...

  6. 【移动端DL框架】当前主流的移动端深度学习框架一览

    大家好,继之前的12大深度学习开源框架之后,我们准备开通新的专栏<移动端DL框架>,这是第一篇文章,先来做一个总体的介绍,更多的细节可以关注以后的文章. 在这个专栏中,我们会介绍与移动端的 ...

  7. 主流部署端深度学习框架

    文章目录 NCNN 同框架对比 支持卷积神经网络,多输入和多分支 无任何第三方库依赖 纯 C++ 实现,跨平台 汇编级优化,计算速度极快 MNN 模型 优势 通用性 轻量性 高性能 易用性 性能测评 ...

  8. TensorFlow Lite 正式发布,谷歌移动端深度学习框架

    今年 5 月,谷歌曾在 I/O 大会上宣布即将推出 TensorFlow Lite,现在,谷歌终于发布了新工具的开发者预览版本,这是一款 TensorFlow 用于移动设备和嵌入式设备的轻量级解决方案 ...

  9. 小米立Flag:要做年轻人的第一个深度学习框架

    小米要做移动端最牛叉的深度学习框架. -- 小米崔宝秋 北京时间 6 月 28 日,在第十三届开源中国开源世界高峰论坛上,小米首席架构师.人工智能与云平台副总裁崔宝秋在<小米 AI 时代的开源& ...

最新文章

  1. 上海居民被垃圾分类逼疯!这款垃圾自动分类器也许能帮上忙
  2. 一个“退学生”到CTO的逆袭之路
  3. 后缀数组的学习(三):SA数组实现代码分析
  4. 解决element-ui表头错位的问题
  5. uitableviw 自适应高度
  6. 纯IPv6环境App适配的坑
  7. C++泛型编程实现二叉搜索树BST
  8. python宏替换_简单的宏替换
  9. spring 字面值 特殊字符 配置使用
  10. 微信小程序订阅消息,并跳转指定页面
  11. 弘辽科技:抖加投放后会增粉吗?有什么技巧?
  12. 【obs】27:deps 构建说明及studio的vs2019构建及裁剪
  13. 华为的芯片战略:别忘记,代号—SD502!
  14. java 输出水仙花数
  15. [Java]Maven学习笔记(尚硅谷2022)
  16. C++程序设计课程设计(研究生初试录取系统)
  17. Packet Tracer - 配置 IPv6 的 EIGRP 基本设置
  18. 新生报到小程序毕业设计,微信新生报到小程序系统设计与实现,微信小程序毕业设计论文怎么写毕设源码开题报告需求分析怎么做
  19. 记一次H3CIE实验考试
  20. 神威.太湖之光和河南最大规模超算集群免费玩?这比赛牛大了!

热门文章

  1. 阿里云部署docker项目流程
  2. [附源码]Nodejs计算机毕业设计基于JAVA宠物店管理系统Express(程序+LW)
  3. 微信企业号授权(含代码)
  4. esp8266 防掉线方法_ESP8266 MQTT断线重连问题
  5. 《遥远的救世主》:丁元英为什么没提前把整个计划告诉叶晓明他们?
  6. 十问十答,快速了解科力锐勒索拦截系统!
  7. 2345一个推广软件的上市公司
  8. Apache Kudu的介绍
  9. vue使用Framework7记录(一):基础配置
  10. 利用计算机犯罪的例子,真实的计算机犯罪的案例