Tuesday, October 31, 2017

新-AI從頭學(二):Popular Deep Learning Software Tools

新-AI從頭學(二):Popular Deep Learning Software Tools

2017/11/01

導讀:

有關 Deep Learning 的框架,是用一些程式語言開發而成,旨在讓你可以較輕鬆地完成神經網路的部署,不用從頭造輪子。

本篇文章是之前為了跑一些經典的 CNNs 所寫的系列之一 [26],只有在「導讀」中補充一些資料。至於一開始學 Deep Learning,幾乎什麼都不懂時,也寫了一個很樸素的版本,讀者有興趣可以參考 [27]。

「總體來說我還是很喜歡 PyTorch 的編程模式的,非常好用,推薦 researcher 使用。相反,如果只是想了解一下深度學習,並且快速開發出一套簡單實用的深度學習模型,推薦 Keras+TensorFlow 作為入門工具 [28]。」而較新的訊息是,Theano 已經停止更新了 [29]!

綜合這一年來的訊息,個人的看法是,先選 Caffe 跑一些經典的 CNNs,然後再從 Keras+TensorFlow 或 PyTroch 中擇一或擇二。

-----

Lab DRL_02:深度學習框架

2017/06/07

前言:

本文比較了 Caffe 以及一些其他的深度學習框架的表現!

-----

Summary:

Caffe [1]、TensorFlow [2]-[6]、Theano [7]、Torch [8] 是常見的深度學習框架。本文蒐集了一些框架的比較 [9]-[16],包含以上四種、以及一些較少人用的。

原書第二章前半部有一些 CNN 的介紹 [17],可參考 [18]、[19]。歷史的部分,建議先不要讀 [20],有興趣的話,可以參考 [21]-[24]。

比較部分,也可以參考 [25]。 

-----

圖1.1為常見的 ML/DL Framework 首度公開時間的紀錄。

本文蒐集了一些比較性的文章,共分八個部分探討各種框架的優缺點。

1 General Comparison
2 Speed
3 Complexity
4 Popularity
5 Distributed Execution Support
6 RNN Support
7 Pretrained Support
8 OpenCL Support



Fig. 1.1. A timeline showing the release of ML libraries in the last 25 years, p. 3 [3].


-----

1 General Comparison

圖1.2是比較資料中最完整的一個。包含最後更新日期、核心語言、API 等等。

圖1.3則是很籠統的比較,數星星就可以知道大概哪一個比較好。



Fig. 1.2. Open-source frameworks, p. 2 [15].



Fig. 1.3. Comparison of existing open-source systems (and libraries), p. 5 [11].

-----

2 Speed

如果對效能很重視,那 CNTK 是首選。4GPUs 的效能明顯高於其他,另外還支援 8GPUs 模式。

這裡 Theano 並未支援 Multi GPU,但參考圖2.2,2015年底已有實驗版可取得,在圖1.2的資料裡,Theano 是支援 Multi GPU 的。



Fig. 2.1. Speed comparison of ML frameworks, p. 9 [3].



Fig. 2.2. Properties of Caffe, Neon, Theano, and Torch, p. 2 [10].

-----

3 Complexity

這裡以你需要寫的程式碼的多寡來界定複雜度。

Keras 最好上手,其次是 TensorFlow。Caffe 在中間。Torch 最難用。

程式碼高手多推薦 Torch,較可自由發揮。自排跟手排的概念。



Fig. 3.1. Framework complexity, p. 5 [13].

-----

4 Popularity

受歡迎度,不管在 GitHub 或 Google groups,Caffe 都領先,Theano/Keras 則緊追在後。



Fig. 4.1. Stars and forks received on GitHub, p. 5 [16].



Fig. 4.2. Community involvements for some of the DL frameworks, p. 2 [10].

-----

5 Distributed Execution

根據圖5.1,截至 2016年四月,只有 TensorFlow 支援 distributed execution。根據圖5.2,Torch 跟 Deeplearning4J 也支援 distributed computing。



Fig. 5.1. TensorFlow supports distributed execution, p. 12 [2].



Fig. 5.2. Torch and Deeplearning4J supports distributed execution, p. 29 [14].

-----

6 RNN Support

