... the 2017 AI trend I’m most excited about is that deep learning frameworks are getting dramatically more user-friendly and accessible. PyTorch (released this year) is friendly to anyone who knows Python (largely due to dynamic computation and OOP design). Even TensorFlow is moving in that direction, by adopting Keras into its core codebase and announcing eager (dynamic) execution. The barriers for coders to use deep learning are getting lower all the time ...
Keras 是一個深度學習的介面函式庫(API),而非深度學習架構。在早期,Keras 只有專注於開發建構在 Theano 上的高階 API 為主。以物件導向的方式,將建模的程式碼封裝成 layer,而利用堆疊一層一層的 Layer 物件來建立類神經模型,或又稱為 Layer-wise 為主的方式來建模。在 Tensorflow 發表後,人氣相當高的 Keras 便進而採用 Tensorflow 作為執行後端(backend),但在不同的深度學習的架構逐漸蓬勃發展後,又併入 Microsoft 的 CNLK,而成為一個通用化的深度學習介面。
Keras 作為一個深度學習架構的最上層,就如 Thomas 所言,將後端的原始碼封裝,使用者在建構類神經網路模型時,只需簡短的幾行程式碼便可完成,因此達到建模的簡易性。然而以 Layer-wise 為主的的建模方式通常缺乏彈性,在較為複雜的類神經網路,仍需要親自撰寫後端的原始碼,或甚至打破 Layer 的架構,重新編寫計算圖中的運算元。不過 Keras 所提供的便利性,對於許多深度學習入門者而言是非常寶貴的踏腳石,那些複雜的網路架構,如 MAC network (Hudson and Manning, ICLR 2018),或 Capsule Network 就留給那些天才般的腦袋吧!
和 PyTorch 都在去年發表的,還有 Amazon 和 Microsoft 共同合作的開源專案,以 python 為主的 Gluon API。Amazon 的雲端服務使用的深度學習架構 MXNet 和 Microsoft 的 Cognitive Toolkit 都會使用 Gluon API 介面,不過目前還是以支援 MXNet 為主。
MXNet,由著名的開源專案搖籃 Apache 基金會所培育,亦是由多個開源專案演化而來,在 2015 年正式發表。除了 Gluon API 外,MXNet 更提供高度優化的 R 介面。如同 PyTorch 所標榜的,Gluon 也是使用所謂的動態計算圖,使用者無需再建模的時候,就先把計算圖建立好,反而透過如同錄影的方式,一步一步的執行,讓使用者在對梯度除錯時更加的容易。但同時,Gluon 也容許使用者,建立抽象式的符號計算圖,藉著事先優化已編譯好的深度網路架構,在執行速度上比動態計算圖更為快速。
然而,對於希望能將深度學習模型配置成雲端服務,就必須要考慮深度學習架構的 API 穩定性,對於實驗性較高,或還在發展階段的 PyTorch,因為具有升級時,無法支援舊版 API,而造成舊有模型無法配置,服務中斷的危機。(見延伸閱讀 [1])
A Way to Benchmark Your Deep Learning Framework On-premise(英,發表於 2018.7, MXNet 的官方部落格):該文以 DevOps 的角度和需要經常更新深度學習模型,而不造成服務的中斷為主要選取深度學習的架構的考量。基於此一考量,API 和 code base 的穩定,也在考慮之中,因而該文作者較為偏好 MXNet 和 Gluon 的組合。同時在該文章中,也對如何對不同的深度學習架構做 benchmarking,提出了架構和流程的解說。
The Battle Between Deep Learning Frameworks(英,發表於 2018.4):該文對現行的深度學習架構作兩兩比較。包括的比較對數有 Tensorflow vs PyTorch,Tensorflow vs Theano,Tensorflow vs Keras,Keras vs TFLearn。該文在每一對的比較之後,都會有簡短的核對清單,主要是提供架構選擇者來依據需求決定該使用何種函式庫。
Deep Learning Frameworks (英)Nvidia 在開發者專欄中所做的深度學習架構介紹並不包括評比,包括了 Caffe2(Berkeley Vision and Learning Center, 同時也併入 PyTorch)/ Nvidia Caffe,Cognitive Toolkit (CNTK, Microsoft),MATLAB,MXNet(Apache,用於 AWS),Tensorflow(Google)以及 PyTorch (Facebook)。另外還有較少為人知的 Chainer (Python) 以及 PaddlePaddle