移动端深度学习框架

随着AI的广泛落地,深度学习技术已经进入到我们身边的每一个角落。从拍照识别到美颜相机、从语音翻译到文本预测,各式各样的应用都从电脑走向手机、从云端落地到移动设备中。如何在移动端更好地部署和使用深度学习模型,充分利用有限的算力实现快速准确的预测是移动端需要解决的关键问题。
近年来国内外各个厂家推出了一系列深度学习架构,除了对网络压缩、剪枝、量化等常规操作进行了优化,还针对内存、GPU/CPU型号进行了特定提升,甚至在指令集架构的汇编层次进行了深入的优化,使得移动端框架日趋完善。下面就让我们来一起浏览目前广泛使用的10个深度学习移动端框架(建议先收藏后阅读)以便在将来的学习工作中更好地进行移动端AI项目的开发和部署

1. TensorFlow Lite

作为深度学习领域最大的框架之一,TensorFlow在2017年针对性地为移动端推出了lite框架系统,为用户提供训练模型向移动端的无缝迁移。
移动端深度学习框架 - 图1
在使用TensorFlow Lite时,主要通过打包、转换、部署和优化四个步骤实现。其中Lite转换器将训练好的模型转换为压缩格式,而优化部分会将32位的浮点数转换为8位整型数,或是部署到移动端GPU上进行运算提高计算速度。
移动端深度学习框架 - 图2
框架地址:https://www.tensorflow.org/lite

2. Core ML

苹果作为最大的手机产商之一,在移动端机器学习布局已久。Core ML是一套能够将机器学习模型整合到app中的工具链系统。
移动端深度学习框架 - 图3
在使用时首先要将训练的模型转换为苹果支持的mlmodel格式。随后利用Core ML加载到app中运行。目前针对各种框架都有便捷的转换器可供使用。
移动端深度学习框架 - 图4
整个框架构建于苹果的底层加速组件之上,包括了基础神经网络模块和针对GPU优化的图形学模块和加速器等。在此基础上可以支持主流的视觉、自然语言处理和各种机器学习任务。由于苹果自己进行硬件设计,对于软件有着更多的优化空间,实现了很多设备运行与内存优化。
框架地址: https://developer.apple.com/documentation/coreml

3. Caffe2

这是Facebook推出的轻量化、模块化、可规模化使用的架构,可以适用于多平台的深度学习应用,可以同时适应大规模的云计算和移动端,还提供了一系列预训练模型供开发者使用或进一步训练。目前Caffe2与PyTorch已经合并,以便更有效地打通从训练到部署的全套流程
移动端深度学习框架 - 图5
移动端深度学习框架 - 图6
框架地址:https://caffe2.ai/

4. Bender

Bender是Xmartlabs开源的一套机器学习框架,框架基于Metal构建。
移动端深度学习框架 - 图7
Bender可以方便地在iOS的app中定义和运行神经网络,比Core ML更加便捷易用,可以支撑更多层数的模型,并完全通过MPS API释放GPU的性能,并可以便捷地增加预处理和后处理层来处理模型输入输出。
移动端深度学习框架 - 图8
移动端深度学习框架 - 图9
框架地址:https://xmartlabs.github.io/Bender/

5. MXNet

亚马逊官方推荐的深度学习框架,是一款灵活高效的深度学习架构,拥有多种语言接口。针对移动端,MXNet提供了轻量化的接口和单一的文件依赖(MXNet Amalgamation)来最大限度的减少开发者配置和部署的工作。所有的接口同一融合成了单一的.cc文件并且只依赖与BLAS库。甚至还有不依赖于BLAS的迷你版本,极大地方便了移动端的开发。
移动端深度学习框架 - 图10
框架地址:https://mxnet.incubator.apache.org/versions/master/faq/smart_device.html#deployment-environments
国内互联网巨头和手机产商在移动端的AI发展中也推出了一系列自研的开源框架,包括百度的MDL,阿里的MNN,腾讯的NCNN和小米的MACE等都在自家的app上接受了市场的考验。

6. NCNN

腾讯推出的手机端前向推理框架,针对手机CPU进行了更深入的优化,不依赖任何第三方库,也不依赖于基本计算框架包。NCNN支持多种复杂的网络结构和操作,可拓展可精简、支持量化与半精度,方便多种常见模型的移植。
此外腾讯还开源了FeatherCNN推理库和PockerFlow模型压缩框架用于移动端AI。
框架地址:
https://github.com/Tencent/PocketFlow
https://github.com/Tencent/FeatherCN

7. paddle-mobile(MDL)

属于百度开源框架飞桨下的移动端项目,针对多种GPU硬件进行优化,除了移动端外也针对嵌入式设备进行过优化,FPGA、树莓派都可以开跑。目前支持飞桨自己的Fluid模型,但可以通过转换器将其他格式的模型转换到Fluid模型。
移动端深度学习框架 - 图11
paddle-mobile主要包含了加载、程序、执行、操作、核以及变量张量管理模块。文档中包含了详细设计架构图可以学习。
框架地址:https://github.com/PaddlePaddle/paddle-mobile/blob/develop/doc/design_doc.md

8. MNN

阿里巴巴开源的轻量级移动端推理引擎,主要负责在移动端上运行模型预测。它针对设备深度优化了多个操作,不依赖于其他包和库,静态库和动态库都在几兆到几百k的量级。支持主流深度学习框架的模型格式。
移动端深度学习框架 - 图12
框架主要包含了转换器部分和解释器部分。转化器中包含了前端和图优化过程,而解释器则包含了加载模型、计算图调度的引擎和负责内存分配,Op实现的后端组成。
移动端深度学习框架 - 图13
框架地址:https://github.com/alibaba/MNN/blob/master/README_CN.md

9. MACE

小米开源的深度学习框架,针对异构平台优化神经网络计算,对卷积操作进行了指令集的优化,支持多种高中低端CPU,GPU芯片和TensorFlow,Caffe等多种模型格式。
移动端深度学习框架 - 图14
框架地址: https://github.com/XiaoMi/mace

10. MindSpore

华为最新发布的手机由一系列AI特别是计算机技术的支撑,其内部拥有一套名为MindSpore的移动端框架。框架设计友好、训练执行高效,具有不同场景不同设备的适应性。
移动端深度学习框架 - 图15
此外各个公司还有一系列没有开源的移动端框架由于自己的产品,包括商汤的PPL (Parrots)、阿里的xNN、高通的SNPE等。

相信随着AI的加速落地和更多移动端、边缘计算对AI的需求,未来会出现更多性能更好、更准确、更快速的模型,在方方面面便捷着我们的生活。
参考资料:
https://zhuanlan.zhihu.com/p/60896625

https://blog.csdn.net/zeusee/article/details/89601634
https://blog.csdn.net/u010333076/article/details/87896734
https://blog.csdn.net/zchang81/article/details/74280019
https://www.zhihu.com/people/nihui-2/activities
https://www.zhihu.com/question/62871439
MindSporehttps://www.huawei.com/en/about-huawei/publications/communicate/86/driving-ai-to-new-horizons
Coral and Nano:https://www.leiphone.com/news/201903/HAmHSBKkpd0rrveF.html
https://www.zhihu.com/question/295045153
https://blog.csdn.net/u010333076/article/details/87896734
https://github.com/XiaoMi/mobile-ai-bench/blob/master/README_zh.md
本文转自 公众号 将门创投,原文地址