MNN是一個輕量級的深度神經(jīng)網(wǎng)絡推理引擎,在端側加載深度神經(jīng)網(wǎng)絡模型進行推理預測。
作者:開心的派大星
首發(fā):微信公眾號:NeuroMem
轉自:https://github.com/alibaba/MNN/edit/master/README_CN.md
簡介
MNN是一個輕量級的深度神經(jīng)網(wǎng)絡推理引擎,在端側加載深度神經(jīng)網(wǎng)絡模型進行推理預測。目前,MNN已經(jīng)在阿里巴巴的手機淘寶、手機天貓、優(yōu)酷等20多個App中使用,覆蓋直播、短視頻、搜索推薦、商品圖像搜索、互動營銷、權益發(fā)放、安全風控等場景。此外,IoT等場景下也有若干應用。
整體特點
輕量性
- 針對端側設備特點深度定制和裁剪,無任何依賴,可以方便地部署到移動設備和各種嵌入式設備中。
- iOS平臺:armv7+arm64靜態(tài)庫大小5MB左右,鏈接生成可執(zhí)行文件增加大小620KB左右,metallib文件600KB左右。
- Android平臺:so大小400KB左右,OpenCL庫400KB左右,Vulkan庫400KB左右。
通用性
-
支持
Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用網(wǎng)絡。 -
支持86個
TensorflowOp、34個CaffeOp;各計算設備支持的MNN Op數(shù):CPU 71個,Metal 55個,OpenCL 29個,Vulkan 31個。 - 支持iOS 8.0+、Android 4.3+和具有POSIX接口的嵌入式設備。
- 支持異構設備混合計算,目前支持CPU和GPU,可以動態(tài)導入GPU Op插件,替代CPU Op的實現(xiàn)。
高性能
- 不依賴任何第三方計算庫,依靠大量手寫匯編實現(xiàn)核心運算,充分發(fā)揮ARM CPU的算力。
- iOS設備上可以開啟GPU加速(Metal),常用模型上快于蘋果原生的CoreML。
-
Android上提供了
OpenCL、Vulkan、OpenGL三套方案,盡可能多地滿足設備需求,針對主流GPU(Adreno和Mali)做了深度調(diào)優(yōu)。 - 卷積、轉置卷積算法高效穩(wěn)定,對于任意形狀的卷積均能高效運行,廣泛運用了 Winograd 卷積算法,對3x3 -> 7x7之類的對稱卷積有高效的實現(xiàn)。
- 針對ARM v8.2的新架構額外作了優(yōu)化,新設備可利用半精度計算的特性進一步提速。
易用性
- 有高效的圖像處理模塊,覆蓋常見的形變、轉換等需求,一般情況下,無需額外引入libyuv或opencv庫處理圖像。
- 支持回調(diào)機制,可以在網(wǎng)絡運行中插入回調(diào),提取數(shù)據(jù)或者控制運行走向。
- 支持只運行網(wǎng)絡中的一部分,或者指定CPU和GPU間并行運行。
架構設計
MNN可以分為Converter和Interpreter兩部分。
Converter由Frontends和Graph Optimize構成。前者負責支持不同的訓練框架,MNN當前支持Tensorflow(Lite)、Caffe和ONNX(PyTorch/MXNet的模型可先轉為ONNX模型再轉到MNN);后者通過算子融合、算子替代、布局調(diào)整等方式優(yōu)化圖。
Interpreter由Engine和Backends構成。前者負責模型的加載、計算圖的調(diào)度;后者包含各計算設備下的內(nèi)存分配、Op實現(xiàn)。在Engine和Backends中,MNN應用了多種優(yōu)化方案,包括在卷積和反卷積中應用Winograd算法、在矩陣乘法中應用Strassen算法、低精度計算、Neon優(yōu)化、手寫匯編、多線程優(yōu)化、內(nèi)存復用、異構計算等。
開始使用
工具
如何修改
如何使用Python
交流與反饋
License
Apache 2.0
致謝
MNN參與人員:淘寶技術部、搜索工程團隊、達摩院團隊、優(yōu)酷等集團員工。
MNN參考、借鑒了下列項目:
- Caffe
- flatbuffer
- gemmlowp
- Google Vulkan demo
- Halide
- Mace
- ONNX
- protobuffer
- skia
- Tensorflow
- ncnn
- paddle-mobile
- stb
- rapidjson
推薦閱讀
歡迎關注公眾號,關注模型壓縮、低比特量化、移動端推理加速優(yōu)化、部署。
審核編輯:符乾江
-
神經(jīng)網(wǎng)絡
+關注
關注
42文章
4838瀏覽量
107864 -
人工智能
+關注
關注
1817文章
50115瀏覽量
265576
發(fā)布評論請先 登錄
面向嵌入式部署的神經(jīng)網(wǎng)絡優(yōu)化:模型壓縮深度解析
神經(jīng)網(wǎng)絡的初步認識
NMSIS神經(jīng)網(wǎng)絡庫使用介紹
構建CNN網(wǎng)絡模型并優(yōu)化的一般化建議
在Ubuntu20.04系統(tǒng)中訓練神經(jīng)網(wǎng)絡模型的一些經(jīng)驗
液態(tài)神經(jīng)網(wǎng)絡(LNN):時間連續(xù)性與動態(tài)適應性的神經(jīng)網(wǎng)絡
神經(jīng)網(wǎng)絡的并行計算與加速技術
如何在機器視覺中部署深度學習神經(jīng)網(wǎng)絡
基于米爾瑞芯微RK3576開發(fā)板部署運行TinyMaix:超輕量級推理框架
如何在RK3576開發(fā)板上運行TinyMaix :超輕量級推理框架--基于米爾MYD-LR3576開發(fā)板
信而泰×DeepSeek:AI推理引擎驅動網(wǎng)絡智能診斷邁向 “自愈”時代
大模型推理顯存和計算量估計方法研究
無刷電機小波神經(jīng)網(wǎng)絡轉子位置檢測方法的研究
神經(jīng)網(wǎng)絡專家系統(tǒng)在電機故障診斷中的應用
基于FPGA搭建神經(jīng)網(wǎng)絡的步驟解析
淺談阿里輕量級的深度神經(jīng)網(wǎng)絡推理引擎MNN
評論