内容简介:导读:在移动端进行深度神经网络推理,可以使用腾讯开源的ncnn,或者小米开源的Mace,还有百度家的Paddle-Mobile,他们可以帮助开发者在无需过多了解移动端CPU和GPU优化的情况下,快速部署充分利用硬件加速的应用。刚刚,阿里巴巴也开源了一款工具MNN——Mobile Neural Network 轻量级的深度神经网络推理引擎,并且已经在阿里巴巴内部经过线上部署验证,值得大家参考!
导读:在移动端进行深度神经网络推理,可以使用腾讯开源的ncnn,或者小米开源的Mace,还有百度家的Paddle-Mobile,他们可以帮助开发者在无需过多了解移动端CPU和GPU优化的情况下,快速部署充分利用硬件加速的应用。
刚刚,阿里巴巴也开源了一款工具MNN——Mobile Neural Network 轻量级的深度神经网络推理引擎,并且已经在阿里巴巴内部经过线上部署验证,值得大家参考!
简介
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。
整体特点
轻量性
-
针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
-
iOS平台:armv7+arm64静态库大小5MB左右,链接生成可执行文件增加大小620KB左右,metallib文件600KB左右。
-
Android平台:so大小400KB左右,OpenCL库400KB左右,Vulkan库400KB左右。
通用性
-
支持
Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用网络。 -
支持86个
TensorflowOp、34个CaffeOp;各计算设备支持的MNN Op数:CPU 71个,Metal 55个,OpenCL 29个,Vulkan 31个。 -
支持iOS 8.0+、Android 4.3+和具有POSIX接口的嵌入式设备。
-
支持异构设备混合计算,目前支持CPU和GPU,可以动态导入GPU Op插件,替代CPU Op的实现。
高性能
-
不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥ARM CPU的算力。
-
iOS设备上可以开启GPU加速(Metal),常用模型上快于苹果原生的CoreML。
-
Android上提供了
OpenCL、Vulkan、OpenGL三套方案,尽可能多地满足设备需求,针对主流GPU(Adreno和Mali)做了深度调优。 -
卷积、转置卷积算法高效稳定,对于任意形状的卷积均能高效运行,广泛运用了 Winograd 卷积算法,对3x3 -> 7x7之类的对称卷积有高效的实现。
-
针对ARM v8.2的新架构额外作了优化,新设备可利用半精度计算的特性进一步提速。
易用性
-
有高效的图像处理模块,覆盖常见的形变、转换等需求,一般情况下,无需额外引入libyuv或opencv库处理图像。
-
支持回调机制,可以在网络运行中插入回调,提取数据或者控制运行走向。
-
支持只运行网络中的一部分,或者指定CPU和GPU间并行运行。
架构设计
MNN可以分为Converter和Interpreter两部分。
Converter由Frontends和Graph Optimize构成。前者负责支持不同的训练框架,MNN当前支持Tensorflow(Lite)、Caffe和ONNX(PyTorch/MXNet的模型可先转为ONNX模型再转到MNN);后者通过算子融合、算子替代、布局调整等方式优化图。
Interpreter由Engine和Backends构成。前者负责模型的加载、计算图的调度;后者包含各计算设备下的内存分配、Op实现。在Engine和Backends中,MNN应用了多种优化方案,包括在卷积和反卷积中应用Winograd算法、在矩阵乘法中应用Strassen算法、低精度计算、Neon优化、手写汇编、多线程优化、内存复用、异构计算等。
Benchmark性能测试结果记录
2019-2-18
华为P10
Build Flags: ABI=arm64-v8a OpenMP=ON Vulkan=ON OpenCL=ON MNN benchmark Forward type: **CPU** Warming up... --------> Benchmarking... loop = 10 [ - ] vgg16.mnn max = 499.545ms min = 410.570ms avg = 445.868ms [ - ] SqueezeNetV1.0.mnn max = 49.437ms min = 38.759ms avg = 43.901ms [ - ] MobileNetV2_224.mnn max = 26.139ms min = 20.400ms avg = 24.489ms [ - ] inception-v3.mnn max = 413.265ms min = 262.142ms avg = 306.542ms [ - ] resnet-v2-50.mnn max = 240.009ms min = 152.649ms avg = 176.075ms [ - ] mobilenet-v1-1.0.mnn max = 89.461ms min = 29.903ms avg = 41.547ms MNN benchmark Forward type: **Vulkan** Warming up... --------> Benchmarking... loop = 10 [ - ] vgg16.mnn max = 293.156ms min = 227.952ms avg = 240.050ms [ - ] SqueezeNetV1.0.mnn max = 47.752ms min = 31.191ms avg = 37.727ms [ - ] MobileNetV2_224.mnn max = 61.352ms min = 35.874ms avg = 46.321ms [ - ] inception-v3.mnn max = 396.939ms min = 180.353ms avg = 349.952ms [ - ] resnet-v2-50.mnn max = 214.694ms min = 100.377ms avg = 169.003ms [ - ] mobilenet-v1-1.0.mnn max = 45.946ms min = 23.257ms avg = 33.217ms
小米Max3
Hardware : Qualcomm Technologies, Inc SDM636 Build Flags: ABI=arm64-v8a OpenMP=ON Vulkan=ON OpenCL=ON MNN benchmark Forward type: **CPU** Warming up... --------> Benchmarking... loop = 10 [ - ] vgg16.mnn max = 1311.661ms min = 1248.531ms avg = 1255.455ms [ - ] SqueezeNetV1.0.mnn max = 151.955ms min = 95.348ms avg = 101.986ms [ - ] MobileNetV2_224.mnn max = 94.336ms min = 50.987ms avg = 58.299ms [ - ] inception-v3.mnn max = 763.095ms min = 690.005ms avg = 698.674ms [ - ] resnet-v2-50.mnn max = 453.710ms min = 389.649ms avg = 396.409ms [ - ] mobilenet-v1-1.0.mnn max = 128.781ms min = 77.023ms avg = 83.134ms MNN benchmark Forward type: **Vulkan** Warming up... --------> Benchmarking... loop = 10 [ - ] vgg16.mnn max = 783.093ms min = 730.928ms avg = 736.894ms [ - ] SqueezeNetV1.0.mnn max = 96.435ms min = 61.809ms avg = 65.574ms [ - ] MobileNetV2_224.mnn max = 71.107ms min = 43.912ms avg = 46.925ms [ - ] inception-v3.mnn max = 436.363ms min = 386.338ms avg = 391.818ms [ - ] resnet-v2-50.mnn max = 303.728ms min = 262.706ms avg = 267.613ms [ - ] mobilenet-v1-1.0.mnn max = 89.119ms min = 56.216ms avg = 59.725ms
开源地址:
https://github.com/alibaba/MNN
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Smashing Book
Jacob Gube、Dmitry Fadeev、Chris Spooner、Darius A Monsef IV、Alessandro Cattaneo、Steven Snell、David Leggett、Andrew Maier、Kayla Knight、Yves Peters、René Schmidt、Smashing Magazine editorial team、Vitaly Friedman、Sven Lennartz / 2009 / $ 29.90 / € 23.90
The Smashing Book is a printed book about best practices in modern Web design. The book shares technical tips and best practices on coding, usability and optimization and explores how to create succes......一起来看看 《The Smashing Book》 这本书的介绍吧!