tft每日頭條

 > 生活

 > 神經網絡預測最新

神經網絡預測最新

生活 更新时间:2024-07-17 14:22:50

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的新架構額外作了優化,新設備可利用半精度計算的特性進一步提速。

神經網絡預測最新(輕量級的深度神經網絡推理引擎MNN)1

易用性

  • 有高效的圖像處理模塊,覆蓋常見的形變、轉換等需求,一般情況下,無需額外引入libyuv或opencv庫處理圖像。
  • 支持回調機制,可以在網絡運行中插入回調,提取數據或者控制運行走向。
  • 支持隻運行網絡中的一部分,或者指定CPU和GPU間并行運行。

架構設計

神經網絡預測最新(輕量級的深度神經網絡推理引擎MNN)2

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優化、手寫彙編、多線程優化、内存複用、異構計算等。

神經網絡預測最新(輕量級的深度神經網絡推理引擎MNN)3

用法

神經網絡預測最新(輕量級的深度神經網絡推理引擎MNN)4

如上圖所示,在端側應用MNN,大緻可以分為三個階段:

  • 訓練

在訓練框架上,根據訓練數據訓練出模型的階段。雖然當前MNN也提供了訓練模型的能力,但主要用于端側訓練或模型調優。在數據量較大時,依然建議使用成熟的訓練框架,如TensorFlow、PyTorch等。除了自行訓練外,也可以直接利用開源的預訓練模型。

  • 轉換

将其他訓練框架模型轉換為MNN模型的階段。MNN當前支持Tensorflow(Lite)、Caffe和ONNX的模型轉換。模型轉換工具可以參考編譯文檔和使用說明。支持轉換的算子,可以參考算子列表文檔;在遇到不支持的算子時,可以嘗試自定義算子,或在Github上給我們提交issue。

此外,模型打印工具可以用于輸出模型結構,輔助調試。

除模型轉換外,MNN也提供了模型量化工具,可以對浮點模型進行量化壓縮。

  • 推理

在端側加載MNN模型進行推理的階段。端側運行庫的編譯請參考各平台的編譯文檔:iOS、Android、Linux/macOS/Ubuntu、Windows。我們提供了API接口文檔,也詳細說明了會話創建、數據輸入、執行推理、數據輸出相關的接口和參數。

此外,測試工具和benchmark工具也可以用于問題定位。

私信回複"mnn"獲取鍊接地址,喜歡的點個關注,一起學習探讨新技術。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved