48.现有移动端开源框架及其特点—MDL(mobile-deep
2023-04-12 本文已影响0人
大勇任卷舒
48.1 功能特点
- 一键部署,脚本参数就可以切换ios或者android
- 支持iOS gpu运行MobileNet、squeezenet模型
- 已经测试过可以稳定运行MobileNet、GoogLeNet v1、squeezenet、ResNet-50模型
- 体积极小,无任何第三方依赖。纯手工打造。
- 提供量化函数,对32位float转8位uint直接支持,模型体积量化后4M上下
- 与ARM相关算法团队线上线下多次沟通,针对ARM平台会持续优化
- NEON使用涵盖了卷积、归一化、池化所有方面的操作
- 汇编优化,针对寄存器汇编操作具体优化
- loop unrolling 循环展开,为提升性能减少不必要的CPU消耗,全部展开判断操作
- 将大量繁重的计算任务前置到overhead过程
48.2 框架结构

- MDL 框架主要包括:
- 模型转换模块(MDL Converter)
- 模型加载模块(Loader)
- 网络管理模块(Net)
- 矩阵运算模块(Gemmers)及供 Android 端调用的 JNI 接口层(JNI Interfaces)
- 其中,模型转换模块主要负责将Caffe 模型转为 MDL 模型,同时支持将 32bit 浮点型参数量化为 8bit 参数,从而极大地压缩模型体积;模型加载模块主要完成模型的反量化及加载校验、网络注册等过程,网络管理模块主要负责网络中各层 Layer 的初始化及管理工作;MDL 提供了供 Android 端调用的 JNI 接口层,开发者可以通过调用 JNI 接口轻松完成加载及预测过程。
48.3 MDL 的性能及兼容性
- 体积 armv7 300k+
- 速度 iOS GPU mobilenet 可以达到 40ms、squeezenet 可以达到 30ms
- MDL 从立项到开源,已经迭代了一年多
- 移动端比较关注的多个指标都表现良好,如体积、功耗、速度。百度内部产品线在应用前也进行过多次对比,和已开源的相关项目对比,MDL 能够在保证速度和能耗的同时支持多种深度学习模型,如 mobilenet、googlenet v1、squeezenet 等,且具有 iOS GPU 版本,squeezenet 一次运行最快可以达到 3-40ms。
48.4 同类框架对比
- 框架Caffe2TensorFlowncnnMDL(CPU)MDL(GPU)硬件CPUCPUCPUCPUGPU速度慢慢快快极快体积大大小小小兼容Android&iOSAndroid&iOSAndroid&iOSAndroid&iOSiOS
- 与支持 CNN 的移动端框架对比,MDL 速度快、性能稳定、兼容性好、demo 完备。
48.5 兼容性
- MDL 在 iOS 和 Android 平台均可以稳定运行,其中 iOS10 及以上平台有基于 GPU 运算的 API,性能表现非常出色,在 Android 平台则是纯 CPU 运行。高中低端机型运行状态和手机百度及其他 App 上的覆盖都有绝对优势。
- MDL 同时也支持 Caffe 模型直接转换为 MDL 模型。
大数据视频推荐:
网易云课堂
CSDN
人工智能算法竞赛实战
AIops智能运维机器学习算法实战
ELK7 stack开发运维实战
PySpark机器学习从入门到精通
AIOps智能运维实战
腾讯课堂
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通