选自GitHub
机器之心编译
参与:思源、李亚洲
6 月 28 日,小米首席架构师,人工智能与云平台副总裁崔宝秋在 2018(第十三届)开源中国开源世界高峰论坛上宣布,正式开源小米移动端深度学习框架 MACE。该框架采用与 Caffe2 类似的描述文件定义模型,因此它能非常便捷地部署移动端应用。
项目地址:https://github.com/XiaoMi/mace
文档地址:https://mace.readthedocs.io/en/latest/
Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算平台优化的神经网络计算框架。目前该框架为 TensorFlow 和 Caffe 模型提供转换工具,并且其它框架定义的模型很快也能得到支持。下图展示了该计算框架的整体结构:
据 Github 项目介绍,小米的 MACE 主要从以下的角度做了专门的优化:
模型格式
MACE 定义的定制化模型格式与 Caffe2 的类似,MACE 模型能由 TensorFlow 和 Caffe 输出的模型转化。YAML 文件详细描述了模型部署细节,后文将展示该文件的示例。
模型加载
MACE 模型格式包含两部分:定义模型的计算图和模型参数张量。计算图部分利用 Protocol Buffers 做序列化,而所有的模型参数张量级联在一起成为一个连续字节数组,我们称这个数组为张量数据。在模型图中,张量数据的偏移(offsets)和长度都会被记录下来。
可用以下三种方式加载模型:
部署文件示例
部署模型到移动端的第一步就是创建 YAML 文件,该 YAML 文件描述了模型部署的情况,每一个文件都将生成一个静态库(如果指定了多个 ABIs,那么每个都会有一个静态库)。部署文件可以包含一个或多个模型,例如智能相机应用可能包含人脸识别、目标识别和语音识别模型,它们可以在一个部署文件中定义。
以下展示了用于安卓示例应用的部署文件:
# The name of library
library_name: mobilenet
target_abis: [arm64-v8a]
embed_model_data: 1
# The build mode for model(s).
# 'code' stand for transfer model(s) into cpp code, 'proto' for model(s) in protobuf file(s).
build_type: code
linkshared: 0
# One yaml config file can contain multi models' config message.
models:
mobilenet_v1: # model tag, which will be used in model loading and must be specific.
platform: tensorflow
# support local path, http:// and https://
model_file_path: https://cnbj1.fds.api.xiaomi.com/mace/miai-models/mobilenet-v1/mobilenet-v1-1.0.pb
model_sha256_checksum: 71b10f540ece33c49a7b51f5d4095fc9bd78ce46ebf0300487b2ee23d71294e6
subgraphs:
- input_tensors: input
input_shapes: 1,224,224,3
output_tensors: MobilenetV1/Predictions/Reshape_1
output_shapes: 1,1001
runtime: cpu+gpu
limit_opencl_kernel_time: 0
nnlib_graph_mode: 0
obfuscate: 0
winograd: 0
mobilenet_v2:
platform: tensorflow
model_file_path: https://cnbj1.fds.api.xiaomi.com/mace/miai-models/mobilenet-v2/mobilenet-v2-1.0.pb
model_sha256_checksum: 369f9a5f38f3c15b4311c1c84c032ce868da9f371b5f78c13d3ea3c537389bb4
subgraphs:
- input_tensors: input
input_shapes: 1,224,224,3
output_tensors: MobilenetV2/Predictions/Reshape_1
output_shapes: 1,1001
runtime: cpu+gpu
limit_opencl_kernel_time: 0
nnlib_graph_mode: 0
obfuscate: 0
winograd: 0
}
模型与性能评测
MACE Model Zoo 包含若干常用模型,不仅包括 MobileNet、SqueezeNet、ResNet-50 和 Inception-v3 等常见的卷积神经网络,同时还有风格迁移等应用。MACE Model Zoo 会对一组手机进行每日构建,最新的性能评测结果可以从项目的持续集成页面获取。
MACE Model Zoo 地址:https://github.com/XiaoMi/mace-models
本文为机器之心编译,转载请联系本公众号获得授权。