开源最前线(ID:OpenSourceTop) 猿妹 整编
综合自:GitHub、量子位等
这可能是小米目前为止最重要的AI大动作。
6 月 28 日,在第十三届开源中国开源世界高峰论坛上,小米首席架构师、人工智能与云平台副总裁崔宝秋在《小米 AI 时代的开源》的主题演讲中,代表小米正式发布了小米移动端深度学习框架 —— MACE。
Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算平台优化的神经网络计算框架。 总体架构如下:
此外,MACE主要还从以下的角度做了专门的优化:
● 性能
代码经过NEON指令,OpenCL以及Hexagon HVX专门优化,并且采用 Winograd算法来进行卷积操作的加速。 此外,还对启动速度进行了专门的优化。
● 功耗
支持芯片的功耗管理,例如ARM的big.LITTLE调度,以及高通Adreno GPU功耗选项。
● 系统响应
支持自动拆解长时间的OpenCL计算任务,来保证UI渲染任务能够做到较好的抢占调度, 从而保证系统UI的相应和用户体验。
● 内存占用
通过运用内存依赖分析技术,以及内存复用,减少内存的占用。另外,保持尽量少的外部 依赖,保证代码尺寸精简。
● 模型加密与保护
模型保护是重要设计目标之一。支持将模型转换成C++代码,以及关键常量字符混淆,增加逆向的难度。
● 硬件支持范围
支持高通,联发科,以及松果等系列芯片的CPU,GPU与DSP(目前仅支持Hexagon)计算加速。 同时支持在具有POSIX接口的系统的CPU上运行。
模型转换
目前,我们为TensorFlow和Caffe提供模型转换器。未来还会支持更多的框架。
模型加载
MACE模型格式包含两部分:模型图定义和模型参数张量。图表部分利用Protocol Buffers进行序列化。所有的模型参数张量都连接成一个连续的字节数组,我们在下面的段落中调用这个数组张量数据。在模型图中,记录张量数据偏移和长度。
模型可以用3种方式加载:
模型图和张量数据都是从外部动态加载的(默认情况下,来自文件系统,但用户可以自由选择自己的实现,例如压缩或加密)。这种方法提供了最大的灵活性,但是最薄弱的模型保护。
模型图和张量数据都转换成C ++代码并通过执行编译后的代码加载。这种方法提供了最强大的模型保护和最简单的部署。
模型图转换为C ++代码并构建为第二种方法,张量数据作为第一种方法从外部加载。
小米开源战略
此外,在本次论坛上,还重新提到了小米开源战略的五个方面
第一个就是快,快速选型、快速融入社区、快速反馈,快是小米模式的重要组成部分;
第二个不重造轮子;
第三个不用则已,要用则精,很多公司只用不精,不能真正驾驭;
第四点就是公司的态度——永远拥抱开放和共享的态度,第四点也是与其他公司不同的。
在重大的软件项目上、开源软件项目上,要赢得话语权、为社区做贡献,就得降低自己封闭的维护成本,这个和第三条也是息息相关的,不用则已,要用则精。
关于该项目的Android的示例程序,可以下载编译好的APK文件进行安装(下载地址:https://cnbj1.fds.api.xiaomi.com/mace/demo/mace_android_demo.apk)。
MACE项目地址: https://github.com/XiaoMi/mace
MACE Model Zoo项目地址: https://github.com/XiaoMi/mace-models
●编号622,输入编号直达本文
●输入m获取文章目录