---------------- 2018.12.07 分割線 ----------------
各大公司開源了自己的移動端深度學習架構,其中包括TensorFlow Lite、Caffe2、MACE、paddle-mobile(MDL)、FeatherCNN、NCNN等。我們參考開源的測試結果,結合自己整理的資料,針對主流的異動單深度學習架構進行簡單對比及介紹。
架構 | 機構 | 支援平台 | Stars | Forks |
---|---|---|---|---|
Caffe2 | ARM | 8270* | 2080* | |
TF_lite | 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剛開源,可能還有不少坑。
相信将來會有更多的技術手段用于移動端部署深度學習網絡,包括模型壓縮、異構加速、彙編優化等。