美文网首页
MNN——移动端和嵌入式深度学习库

MNN——移动端和嵌入式深度学习库

作者: 术枚派 | 来源:发表于2021-09-22 19:32 被阅读0次

    MNN是一款轻量级高性能推理引擎,由阿里巴巴开源。它加载模型并在设备上进行推理。 目前,MNN已经集成到阿里巴巴旗下淘宝、天猫、优酷等20多个APP中,涵盖直播、短视频抓取、搜索推荐、图片搜索、互动营销、股权分配、 安全风控等场景。 此外,MNN 还用于嵌入式设备,例如 IoT。


    介绍

    官网文档代码

    特点
    • 轻量

      • 针对设备优化,无依赖,可轻松部署到移动设备和各种嵌入式设备。
      • iOS平台:armv7+arm64平台静态库大小约5MB,链接可执行文件大小增加约620KB,metallib文件约600KB。
      • Android 平台:core so 大小约为 400KB,OpenCL so 约为 400KB,Vulkan so 约为 400KB。
    • 通用性

      • 支持Tensorflow、Caffe、ONNX,支持CNN、RNN、GAN等常用神经网络。
      • 支持 86 个 Tensorflow ops,34 个 Caffe ops; MNN ops: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 的其他优化。
    架构

    MNN 可以分为两部分:转换器和解释器。

    Converter 由 Frontends 和 Graph Optimize 组成。 前者负责支持不同的培训框架。 MNN 目前支持 Tensorflow、Tensorflow Lite、Caffe 和 ONNX(PyTorch/MXNet); 后者通过算子融合、算子替换和布局调整来优化图形。

    解释器由引擎和后端组成。 前者负责模型的加载和计算图的调度; 后者包括每个计算设备下的内存分配和Op实现。 在Engine和Backends中,MNN应用了多种优化方案,包括在卷积和反卷积中应用Winograd算法,在矩阵乘法中应用Strassen算法,低精度计算,Neon优化,手写汇编,多线程优化,内存复用, 异构计算等

    相关文章

      网友评论

          本文标题:MNN——移动端和嵌入式深度学习库

          本文链接:https://www.haomeiwen.com/subject/mcbogltx.html