隨着AI的廣泛落地,深度學習技術已經進入到我們身邊的每一個角落。從拍照識別到美顏相機、從語音翻譯到文本預測,各式各樣的應用都從電腦走向手機、從雲端落地到移動設備中。如何在移動端更好地部署和使用深度學習模型,充分利用有限的算力實現快速準確的預測是移動端需要解決的關鍵問題。

近年來國內外各個廠家推出了一系列深度學習架構,除了對網絡壓縮、剪枝、量化等常規操作進行了優化,還針對內存、GPU/CPU型號進行了特定提升,甚至在指令集架構的彙編層次進行了深入的優化,使得移動端框架日趨完善。下面就讓我們來一起瀏覽目前廣泛使用的10個深度學習移動端框架(建議先收藏後閱讀)以便在將來的學習工作中更好地進行移動端AI項目的開發和部署

1. TensorFlow Lite

作為深度學習領域最大的框架之一,TensorFlow在2017年針對性地為移動端推出了lite框架系統,為用戶提供訓練模型向移動端的無縫遷移。


在使用TensorFlow Lite時,主要通過打包、轉換、部署和優化四個步驟實現。其中Lite轉換器將訓練好的模型轉換為壓縮格式,而優化部分會將32位的浮點數轉換為8位整型數,或是部署到移動端GPU上進行運算提高計算速度。

框架地址:https://www.tensorflow.org/lite

2. Core ML

蘋果作為最大的手機產商之一,在移動端機器學習布局已久。Core ML是一套能夠將機器學習模型整合到app中的工具鏈系統。


在使用時首先要將訓練的模型轉換為蘋果支持的mlmodel格式。隨後利用Core ML加載到app中運行。目前針對各種框架都有便捷的轉換器可供使用。


整個框架構建於蘋果的底層加速組件之上,包括了基礎神經網絡模塊和針對GPU優化的圖形學模塊和加速器等。在此基礎上可以支持主流的視覺、自然語言處理和各種機器學習任務。由於蘋果自己進行硬件設計,對於軟件有着更多的優化空間,實現了很多設備運行與內存優化。

框架地址: https://developer.apple.com/documentation/coreml

3. Caffe2

這是Facebook推出的輕量化、模塊化、可規模化使用的架構,可以適用於多平台的深度學習應用,可以同時適應大規模的雲計算和移動端,還提供了一系列預訓練模型供開發者使用或進一步訓練。目前Caffe2與PyTorch已經合併,以便更有效地打通從訓練到部署的全套流程

🔗框架地址:https://caffe2.ai/

4. Bender

Bender是Xmartlabs開源的一套機器學習框架,框架基於Metal構建。

Bender可以方便地在iOS的app中定義和運行神經網絡,比Core ML更加便捷易用,可以支撐更多層數的模型,並完全通過MPS API釋放GPU的性能,並可以便捷地增加預處理和後處理層來處理模型輸入輸出。

框架地址:https://xmartlabs.github.io/Bender/

5. MXNet

亞馬遜官方推薦的深度學習框架,是一款靈活高效的深度學習架構,擁有多種語言接口。針對移動端,MXNet提供了輕量化的接口和單一的文件依賴(MXNet Amalgamation)來最大限度的減少開發者配置和部署的工作。所有的接口同一融合成了單一的.cc文件並且只依賴與BLAS庫。甚至還有不依賴於BLAS的迷你版本,極大地方便了移動端的開發。

框架地址:https://mxnet.incubator.apache.org/versions/master/faq/smart_device.html#deployment-environments

國內互聯網巨頭和手機產商在移動端的AI發展中也推出了一系列自研的開源框架,包括百度的MDL,阿里的MNN,騰訊的NCNN和小米的MACE等都在自家的app上接受了市場的考驗。

6. NCNN

騰訊推出的手機端前向推理框架,針對手機CPU進行了更深入的優化,不依賴任何第三方庫,也不依賴於基本計算框架包。NCNN支持多種複雜的網絡結構和操作,可拓展可精簡、支持量化與半精度,方便多種常見模型的移植。


此外騰訊還開源了FeatherCNN推理庫和PockerFlow模型壓縮框架用於移動端AI。

框架地址:
https://github.com/Tencent/PocketFlow
https://github.com/Tencent/FeatherCN

7. paddle-mobile(MDL)

屬於百度開源框架飛槳下的移動端項目,針對多種GPU硬件進行優化,除了移動端外也針對嵌入式設備進行過優化,FPGA、樹莓派都可以開跑。目前支持飛槳自己的Fluid模型,但可以通過轉換器將其他格式的模型轉換到Fluid模型。

paddle-mobile主要包含了加載、程序、執行、操作、核以及變量張量管理模塊。文檔中包含了詳細設計架構圖可以學習。

框架地址:https://github.com/PaddlePaddle/paddle-mobile/blob/develop/doc/design_doc.md

8. MNN

阿里巴巴開源的輕量級移動端推理引擎,主要負責在移動端上運行模型預測。它針對設備深度優化了多個操作,不依賴於其他包和庫,靜態庫和動態庫都在幾兆到幾百k的量級。支持主流深度學習框架的模型格式。


框架主要包含了轉換器部分和解釋器部分。轉化器中包含了前端和圖優化過程,而解釋器則包含了加載模型、計算圖調度的引擎和負責內存分配,Op實現的後端組成。

框架地址:https://github.com/alibaba/MNN/blob/master/README_CN.md

9. MACE

小米開源的深度學習框架,針對異構平台優化神經網絡計算,對卷積操作進行了指令集的優化,支持多種高中低端CPU,GPU芯片和TensorFlow,Caffe等多種模型格式。

框架地址: https://github.com/XiaoMi/mace

10. MindSpore

華為最新發布的手機由一系列AI特別是計算機技術的支撐,其內部擁有一套名為MindSpore的移動端框架。框架設計友好、訓練執行高效,具有不同場景不同設備的適應性。

此外各個公司還有一系列沒有開源的移動端框架由於自己的產品,包括商湯的PPL (Parrots)、阿里的xNN、高通的SNPE等。

相信隨着AI的加速落地和更多移動端、邊緣計算對AI的需求,未來會出現更多性能更好、更準確、更快速的模型,在方方面面便捷着我們的生活。

參考資料:
https://zhuanlan.zhihu.com/p/60896625

https://blog.csdn.net/zeusee/article/details/89601634
https://blog.csdn.net/u010333076/article/details/87896734
https://blog.csdn.net/zchang81/article/details/74280019
https://www.zhihu.com/people/nihui-2/activities
https://www.zhihu.com/question/62871439
MindSporehttps://www.huawei.com/en/about-huawei/publications/communicate/86/driving-ai-to-new-horizons
Coral and Nano:https://www.leiphone.com/news/201903/HAmHSBKkpd0rrveF.html
https://www.zhihu.com/question/295045153
https://blog.csdn.net/u010333076/article/details/87896734
https://github.com/XiaoMi/mobile-ai-bench/blob/master/README_zh.md

本文轉自 公眾號 將門創投,原文地址