移动端的AI部署

1、背景

移动设备相较于 PC ,携带便携,普及率高。近年来,随着移动设备的广泛普及与应用,在移动设备上使用深度学习技术的需求开始涌现。
手机作为最靠近用户、最普及的终端落地,越来越多的算法模型应用到移动端上面,如何高效的把模型部署在移动端成为了急需解决的问题。

1.1、在线模式

在移动端进行简单的预处理之后,然后上传用户数据(图片、文字、语音、视频等)至云端服务器,通过服务器强大的算力得到推理结果,随后将推理结果下发至端设备。
移动端的AI部署_第1张图片

1.2、离线模式

服务器上训练好的模型经过移动端深度学习框架(TensorFlow Lite、NCNN、TNN、MNN、CoreML等)量化压缩、转化后,在移动端设备上进行预测。这种方式在无网络连接的情况下即可实现,保证用户的隐私性。
移动端的AI部署_第2张图片

1.3、不同平台推断差异

在线模式和离线模式的推理平台有所不同,不同平台的推断差异如表1-1所示。
表1-1 不同平台的推断差异

问题维度 基于端设备推断 基于云端服务器推断
延迟性 低延时,实时体验 由于存在异步通信和传输带宽的影响,有一定的延迟
资源能力 cpu/gpu处理能力,设备的算力有限,存储空间受限 云端服务器的算力强大,储存空间充足
网络连接 网络不佳的或者没有的情况下,可以离线运行 需要网络连接才可以运行
成本问题 电池电量、下载模型所需要的时间 数据传输带宽,公司云端服务器的运营和服务成本
隐私问题 不需要上传用户数据(图片、视频、语音、文字等)到云端服务器 用户数据上传云端服务器,隐私性无法保障

2、部分移动端AI推理框架

2.1、TensorFlowLite

1、开源时间:2017年11月(持续更新)
2、开源用户:谷歌
3、GitHub地址
4、简介:
TensorFlow Lite是为了解决TensorFlow在移动平台和嵌入式端过于臃肿而定制开发的轻量级解决方案,是与TensorFlow完全独立的两个项目。TensorFlow Lite则实现了低能耗、低延迟的移动平台机器学习框架,并且使得编译之后的二进制发布版本更小。 TensorFlow Lite不仅支持传统的ARM加速,还为Android Neural Networks API提供了支持,在支持ANN的设备上能提供更好的性能表现。
5、架构
移动端的AI部署_第3张图片

6、优缺点分析

  • 优点
    1)、支持Android&ios,跨平台,得益于Tensorflow强大的生态
    2)、容易扩展,TFLite增加Tensorflow的算子相对容易
    3)、更小二进制文件库大小,依赖少
  • 缺点
    1)、目前主要支持CNN网络相关算力,对RNN的模型算子的支持偏少
    2)、对运算芯片的优化少,没有做针对性优化
    3)、仅支持Tensorflow模型的转换,对其他框架训练的模型无法转换

2.2、NCNN

1、开源时间:2017年7月(持续更新)
2、开源用户:腾讯
3、GIthub地址
4、简介:ncnn 从设计之初深刻考虑手机端的部署和使用,无第三方依赖,跨平台,手机端 CPU 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 App。ncnn 目前已在腾讯多款应用中使用,如 QQ、Qzone、微信等。
5、架构
移动端的AI部署_第4张图片

6、优缺点分析

  • 优点
    1)、全部由C++实现,无需任何第三方库依赖,跨平台支持Android&ios
    2)、优化内存管理和数据结构设计,内存占用低
    3)、支持多核并行计算加速
    4)、扩展模型设计,支持8bit量化和半精度浮点存储
    5)、优化内存管理和数据结构设计,内存占用低
  • 缺点
    1)、不支持pb模型转换为ncnn模型,只支持Caffe模型的转换
    2)、不支持GPU加速

2.3、Paddle-Lite

1、开源时间:2019年8月(持续更新)
2、开源用户:百度
3、GIthub地址
4、简介:Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎,在多硬件、多平台以及硬件混合调度的支持上更加完备,为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力,有效解决手机算力和内存限制等问题,致力于推动AI应用更广泛的落地。
5、架构
移动端的AI部署_第5张图片

6、优缺点分析

  • 优点
    1)、多模型算子,覆盖分类、检测、定位、OCR多个场景的支持
    2)、高性能,针对不同处理器架构特点实现kernel的定制
    3)、轻量级部署,对模型可以裁剪预测库进一步减小大小
    4)、扩展模型设计,支持8bit量化和半精度浮点存储
    5)、多硬件平台支持,ARM CPU、NVIDIA GPU、苹果GPU、华为NPU、FPGA等
  • 缺点
    1)、代码逻辑复杂,不便于进一步修改复用
    2)、编译过程容易引发崩溃,框架不够成熟
    3)、模型转换十分复杂

2.4、MACE

1、开源时间:2018年6月
2、开源用户:小米
3、GIthub地址
4、简介:一个专为移动端异构计算设备优化的深度学习前向预测框架。 MACE覆盖了常见的移动端计算设备(CPU,GPU和DSP),并且提供了完整的工具链和文档,用户借助MACE能够很方便地在移动端部署深度学习模型。MACE已经在小米内部广泛使用并且被充分验证具有业界领先的性能和稳定性。
5、架构
移动端的AI部署_第6张图片

6、优缺点分析

  • 优点
    1)、支持芯片的功耗管理
    2)、通过内存依赖分析技术,减少内存占用
    3)、支持高通、联发科、松果系列芯片的CPU、GPU、DSP计算加速
    4)、支持Tensorflow、Caffe、ONNX等模型格式的转换
  • 缺点
    1)、OP算子相对较少,场景受限
    2)、不支持ios端
    3)、环境要求苛刻,编译容易出现问题

2.5、MNN

1、开源时间:2019年5月
2、开源用户:阿里
3、GIthub地址
4、简介:轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景
5、架构
移动端的AI部署_第7张图片

6、优缺点分析

  • 优点
    1)、支持多个OP算子,跨平台
    2)、针对端侧设备特点深度定制和裁剪,无任何依赖
    3)、不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥 ARM CPU 的算力
    4)、针对主流模型进行深度调优,满足多种设备需求

  • 待提升
    1)、优化量化的卷积、矩阵乘法
    2)、分步实现端侧训练和边缘学习

3、性能对比

移动端的AI部署_第8张图片

MobileNet V2,在 OPPO r17 和 iPhone 7Plus 上做了一系列的性能对比,MNN在端推理、模型的扩展性、CPU和GPU算子上做出了优化,MNN性能胜出。

4、demo演示

参考博客

Android机器学习文档
淘宝在移动 AI 上的实践
淘宝轻量级的深度学习端侧推理引擎 MNN 开源
移动端深度学习开源框架及部署
深度学习500问
Paddle Lite推理引擎
NCNN推理框架

你可能感兴趣的:(移动端的AI部署)