天天看點

移動端深度學習架構小結

---------------- 2018.12.07 分割線 ----------------

各大公司開源了自己的移動端深度學習架構,其中包括TensorFlow Lite、Caffe2、MACE、paddle-mobile(MDL)、FeatherCNN、NCNN等。我們參考開源的測試結果,結合自己整理的資料,針對主流的異動單深度學習架構進行簡單對比及介紹。

架構 機構 支援平台 Stars Forks
Caffe2 Facebook ARM 8270* 2080*
TF_lite Google ARM * *
MACE Xiaomi ARM/DSP/GPU 2442 412
paddle-mobile Baidu ARM/GPU 4038 774
FeatherCNN Tencent ARM 658 170
NCNN Tencent ARM 4606 1163

二、性能對比 (截至2018.09)

1. NCNN / FeatherCNN / MACE

CPU:kryo&2.15GHz*2 (ms)

架構 SqueezeNet_v1.1 MobileNet_v1 ResNet18
NCNN 47.64 68.71 142.28
FeatherCNN 36.39 58.92 100.13
MACE 42.37 65.18 160.7

2. paddle-mobile (MDL)

CPU:高通835 (ms)

架構 squeezenet mobilenet_v1 googlenet_v1
1 Thread 82.41 105.43 341.25
2 Threads 56.17 62.75 233.35
4 Threads 36.45 37.13 158.55

三、架構評價

架構 內建成本 庫檔案大小 模型支援程度 文檔完整程度 速度
caffe2 一般 良好 優秀 良好 一般
TF_Lite 一般 良好 優秀 良好 優秀
MACE 良好 優秀 良好 良好 優秀
MDL 優秀 優秀 良好 良好 良好
FeatherCNN 良好 優秀 良好 良好 優秀
NCNN 優秀 優秀 良好 優秀 優秀

四、幾款移動端深度學習架構分析

移動端的架構,基本不支援訓練,隻支援前向推理。

1.騰訊的FeatherCNN和ncnn

這兩個架構都是騰訊出的,FeatherCNN來自騰訊AI平台部,ncnn來自騰訊優圖。

重點是:都開源,都隻支援CPU

ncnn開源早點,文檔、相關代碼豐富一些,使用者相對多一些。FeatherCNN開源晚,底子很好,從測試結果看,速度具有微弱優勢。

2.百度的 paddle-mobile(MDL)

MDL可以支援CPU和GPU,FPGA在開發中。

3.小米的 MACE

它有幾個特點:異構加速、彙編級優化、支援各種架構的模型轉換。

小米支援的GPU不限于高通,這點很通用,很好,比如瑞芯微的RK3299就可以同時發揮出cpu和GPU的好處來。

1. 起因

昨天看到小米開源了深度學習架構MACE(https://github.com/XiaoMi/mace) 

看到它有幾個特點:異構加速、彙編級優化、支援各種架構的模型轉換。

整體來看,料很足,特别是異構的支援,非常有誠意。 

有了異構,就可以在CPU、GPU和DSP上跑不同的模型,實作真正的生産部署,比如人臉檢測、人臉識别和人臉跟蹤,可以同時跑在不同的硬體上。小米支援的GPU不限于高通,這點很通用,很好,比如瑞芯微的RK3299就可以同時發揮出cpu和GPU的好處來。

看到知乎上也有讨論:如何評價小米開源AI架構MACE?

貼張圖 

移動端深度學習架構小結
移動端深度學習架構小結

2. 說說其它幾款移動端深度學習架構

既然是移動端的架構,基本不支援訓練,隻支援前向推理。

2.1 SNPE

這是骁龍的官方SDK,不開源。主要支援自家的DSP、GPU和CPU。

由于對DSP的支援,使得骁龍在沒有NPU的情況下沒有被華為甩太遠。而且隻要後續DSP夠強,甩開NPU也未可知。

2.2 騰訊的FeatherCNN和ncnn

這兩個架構都是騰訊出的,FeatherCNN來自騰訊AI平台部,ncnn來自騰訊優圖。

重點是:都開源,都隻支援cpu

ncnn開源早點,性能上有微弱優勢(目前是201806),用的人多點。FeatherCNN開源晚,底子很好。

github: FeatherCNN, ncnn

知乎讨論:

如何評價騰訊開源高性能神經網絡計算庫 FeatherCNN?

ncnn與tensorflow lite相比有什麼特有什麼特點?

2.3 百度的mobile-deep-learning(MDL)

我不是很了解,主要從知乎和github上了解的。 

看樣子是支援cpu和gpu的,沒看到DSP。

開源位址:https://github.com/baidu/mobile-deep-learning

知乎讨論(如何評價百度剛剛開源的mobile-deep-learning?)上,有人說它有很重的抄襲caffe的痕迹。

2.4 其它

在移動端,caffe、tensorflow lite都可以考慮,隻是可能沒有上門的架構效率高。

另外據說支付寶有xNN的深度架構,商湯有PPL架構,這兩個都是企業自用沒有開源,聽聽就好。

國内杭州九言科技的開源方案(github),用的人不多,可以參考。

3. 總結

上面的大部分架構都是主要面向android的,但是用于arm-Linux也是可以的。

現在越來越多的廠商開源移動端的深度學習架構,對于從業者是好事,有更多的選擇,不用從頭造輪子。

我個人比較欣賞ncnn和小米的MACE,比較欣賞其異構加速能力,隻是MACE剛開源,可能還有不少坑。

相信将來會有更多的技術手段用于移動端部署深度學習網絡,包括模型壓縮、異構加速、彙編優化等。