圖6.1說用 TensorFlow 很難實現 RNN,難歸難,還是可以實現的,參考圖6.2。



Fig. 6.1. TensorFlow is difficult to implement RNN, p. 8 [3].



Fig. 6.2. Processing speed for different LSTM models, p. 14 [7].

-----

7 Pretrained Support

這個資料舊一點,圖7.1說用 GPU 的框架裡,只有 Caffe 支援預訓練模型。也就是一些經典模型,你可以不用自己訓練,直接下載來用就可以。



Fig. 7.1. Caffe supports pretrained models, [1].

-----

8 OpenCL Support

假定想在 Nvidia GPU 以外的硬體上跑,有沒有支援 OpenCL 就是你得考慮的。



Fig. 8.1. DL frameworks with OpenCL support, p. 7 [12].

-----

結論:

青菜蘿蔔,各有所好。 由於我們要實作 [17],所以就直接選 Caffe [1]。如果考慮上手難易,Keras 與 TensorFlow 比較受歡迎。跑得快要選 CNTK,自由發揮則是 Torch。

「Keras 內部的深度學習計算其實是使用 TensorFlow 或 Theano,開發者可以依自己的喜好修改設定,只要更改設定值,就能在使用中央處理器和圖形處理器之間切換,適合初學者及研究人員。缺點是為了同時與 Theano 及 TensorFlow 相容,會損失一些對網路架構的自由度,而且沒辦法使用到底層套件的全部功能 [25]。」

-----

References

[1] 2014_Caffe, Convolutional architecture for fast feature embedding

[2] 2016_A Tour of TensorFlow

[3] 2016_Should I use TensorFlow

[4] 2016_TensorFlow, A system for large-scale machine learning

[5] 2016_Tensorflow, Large-scale machine learning on heterogeneous distributed systems

[6] 2017_User-transparent Distributed TensorFlow

[7] 2016_Theano, A Python framework for fast computation of mathematical expressions

[8] 2011_Torch7, A Matlab-like Environment for Machine Learning

[9] 2016_Benchmarking State-of-the-Art Deep Learning Software Tools

[10] 2016_Comparative study of caffe, neon, theano, and torch for deep learning

[11] 2016_Deep Learning At Scale and At Ease

[12] 2016_Deep Learning on FPGAs, Past, Present, and Future

[13] 2016_Deep Learning with Theano, Torch, Caffe, Tensorflow, and Deeplearning4J

[14] 2016_Deep Reinforcement Learning

[15] 2016_Software Frameworks for Deep Learning at Scale

[16] 2017_Toolkits and Libraries for Deep Learning

[17] 書名:深度學習: Caffe 之經典模型詳解與實戰,ISBN:7121301180,作者:樂毅,王斌,出版社:電子工業,出版日期:2016-09-30.

[18] AI從頭學(目錄)

[19] LeNet實作團(目錄)

[20] 2015_Deep learning in neural networks, An overview

[21] 神經網絡和深度學習簡史(一):從感知機到BP算法
http://www.gegugu.com/2016/01/24/23137.html

[22] 神經網絡和深度學習簡史(二):BP算法之後的又一突破——信念網絡
http://www.sohu.com/a/56883482_129720

[23] 神經網絡和深度學習簡史(三):90年代的興衰——強化學習與遞歸神經網絡
http://www.gegugu.com/2016/02/03/2447.html

[24] 神經網絡和深度學習簡史第四部分:深度學習終迎偉大復興
http://www.gegugu.com/2016/02/29/5103.html

[25] Deep Learning開發及常用套件介紹
http://www.cc.ntu.edu.tw/chinese/epaper/0039/20161220_3910.html 

[26] Lab DRL(目錄)
http://hemingwang.blogspot.tw/2017/06/lab-drl.html

[27] AI從頭學(二):Popular Deep Learning Software Tools
http://hemingwang.blogspot.tw/2016/12/aipopular-deep-learning-software-tools.html

[28] 為什麼 PyTorch 這麼火?一線開發者這樣說 _ 香港矽谷
https://www.hksilicon.com/articles/1332093

[29] Theano停止更新之後,開發者們怎麼說? _ 香港矽谷
https://www.hksilicon.com/articles/1443777

No comments: