本文是对阿里MNN一篇论文的解读,学习重点是了解MNN相较于其他移动端深度学习框架有何优劣,尤其对于移动端人员来说,其中涉及的一些关键概念和优化方案,很值得理解和借鉴。

MNN.pdf

导读

MNN:https://github.com/alibaba/MNN/blob/master/README_CN.md

在移动设备上部署深度学习模型最近越来越受到关注。然而,设计 设备上的高效推理引擎面临着模型兼容性、设备多样性和 资源限制。为了应对这些挑战,我们提出了移动神经网络 (MNN),这是一种通用且 为移动应用量身定制的高效推理引擎。在本文中,MNN 的贡献包括:(1) 提出一种称为预推理的机制,可以进行运行时优化; (2)交付彻底 对算子进行内核优化以实现最佳计算性能; (3) 引入后端抽象 启用混合调度并保持引擎轻量级的模块。广泛的基准实验 证明 MNN 与其他流行的轻量级深度学习框架相比表现出色。 MNN是 可在以下网址公开:https://github.com/alibaba/MNN。 (mobile neural network 移动神经网络推理引擎)

Introduction

927702335.png

VulKan,OpenGL、OpenCl、GPU、CPU

深度学习已成为人工智能在包括计算机视觉、 用户意图识别(Guo 等,2019)和自动驾驶(LeCun 等,2015)。作为边缘设备(例如,智能手机、 物联网设备、可穿戴设备)现在无处不在,深入 在边缘设备上学习,尤其是移动设备,吸引了 越来越受到关注(Shi et al., 2016)。在手机上进行深度学习有很多优点,例如,低 延迟、隐私保护和个性化服务。至 充分利用设备端深度学习技术,开发了适合移动设备的推理引擎 并广泛用于移动应用程序,例如, TF-Lite(谷歌,2017a)(谷歌,2017a),NCNN(腾讯, 2017)、CoreML(苹果,2017)等。 移动推理引擎面临的主要挑战可能是 分为三个方面:模型兼容、、设备多样性和资源限制。

(1) 模型兼容性。大多数部署在移动设备上的深度学习模型都是从众所周知的 TensorFlow 等深度学习框架(Abadi 等人, 2016)、PyTorch (Paszke et al., 2017)、Caffe (Jia et al., 2014)、 CNTK(Yu 等,2014)、MXNet(Chen 等,2015)。作为 因此,推理引擎是一个基本要求 应具有不同格式和不同运算符的模型兼容性。更重要的是,引擎应该还允许适当的可扩展性以支持新的引擎未来出现。

(2) 设备多样性。几乎所有知名的移动应用程序都广泛用于各种设备,范围包括 从单核CPU的低端设备到Apple Neural等协处理器的高端设备 引擎 (ANE)。为了在各种方面取得出色的表现 设备,移动推理引擎必须带硬件 架构甚至设备供应商(如 ARM Mali GPU 或 Qualcomm Adreno GPU)考虑在内。此外,该引擎也有望很好地解决软件多样性问题,例如不同的操作 系统(Android/iOS/嵌入式操作系统)和不同的解决方案 标准(OpenCL (Khronos, 2009)/OpenGL (Khronos, 1992)/Vulkan (Khronos, 2015) for Android GPU)。

(3)资源限制。尽管硬件发展迅速,但内存和计算能力仍然受限于移动设备并且是数量级的 低于他们的台式机和服务器同行。

综上所述,一个好的移动推理引擎应该具备以下两个特性

(1) 解决模型兼容性和设备的通用性、多样性;

(2) 在设备上推理模型的效率 出色的性能,使用最少的内存和能源 尽量消费。

为了满足上述特性,我们引入了一个新的移动 名为移动神经网络 (MNN) 的推理引擎。 我们的贡献可以总结如下: