淘寶開源深度學習端側推理引擎 MNN

2021-03-06 Python中文社區

本文由淘寶技術授權,轉載請聯繫原作者

與 Tensorflow、Caffe2 等同時覆蓋訓練和推理的通用框架相比,MNN 更注重在推理時的加速和優化,解決在模型部署的階段的效率問題,從而在移動端更高效地實現模型背後的業務。這和伺服器端 TensorRT 等推理引擎的想法不謀而合。

在大規模機器學習應用中,考慮到大規模的模型部署,機器學習的推理側計算量往往是訓練側計算量的十倍以上,所以推理側的優化尤其重要。

                                                                  ——賈揚清(阿里巴巴技術副總裁)

https://github.com/alibaba/MNN

MNN 是一個輕量級的深度學習端側推理引擎,核心解決深度神經網絡模型在端側推理運行問題,涵蓋深度神經網絡模型的優化、轉換和推理。目前,MNN已經在手淘、手貓、優酷、聚划算、UC、飛豬、千牛等 20 多個 App 中使用,覆蓋直播、短視頻、搜索推薦、商品圖像搜索、互動營銷、權益發放、安全風控等場景,每天穩定運行上億次。此外,菜鳥自提櫃等 IoT 設備中也有應用。在 2018 年雙十一購物節中,MNN 在天貓晚會笑臉紅包、掃一掃明星猜拳大戰等場景中使用。

MNN 負責加載網絡模型,推理預測返回相關結果,整個推理過程可以分為模型的加載解析、計算圖的調度、在異構後端上高效運行。MNN 具有通用性、輕量性、高性能、易用性的特徵:

通用性:

支持 Tensorflow、Caffe、ONNX 等主流模型格式,支持 CNN、RNN、GAN 等常用網絡;

支持 86 個 TensorflowOp、34 個 CaffeOp ;各計算設備支持的 MNN Op 數:CPU 71 個,Metal 55 個,OpenCL 40 個,Vulkan 35 個;

支持 iOS 8.0+、Android 4.3+ 和具有POSIX接口的嵌入式設備;

支持異構設備混合計算,目前支持 CPU 和 GPU,可以動態導入 GPU Op 插件,替代 CPU Op 的實現;

輕量性:

針對端側設備特點深度定製和裁剪,無任何依賴,可以方便地部署到行動裝置和各種嵌入式設備中;

iOS 平臺上,armv7+arm64 靜態庫大小 5MB 左右,連結生成可執行文件增加大小 620KB 左右,metallib 文件 600KB 左右;

Android 平臺上,so 大小 400KB 左右,OpenCL 庫 400KB 左右,Vulkan 庫 400KB 左右;

高性能:

不依賴任何第三方計算庫,依靠大量手寫彙編實現核心運算,充分發揮 ARM CPU 的算力;

iOS 設備上可以開啟 GPU 加速(Metal),支持iOS 8.0以上版本,常用模型上快於蘋果原生的 CoreML;

Android 上提供了 OpenCL、Vulkan、OpenGL 三套方案,儘可能多地滿足設備需求,針對主流 GPU(Adreno和Mali)做了深度調優;

卷積、轉置卷積算法高效穩定,對於任意形狀的卷積均能高效運行,廣泛運用了 Winograd 卷積算法,對 3x3 -> 7x7 之類的對稱卷積有高效的實現;

針對 ARM v8.2 的新架構額外作了優化,新設備可利用半精度計算的特性進一步提速;

易用性:


如上圖所示,MNN 可以分為Converter和Interpreter兩部分。

Converter由Frontends和Graph Optimize構成。前者負責支持不同的訓練框架,MNN 當前支持 Tensorflow(Lite)、Caffe 和 ONNX;後者通過算子融合、算子替代、布局調整等方式優化圖。

Interpreter由Engine和Backends構成。前者負責模型的加載、計算圖的調度;後者包含各計算設備下的內存分配、Op 實現。在Engine和Backends中,MNN應用了多種優化方案,包括在卷積和反卷積中應用 Winograd 算法、在矩陣乘法中應用 Strassen 算法、低精度計算、Neon 優化、手寫彙編、多線程優化、內存復用、異構計算等。

採用業務常用的 MobileNet、SqueezeNet 和主流開源框架進行比較,結果如下圖:

MNN 相比於 NCNN、Mace、Tensorflow Lite、Caffe2 都有 20% 以上的優勢。我們其實更加聚焦在內部使用的業務模型優化上,針對人臉檢測等模型進行深入優化,iPhone6 可以達到單幀檢測 5ms 左右。

註:Mace、Tensorflow Lite、Caffe2 均使用截止 2019 年 3 月 1 日 GitHub 代碼倉庫的 master 分支;NCNN 由於編譯問題採用 20181228 Release 預編譯庫。

隨著手機算力的不斷提升,以及深度學習的快速發展,特別是小網絡模型不斷成熟,原本在雲端執行的推理預測就可以轉移到端上來做。端智能即在端側部署運行 AI 算法,相比服務端智能,端智能具有低延時、兼顧數據隱私、節省雲端資源等優勢。目前端智能正逐漸變為趨勢,從業界來看,它已經在 AI 攝像、視覺特效等場景發揮了巨大價值。

手淘作為電商的超級 App ,業務形態豐富,拍立淘、直播短視頻、互動營銷、試妝、個性化推薦搜索等業務場景都有端智能訴求,結合端智能能力,可以給用戶帶來新的交互體驗,助力業務創新突破。

一般來說,端側深度學習的應用可以分成如下幾個階段:

模型訓練階段,主要解決模型訓練,利用標註數據訓練出對應的模型文件。面向端側設計模型時,需要考慮模型大小和計算量;

模型壓縮階段,主要優化模型大小,可以通過剪枝、量化等手段降低模型大小,以便在端上使用;

模型部署階段,主要實現模型部署,包括模型管理和部署、運維監控等;

端側推理階段,主要完成模型推理,即加載模型,完成推理相關的所有計算;

由上可知,端側推理引擎是端智能應用的核心模塊,需要在有限算力、有限內存等限制下,高效地利用資源,快速完成推理。可以說,端側推理引擎實現的優劣,直接決定了算法模型能否在端側運行,決定了業務能否上線。因此,我們需要一個端側推理引擎,一個優秀的端側推理引擎。

在 2017 年初,我們在開始引擎研發之前,重點調研了系統方案和開源方案,從通用性、輕量性、高性能、安全性等方面深入分。CoreML 是 Apple 的系統框架,MLKit 和 NNAPI 是 Android 的系統框架,系統框架最大的優勢是輕量性 —— 在包大小方面相對寬裕。而最大的劣勢是通用性,CoreML 需要 iOS 11+,MLKit 和NNAPI 需要 Android 8.1+,可以覆蓋的機型非常有限,同時難以支持嵌入式設備的使用場景。此外,系統框架支持的網絡類型、Op 類型都較少,可拓展性又較差,還未能充分利用設備的算力,加之存在模型安全方面的問題。綜上種種,系統框架不是一個很好的選擇。開源方案中 Tensorflow Lite 宣而未發,Caffe  較成熟但不是面向端側場景設計和開發的,NCNN 則剛剛發布還不夠成熟。總的來說,我們找不到一套面向不同訓練框架,不同部署環境,簡單高效安全的端側推理引擎。

因此,我們希望提供面向不同業務算法場景,不同訓練框架,不同部署環境的簡單、高效、安全的端側推理引擎 MNN 。能夠抹平 Android 和 iOS 的差異,碎片設備之間的差異,不同訓練框架的差異,實現快速的在端側部署運行,並且能夠根據業務模型進行 OP 靈活添加和 CPU/GPU 等異構設備深入性能優化。

