小米AI推理框架MACE介绍

218 篇文章 29 订阅
144 篇文章 19 订阅

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

资料

官方手册:https://buildmedia.readthedocs.org/media/pdf/mace/latest/mace.pdf

开源github地址:https://github.com/XiaoMi/mace.git

mace模型库地址:https://github.com/XiaoMi/mace-models.git

LOGO:

架构:

简单总结一下:

1.MACE定义了自己的模型格式,提供工具将各类开源模型转为MACE格式。

2.MACE interpreter是用来解释图的。

3.后端支持DSP,CPU,GPU用来对算子加速,和某单位对我们提出的算子层API一个层面的意思。
GITHUB中的后端代码目录如下:

 部署思路大同小异,不过多解释:

MACE SDK的组织方式:

模型格式

MACE 自定义了一种类似 Caffe2 的模型格式。Tensorflow 和 Caffe 训练得到的模型可以转换成 MACE 模型进行部署。MACE 采用 YAML 文件描述模型的部署细节。下一章会给出 YAML 文件的创建方法。

模型转换

目前,我们提供了Tensorflow、Caffe模型到MACE模型的转换工具,未来会支持更多的框架。

模型加载

MACE 模型包含两部分:图(model graph)和参数张量(model parameter tensors)。graph 部分使用 Protocol Buffers 做序列化存储。所有的模型参数张量(model parameter tensors)被串联存储在一个连续的字节数组中,在后续段落中我们称之为张量数据(tensor data)。应该就是类似于darknet那种模型结构和模型权重分开存储的方式,darknet的权重文件也是一个连续的字节数组。

模型可以通过3种方式进行加载:

  1. model graph 和 tensor data 均在外部动态加载(默认情况下,从文件系统加载,但是用户可以自由选择一些实现方式,例如压缩或加密)。这种方式具有最大的灵活性但是模型的保护性最差。

  2. model graph 和 tensor data 转换成 C++ 代码并通过执行编译后的代码进行加载。这种方式提供了最强的模型保护措施,是最简单的部署方式。

  3. model graph 按照方式 2 一样被转换成 C++ 代码,tensor data 按照方式 1 进行外部加载。

结束!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值