輕量級深度神經網絡推理引擎——阿里巴巴的 MNN

MNN 是一個輕量級深度神經網絡推理引擎。

倉庫地址:https://github.com/alibaba/MNN

截止目前20190506 發佈了測試版beta0.1.1

 


介紹

MNN是輕量級深度神經網絡推理引擎。可在設備上加載模型並做推理。目前,MNN已經應用在超過20個阿里的app中,比如淘寶、天貓、優酷等等,覆蓋直播,短視頻,搜索推薦,通過圖片搜索產品,互動市場,股權配置,安全管控以及其他場景。此外,MNN也用於嵌入式設備,如IOT物聯網設備。


特性

輕量級

  • 針對設備進行了優化,沒有依賴,容易部署到移動設備和各種嵌入式設備;
  • iOS平臺:armv7+arm64平臺的靜態庫大小約爲5MB, 鏈接可執行程序後大小增加約620KB,metalib文件大約600KB;
  • Android 平臺:core so(核心庫文件)大小約400KB, OpenCL so(OpenCL庫文件)大約400KB, Vulkan so(Vulkan庫文件)文件約400KB;

多功能

  • 支持Tensorflow,Caffe,ONNX框架,支持常規神經網絡,如CNN,RNN,GAN;
  • 支持 86種Tensorflow ops,34種Caffe ops; MNN ops中71個用於CPU,55個用於Metal,29個用於OpenCL, 31個用於Vulkan;
  • 支持iOS 8.0+,Android 4.3+和 具有POSIX接口的嵌入式設備;
  • 支持多設備上的混合計算。當前支持CPU和GPU。GPU op插件可被動態加載,用來取代默認(CPU)op 實現;

 

:Metal 是一種低層次的渲染應用程序編程接口,提供了軟件所需的最低層,保證軟件可以運行在不同的圖形芯片上。Metal 提升了 A7 與 A8 處理器效能,讓其性能完全發揮。

高性能

  • 其中的核心計算使用了大量優化的彙編代碼實現,充分利用了ARM CPU;
  • 對於iOS, 可以打開GPU加速(Metal),這比蘋果原生CoreML要快;
  • 對於Android, 可用OpenCL、Vulkan和OpenGL,並且針對主流GPUs(Adreno和Mali)進行了深度調優;
  • 卷積和轉置卷積( transposition convolution)算法高效且穩定。Winograd卷積算法被廣泛用於更好的對稱卷積,如3x3 ->7x7;
  • 爲新架構ARM v8.2做了額外優化,支持半精度計算;

使用方便

  • 高效的圖像處理模塊,無需libyuv和opencv即可加速彷射變換和顏色空間變化;
  • 在整個工作流中提供回調,以提取數據或精確控制執行;
  • 提供選項在CPU和GPU上選擇推理分支和並行分支;

架構

 MNN可分成兩部分:Converter和Interpreter. (即轉換部分和解析部分)

Converter前端圖優化構成。

前端負責支持不同的訓練框架(如Tensorflow,Caffe,ONNX);MNN當前支持Tensorflow, Tensorflow Lite, Caffe和 ONNX(PyTorch/MXNet) ;

圖優化 通過操作算子融合,操作算子替換,佈局調整來優化網絡圖結構;

Interpreter引擎 後端構成。

引擎負責加載模型和有序導入計算圖;

後端包括內存分配和Op在各個計算單元上的實現;

在引擎和後端上,MNN應用了許多優化方案,包括在卷積和反捲積上用Winograd算法,使用Strassen算法應用與矩陣乘法,低精度計算,Neon指令集優化,手寫彙編,多線程優化,內存重複使用,異構計算等



快速開始


對比


如何自定義

 

 

本文就寫到這,後續使用中會做詳細文章介紹~感謝開源精神!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章