隨著時間推移,NCNN、Tensorflow Lite、Mace、Anakin 等逐步升級和開源,給與我們很好的輸入和借鑑。我們隨著業務需求也在不斷迭代和優化,並且經歷了雙十一考驗,已經相對成熟和完善,所以開源給社區,希望給應用和 IoT 開發者貢獻我們的力量。

目前,MNN 已經在手淘、貓客、優酷、聚划算、UC、飛豬、千牛等20+集團App中集成,在拍立淘、直播短視頻、互動營銷、實人認證、試妝、搜索推薦等場景使用,每天穩定運行上億次。2018年雙十一購物節中,MNN 也在貓晚笑臉紅包、掃一掃明星猜拳大戰等場景中使用。

拍立淘是在手淘裡面的一個圖像搜索和識別產品,從14年首次上線經過不斷迭代發展目前已經成長為 UV 超過千萬的應用。其中的技術也在不斷迭代更新,從最早的拍照上傳圖片雲端識別,演進到目前在端上做物體識別和摳圖再上傳雲端識別,有效的提升了用戶體驗同時節省了服務端計算成本。針對一些簡單的物體分類萬物識別和 logo 識別,目前也已經支持直接通過端上的模型進行實時識別。

笑臉紅包是18年雙十一貓晚開場的第一個節目,這個玩法是基於實時人臉檢測和表情識別能力做的,相比之前各種通過屏幕觸控的交互玩法,這個活動通過攝像頭實時人臉檢測算法實現從傳統觸控交互玩法到自然交互玩法的跨越,給用戶帶來新的用戶體驗。

集五福是19年春節的活動,也是手淘第一次通過掃年貨的方式加入到這個活動中來。通過掃一掃商品識別能力,識別紅色年貨,除了福卡之外,還能得到羽絨被、五糧液、茅臺、帝王蟹等實物大獎和貓超、天貓精靈等無門檻優惠券,讓家裡的年貨變成下金蛋的「母雞」。

我們計劃每兩個月 Release 一個穩定版本。當前規劃如下:

模型優化方面

完善 Converter 圖優化

完善對量化的支持,增加對稀疏的支持

調度優化方面

增加模型 flops 統計

針對設備硬體特性動態調度運行策略

計算優化

現有 Backend 持續優化(CPU/OpenGL/OpenCL/Vulkan/Metal)

優化 Arm v8.2 Backend,支持量化模型

使用 NNAPI,增加 NPU Backend

應用快速矩陣乘法、Winograd 算法優化性能

其他

文檔和示例

完善 test、benchmark 相關工具

支持更多 Op

▼ 點擊成為社區註冊會員          「在看」一下,一起PY!

