49.现有移动端开源框架及其特点—MACE( Mobile AI
2023-04-13 本文已影响0人
大勇任卷舒
- Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算设备优化的深度学习前向预测框架
- MACE覆盖了常见的移动端计算设备(CPU,GPU和DSP),并且提供了完整的工具链和文档,用户借助MACE能够很方便地在移动端部署深度学习模型
- MACE已经在小米内部广泛使用并且被充分验证具有业界领先的性能和稳定性。
49.1 MACE的基本框架:
MACE Model
MACE定义了自有的模型格式(类似于Caffe2),通过MACE提供的工具可以将Caffe和TensorFlow的模型 转为MACE模型。
MACE Interpreter
MACE Interpreter主要负责解析运行神经网络图(DAG)并管理网络中的Tensors。
Runtime
CPU/GPU/DSP Runtime对应于各个计算设备的算子实现。
49.2 MACE使用的基本流程
配置模型部署文件(.yml)
模型部署文件详细描述了需要部署的模型以及生成库的信息,MACE根据该文件最终生成对应的库文件。
编译MACE库
编译MACE的静态库或者动态库。
转换模型
将TensorFlow 或者 Caffe的模型转为MACE的模型。
部署
根据不同使用目的集成Build阶段生成的库文件,然后调用MACE相应的接口执行模型。
命令行运行
MACE提供了命令行工具,可以在命令行运行模型,可以用来测试模型运行时间,内存占用和正确性。
Benchmark
MACE提供了命令行benchmark工具,可以细粒度的查看模型中所涉及的所有算子的运行时间。
49.3 MACE在哪些角度进行了优化?
MACE 专为移动端异构计算平台优化的神经网络计算框架。主要从以下的角度做了专门的优化:
- 性能
- 代码经过NEON指令,OpenCL以及Hexagon HVX专门优化,并且采用 Winograd算法来进行卷积操作的加速。 此外,还对启动速度进行了专门的优化。
- 功耗
- 支持芯片的功耗管理,例如ARM的big.LITTLE调度,以及高通Adreno GPU功耗选项。
- 系统响应
- 支持自动拆解长时间的OpenCL计算任务,来保证UI渲染任务能够做到较好的抢占调度, 从而保证系统UI的相应和用户体验。
- 内存占用
- 通过运用内存依赖分析技术,以及内存复用,减少内存的占用。另外,保持尽量少的外部 依赖,保证代码尺寸精简。
- 模型加密与保护
- 模型保护是重要设计目标之一。支持将模型转换成C++代码,以及关键常量字符混淆,增加逆向的难度。
- 硬件支持范围
- 支持高通,联发科,以及松果等系列芯片的CPU,GPU与DSP(目前仅支持Hexagon)计算加速。
- 同时支持在具有POSIX接口的系统的CPU上运行。
49.4性能对比:
MACE 支持 TensorFlow 和 Caffe 模型,提供转换工具,可以将训练好的模型转换成专有的模型数据文件,同时还可以选择将模型转换成C++代码,支持生成动态库或者静态库,提高模型保密性。
大数据视频推荐:
网易云课堂
CSDN
人工智能算法竞赛实战
AIops智能运维机器学习算法实战
ELK7 stack开发运维实战
PySpark机器学习从入门到精通
AIOps智能运维实战
腾讯课堂
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通