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

article/2025/9/15 15:51:55

采访嘉宾 | 何亮亮

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架构设计-异构计算

\"image\"

对于深度学习框架,尤其是推理框架,最核心的部分是高性能的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 落地案例年终总结,与国内外一线技术大咖面对面交流,不见不散。

\"image\"


http://chatgpt.dhexx.cn/article/LKZrgyVm.shtml

相关文章

小米开源框架mace android案例调试

小米开源框架mace android案例调试 1. 准备工作 编译环境准备:请参照小米官方的文档: https://mace.readthedocs.io/en/latest/installation/env_requirement.html Required dependencies SoftwareInstallation commandTested versionPython 2.7Bazelba…

MACE的环境搭建——conda实现

1. MACE 主页 MACE 的github地址:https://github.com/XiaoMi/mace 小米官方的相关文档:https://mace.readthedocs.io/en/latest/ 对开发环境的要求,可以按照以下指令安装相关的包: 2. 创建虚拟环境并安装常见的包 (1) 创建虚拟环境…

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

小米人工智能与云平台副总裁崔宝秋博士在开源中国开源世界高峰论坛上发表《小米 AI 时代的开源》演讲,并在会上宣布,开源小米自研的移动端深度学习框架 Mobile AI Compute Engine (MACE)。 6 月 28 日,小米人工智能与云平台副总裁崔宝秋博士在…

小米开源框架MACE 源码阅读笔记

转载自 https://www.jianshu.com/p/7061fd67d419 前扯 在前不久的某高峰论坛上,小米开源了其移动端的深度学习框架Mobile AI Compute Engine(MACE)。这对于很多致力于嵌入式端优化的人来说,无疑是巨大的惊喜(新坑出现&…

Mace-micro引擎编译与测试

官方简介 Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算平台(支持Android, iOS, Linux, Windows)优化的神经网络计算框架。 主要从以下的角度做了专门的优化: 性能 代码经过NEON指令,OpenCL以及Hexagon HVX专门优化,并且采用W…

小米MACE开源框架搭建

一、环境配置 请参照小米官方的文档: https://mace.readthedocs.io/en/latest/installation/env_requirement.html For Android build, ANDROID_NDK_HOME must be confifigured by using export ANDROID_NDK_HOME/path/to/ndk It will link libc instead of gnustl …

小米AI平台MACE的构建和部署

1.准备部署文件 需要准备的部署文件包括头文件(.h), mace库文件(.),转化后的模型(.a),这里以resnet18v1-opt.onnx模型为例 1.1. 优化onnx模型 # Optimize your model $python MACE_ROOT/tools/onnx_optimizer.py resnet18v1.onnx resnet18v1-opt.onnx…

小米开源框架MACE - 源码阅读笔记一

首先先一目了然看一下其目录结构(这些个源码可以在github上下载到,只要在GitHub搜索mace即可): 介绍 MACE(Mobile AI Compute Engine)是一个针对移动异构计算平台优化的深度学习推理框架。MACE提供工具和文…

MACE的环境搭建和工程构建

1. MACE 主页 MACE 的github地址:https://github.com/XiaoMi/mace 小米官方的相关文档:https://mace.readthedocs.io/en/latest/ 对开发环境的要求,可以按照以下指令安装相关的包: 2. 安装docker 参照教程:https:/…

meterpreter之timestomp命令修改文件MACE时间

文章目录 前言一、timestomp的使用前提二、MACE时间1、文件系统简述2、linux操作系统3、windows操作系统 三、timestomp使用详解1.查看帮助文档2.使用-v选项查看文件信息3.使用-f选项拷贝文件MACE时间4.使用-m/-a/-c/-e修改文件MACE时间5.使用-b/-r使MACE时间显示清空 总结 前言…

小米开源AI框架mace编译构建

目录 简介 环境要求 1 安装 Bazel 2 安装Android NDK 3 在Ubuntu16.04下安装Docker(17.09) 构建并运行示例模型 1 拉取MACE项目 2 拉取MACE Model Zoo项目 3 构建通用MACE库 4 将预先训练的mobilenet-v2模型转换为MACE格式模型 编译运行DEMO…

使用MACE加速---使用篇

最近开始研究如何对手机应用中的识别算法进行加速,搜索后发现了小米的MACE。 Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算设备优化的深度学习前向预测框架。 覆盖了常见的移动端计算设备(CPU,GPU和DSP)。支持的硬…

小米AI推理框架MACE介绍

MACE 是小米公司自研的移动端深度学习框架 Mobile AI Compute Engine,2017年12月15日于公司内部正式发布。2018年6月28日,在“2018(第十三届)开源中国开源世界高峰论坛”上,小米公司人工智能与云平台副总裁崔宝秋博士宣…

MACE 使用笔记

环境安装 tensorflow 安装,一直不太想用mace的部分原因是不支持tensorflow2.模型, 但为了GPU(OpenCL)还是要用啊。 Shell set -e 学习笔记: shell 中的 set -e , set e 用法_滴水成川-CSDN博客_linux set-eset -eset命令的-e参…

小米开源框架MACE 简介

转载自 https://www.jianshu.com/p/2ab68779d05b 前言 MACE 是小米公司自研的移动端深度学习框架 Mobile AI Compute Engine,2017年12月15日于公司内部正式发布。2018年6月28日,在“2018(第十三届)开源中国开源世界高峰论坛”上…

MACE(1)-----环境搭建

学习MACE也有一个月了,将其划分三步来学习。本文是MACE学习的第一步即MACE环境的搭建。之后还有两步mace的编译和mace工程化。 MACE(2)-----模型编译:https://www.cnblogs.com/missidiot/p/9509831.html MACE(3)-----工程化:https://www.cnbl…

JDK , Tomcat , Eclipse 版本对应关系

1. JDK , Tomcat 版本对应关系 参考网址 : https://tomcat.apache.org/whichversion.html 2. JDK , Eclipse 版本对应关系 参考网址 : https://wiki.eclipse.org/Eclipse/Installation 作者 Github : tojohnonly , 博客 : EnskDeCode

如何查看eclipse的版本

阅读数:20254 转载文章,原文地址:https://blog.csdn.net/duqian94/article/details/52386076 由于作者已经写的很清楚了,就没有做修改直接转载过来了。 本篇文章主要讲解的是三种查看eclipse版本的方法(超详细&#xf…

Eclipse各版本有什么区别?

一直以来对eclipse这个IDE的各发行版本都弄不清楚,今天做一个梳理和记录。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环境插件(JDT),插件开发环境(PDE&#xff0…

超方便插件lombok的使用(eclipse版本)

1 准备 下载地址: 链接:https://pan.baidu.com/s/1Qoy2VRoERqZcgsOVYl3mZQ 提取码:2chx 2.安装 点击 或者找到对应的lombok文件所在目录执行java -jar lombok(1).jar 会自动扫描eclipse所以目录,也可以自己选择点击"S…