相關焦點

  • 阿里開源!輕量級深度學習端側推理引擎 MNN
    AI科學家賈揚清如此評價道:「與 Tensorflow、Caffe2 等同時覆蓋訓練和推理的通用框架相比,MNN 更注重在推理時的加速和優化,解決在模型部署的階段的效率問題,從而在移動端更高效地實現模型背後的業務。這和伺服器端 TensorRT 等推理引擎的想法不謀而合。
  • 阿里巴巴開源輕量級深度神經網絡推理引擎MNN
    點擊我愛計算機視覺標星,更快獲取CVML新技術導讀:在移動端進行深度神經網絡推理,可以使用騰訊開源的ncnn,或者小米開源的Mace
  • MNN推理引擎最新實測,CPU、GPU性能全面領先!
    每當有深度學習框架開源時,我們也和廣大的吃瓜群眾一樣,期冀著是不是能有一波新的浪潮,把端側AI託上一個新的高度。但同時,出於同行們對MNN的認可,我們幾乎每一次都會在對比的榜單上出鏡,有時甚至是唯一競對。高處不勝寒哪。在正文之前,要先讚揚一下騰訊的開源精神。2017年,NCNN吹響了國內引擎開源的號角,為諸多後來者樹立了榜樣。
  • MNN推理引擎框架簡介
    1.MNN介紹隨著手機算力的不斷提升,以及深度學習的快速發展,特別是小網絡模型不斷成熟,原本在雲端執行的推理預測就可以轉移到端上來做。端智能即在端側部署運行AI算法,相比服務端智能,端智能具有低延時、兼顧數據隱私、節省雲端資源等優勢。
  • 賈揚清推薦:阿里開源輕量級深度學習框架 MNN,側重推理加速和優化
    >來源:淘寶技術【新智元導讀】阿里近日正式開源了輕量級深度學習端側推理引擎「MNN」。與 Tensorflow、Caffe2 等同時覆蓋訓練和推理的通用框架相比,MNN 更注重在推理時的加速和優化,在大規模機器學習應用中具有優勢。本文詳細闡述了MNN背後的技術框架和規劃。近日,阿里正式開源輕量級深度學習端側推理引擎「MNN」。
  • MNN: 高效地移動端推理引擎
    , 使用了改進的算法和數據局部 ;後端抽象模塊, 混合調度,引擎輕量移動端推理框架有: TF-Lite, NCNN, CoreML(Apple), ...移動端推理框架的主要挑戰有3方面:1)模型兼容: TensorFlow, PyTorch, Caffe, CNTK, MXNet; 模型兼容不同的格式和不同的算子。
  • 移動端模型部署利器,阿里 MNN 正式版發布!
    MNN 的誕生源於淘系技術部的一群對技術充滿熱情的同學,在充分的行業調研後認為當時的推理引擎如 TFLite 不足以滿足手機淘寶這樣一個億級用戶與日活的超級
  • 一年的打磨,MNN正式版發布!
    MNN 的誕生源於淘系技術部的一群對技術充滿熱情的同學,在充分的行業調研後認為當時的推理引擎如 TFLite 不足以滿足手機淘寶這樣一個億級用戶與日活的超級
  • 《MNN For Swift》移動端機器學習實戰課程發布!
    ,淘系技術部-端智能團隊自研的 MNN 推理引擎,因為其高性能、易用性以及優秀兼容性受到不少開發者的支持和喜愛。通過這兩個項目,希望能給各位帶來清晰的端智能學習路徑。MNN 工作檯是淘系技術部 - 端智能團隊在今年 10 月份對外公測的一站式端側 AI 平臺。它是集低門檻預訓練模版、開箱即用算法集、多端一鍵部署於一體的機器學習工具箱,通過 MNN 工作檯,每個人都可以在幾分鐘內完成模型訓練並部署到手機上運行看到應用效果。
  • 騰訊優圖開源深度學習推理框架 TNN
    6 月 10 日,騰訊優圖實驗室宣布正式開源新一代移動端深度學習推理框架 TNN,通過底層技術優化實現在多個不同平臺的輕量部署落地,性能優異、簡單易用。基於 TNN,開發者能夠輕鬆將深度學習算法移植到手機端高效的執行,開發出人工智慧 APP,真正將 AI 帶到指尖。
  • 輕量級部署,騰訊優圖開源深度學習推理框架TNN
    6 月 10 日,騰訊優圖實驗室宣布正式開源新一代移動端深度學習推理框架 TNN。從學界到工業界,「開源」已經成為 AI 領域的關鍵詞。
  • 輕鬆調用TensorFlow、PyTorch等多框架,Uber開源深度學習推理引擎Neuropod
    近日,Uber ATG 開源了深度學習推理引擎 Neuropod,對外只提供一個通用接口用於運行深度學習模型,而底層可以調用不同的深度學習框架,如 TensorFlow、PyTorch、Caffe2、Keras 等。這將有助於企業在異構環境中大規模部署多個 DL/ML 模型。
  • 開源項目介紹 |TNN-跨平臺AI推理框架
    同時也借鑑了業界主流開源框架高性能和良好拓展性的優點。目前TNN已經在騰訊業務手Q、微視、P圖等廣泛落地應用,歡迎大家參與協同共建,促進TNN推理框架進一步完善。姚達,TNN框架技術負責人田恆鋒,TNN框架CPU側架構師王星晨,TNN框架CPU側架構師導師寄語:「AI推理優化是一套系統工程,希望通過TNN相關輔導,能夠幫助學員在硬體架構、應用框架等方向提升發現問題、解決問題的能力」——姚達「TNN專注於深度學習推理部署,其中GPU在整個深度學習框架中佔據了重要位置
  • 國產開源深度學習軟體框架介紹
    三、國內主要開源深度學習框架簡介本節分別簡要介紹國內五款主要開源深度學習軟體框架產品,提供下載地址和相關信息。(一)百度的飛漿(PaddlePaddle)飛槳(PaddlePaddle)是由百度研發的開源深度學習框架。
  • 小米AI移動端深度學習框架MACE開源了!
    我們決定繼續擁抱開源,很快就推出了深度學習雲服務——小米Cloud-ML。這個項目一方面造福了各個業務,一方面打造了雲服務的能力。曾經我有些擔心,雲計算和大數據時代相關的開源軟體和企業很多,AI時代是否同樣會如此。我在矽谷跟Facebook、谷歌負責AI的科學家深度交流,他們的答案可能不盡相同,但有一點是共同的,他們要通過開放、開源,打造自己的社區,打造自己在某些領域的優勢。
  • 騰訊優圖開源人臉識別底層技術:一款深度學習推理框架TNN
    TNN是一款移動端推理框架,具有高性能、輕量級的特點,擁有跨平臺、高性能、模型壓縮、代碼裁剪等眾多優勢。目前TNN已經在手機QQ、微視、P圖等應用中落地。        TNN框架在原有Rapidnet、ncnn框架的基礎上進一步加強了對移動端設備的支持,在性能方面也有所優化,同時借鑑了業界主流開源框架的優點,高性能和良好拓展性。
  • 零基礎,全開源 | 基於web的遠程深度學習服務搭建
    這方面可以利用的開源資源有很多,例如ncnn,mnn,tensorflow lite等。雖然終端離線部署模型具有很大的優勢,高效,快速,低延時,能夠帶來很好的體驗,但是也存在一些缺點,例如模型不能太大,且對於不同的硬體平臺需要重新部署,開發周期比較長。所以在那些延時沒有那麼苛刻的場景,使用基於web的深度學習推理服務是非常方便的。
  • 阿里又出新玩法|開箱即用的算法集 MNN Kit
    作者 | MNN團隊出品 | 阿里巴巴新零售淘系技術部端智能(On-Device AI)近年來已經從移動開發中的有意思的嘗試,慢慢發展成為移動開發工程師核心的工具。今天的移動開發,AI隨處可見:從手機淘寶裡的拍立淘,到淘寶直播裡的商品識別,到頭條的個性化推薦,到抖音直播裡的人臉識別,人工智慧在移動app裡發揮的作用越來越大。
  • 含代碼 | 支付寶如何優化移動端深度學習引擎?
    考慮到移動端資源的限制,深度學習引擎的落地面臨著性能、機型覆蓋、SDK尺寸、內存使用、模型尺寸等多個方面的嚴峻挑戰。本文介紹如何從模型壓縮和引擎實現兩個方面的聯合優化,應對上述挑戰,最終實現技術落地,希望對大家有所啟發。
  • 曠視研究院田忠博:中國缺少重量級的開源項目,國產開源需要更加自信 | 開源三十人
    天元通過重寫動態執行引擎,打破過去幾個版本中動態圖的限制,將整體的動態圖和動態訓練能力提升到了新的階段,能夠以更高的自由度來進行算法和模型訓練。開發集成了一套基於 MLIR 的 JIT 引擎,則是另一項關鍵的升級,天元嘗試利用 MLIR 方案進行計算圖的進一步融合、優化以整體提升深度學習訓練和推理的速度。