摘要:本文總結並分析了2017年的相關深度學習框架之間的競爭, 包含一些主流的框架比如TensorFlow、PyTorch等, 以及一些相關的應用程式介面, 比如Keras等, 最後展望了下後續的發展。 歡迎廣大讀者留言說出自己支持的深度學習框架是哪一款呢。
在過去的兩年多時間裡, 各大公司或研究機構推出自己的深度學習框架, 比如Caffe、TensorFlow等, 並且關於深度學習相關的框架也在隨著時間不斷地發生變化。 Theano是第一個被廣泛使用的深度學習框架, 該框架是由深度學習領域中的大牛Yoshua Bengio牽頭、MILA創建。 然而, 在今年的九月份, MILA宣佈在2018年更新完最後一版Theano後,
與此同時, 谷歌公司開發的TensorFlow似乎成為了最為常用的深度學習框架,
其它的科技巨頭也沒有坐以待斃, 微軟公司開發了一款內部深度學習框架CNTK, 並與2017年正式推出其第2.0版本並重命名為Microsoft Cognitive Toolkit。 同年, Facebook也推出了Caffe2, 該框架是眾所知周的Caffe框架的繼承人。 原始的Caffe框架是由伯克利大學視覺和學習中心開發, 依然被廣泛應用於電腦視覺領域,
另外一個流行的深度學習框架是MXNet, 該框架由微軟和亞馬遜兩大巨頭資助。 MXNet已經推出有一段時間了, 但當提到深度學習框架MXNet時, 經常有人會誤認為該框架只是針對於R語言的。 其實MXNet支援多種語言, 不僅包含R語言, 還包含其它的語言, 比如C++、Python、JavaScript及Go等。 MXNet的優勢在於其可擴展性及其高性能。
以上這些只是選擇了一些應用較為廣泛的深度學習框架來介紹, 還有一些其它的開源深度學習框架比如Deeplearning4j和Dlib(基於C++語言)。 此外, 谷歌的DeepMind於2017年發佈的Sonnet(基於TensorFlow運行的一個高層次物件導向的庫)。 值得一提的其它深度學習框架還有H2o.ai和Spark。
在所有的深度學習框架外, 還有些框架介面需要詳細介紹。 最為人知以及應用最為廣泛的應用介面毫無疑問是Keras, Keras是用Python寫的一個高層次的深度學習應用程式介面(API), 由穀歌公司的研究員 François Chollet 創建。 此外, 谷歌公司於2017年宣佈Keras已經被選定為TensorFlow的高級API, 這也意味著Keras將被包含於下一次發佈的TensorFlow版本中。除了TensorFlow外,Keras也能被用在Theano或CNTK中。
Keras 的強大在於它只需簡單地疊加多個層就能夠創建一個深度學習模型,當使用Keras時,用戶不必在層後面做數學運算。這看起來像是一個理想的快速原型製造機,並且Keras也成為了Kaggle競賽中的熱門工具。
因此,目前在一方面有高層次的Keras API,能夠讓你輕易地構建先進的深度學習模型;在另外一方面,有低層次的TensorFlow框架,能夠讓建模時變得更加靈活,這兩個項目都由穀歌公司支持。正如預期的那樣,其它公司也不甘人後,微軟和亞馬遜共同宣佈其Gluon API,Gluon是一個高層次的Python深度學習介面,目前支援MXNet框架,不久將支持微軟的CNTK框架。Gluon是Keras的直接競爭對手,雖然AWS(亞馬遜公司旗下雲計算服務平臺)聲稱它們強力支持所有的深度學習框架,但是AWS當然會支持Gluon在AI領域的競爭中獲勝。
出人意料的是,TensorFlow框架的最大競爭對手竟然似乎是PyTorch,社區中不斷增長對PyTorch框架的研究興趣,比如在最近的Kaggle競賽中,用戶經常選擇使用PyTorch框架作為其部分解決方案,同時也在最新的研究論文中被使用。在穀歌公司2017年10月發佈的最新TensorFlow版本中,引入了一個“運行後定義”的介面。穀歌公司希望這次版本的發佈能夠贏回那些喜歡PyTorch及其動態圖的使用者。
對於最流行的深度學習課程fast.ai的開發者而言,這次變化來得太晚了,fast.ai於9月份宣佈將從Keras和TensorFlow轉向PyTorch。fast.ai的創始者及Kaggle的首席科學家Jeremy Howard認為,PyTorch將能夠繼續保持領先的勢頭,時間會證明這個觀點是否正確。
目前存在這麼多深度學習框架,一些新手在選擇一個深度學習框架時會具有面臨一些挑戰。坦率地說,即使是經驗豐富的研究人員和開發人員都難以跟上最新進展的腳步。為了應對這個問題,微軟和Facebook發佈開源專案ONNX(開放神經網路交流),該專案旨在為涉及不同程式設計框架的神經網路創建一種共用的模型表示機制。比如,它允許你建立一個PyTorch模型並使用MXNet框架運行模型。
OXXN專案從一開始就支持Caffe2、Microsoft Cognitive Toolkit、MXNet以及PyTorch,但對於其它的開源項目也已增加了一個轉化器,比如TensorFlow等。
2017年有許多令人興奮的發展,這類似於深度學習和人工智慧領域的高速發展。很難去預測明年會發生一些什麼事情,但是我們可能會看到一些框架的合併。雖然,一些大型科技公司肯定希望使用並推廣自己開發的技術棧,但很高興看到由不同科技巨頭支持的不同深度學習框架相互推動,加快創新。後續將從速度、記憶體使用、可攜性和可擴展性等方面詳細地比較不同的深度學習框架,敬請期待。
作者資訊
Indra den Bakker,資料科學家、深度學習導師。
Linedin:https://www.linkedin.com/in/indradenbakker/
這也意味著Keras將被包含於下一次發佈的TensorFlow版本中。除了TensorFlow外,Keras也能被用在Theano或CNTK中。Keras 的強大在於它只需簡單地疊加多個層就能夠創建一個深度學習模型,當使用Keras時,用戶不必在層後面做數學運算。這看起來像是一個理想的快速原型製造機,並且Keras也成為了Kaggle競賽中的熱門工具。
因此,目前在一方面有高層次的Keras API,能夠讓你輕易地構建先進的深度學習模型;在另外一方面,有低層次的TensorFlow框架,能夠讓建模時變得更加靈活,這兩個項目都由穀歌公司支持。正如預期的那樣,其它公司也不甘人後,微軟和亞馬遜共同宣佈其Gluon API,Gluon是一個高層次的Python深度學習介面,目前支援MXNet框架,不久將支持微軟的CNTK框架。Gluon是Keras的直接競爭對手,雖然AWS(亞馬遜公司旗下雲計算服務平臺)聲稱它們強力支持所有的深度學習框架,但是AWS當然會支持Gluon在AI領域的競爭中獲勝。
出人意料的是,TensorFlow框架的最大競爭對手竟然似乎是PyTorch,社區中不斷增長對PyTorch框架的研究興趣,比如在最近的Kaggle競賽中,用戶經常選擇使用PyTorch框架作為其部分解決方案,同時也在最新的研究論文中被使用。在穀歌公司2017年10月發佈的最新TensorFlow版本中,引入了一個“運行後定義”的介面。穀歌公司希望這次版本的發佈能夠贏回那些喜歡PyTorch及其動態圖的使用者。
對於最流行的深度學習課程fast.ai的開發者而言,這次變化來得太晚了,fast.ai於9月份宣佈將從Keras和TensorFlow轉向PyTorch。fast.ai的創始者及Kaggle的首席科學家Jeremy Howard認為,PyTorch將能夠繼續保持領先的勢頭,時間會證明這個觀點是否正確。
目前存在這麼多深度學習框架,一些新手在選擇一個深度學習框架時會具有面臨一些挑戰。坦率地說,即使是經驗豐富的研究人員和開發人員都難以跟上最新進展的腳步。為了應對這個問題,微軟和Facebook發佈開源專案ONNX(開放神經網路交流),該專案旨在為涉及不同程式設計框架的神經網路創建一種共用的模型表示機制。比如,它允許你建立一個PyTorch模型並使用MXNet框架運行模型。
OXXN專案從一開始就支持Caffe2、Microsoft Cognitive Toolkit、MXNet以及PyTorch,但對於其它的開源項目也已增加了一個轉化器,比如TensorFlow等。
2017年有許多令人興奮的發展,這類似於深度學習和人工智慧領域的高速發展。很難去預測明年會發生一些什麼事情,但是我們可能會看到一些框架的合併。雖然,一些大型科技公司肯定希望使用並推廣自己開發的技術棧,但很高興看到由不同科技巨頭支持的不同深度學習框架相互推動,加快創新。後續將從速度、記憶體使用、可攜性和可擴展性等方面詳細地比較不同的深度學習框架,敬請期待。
作者資訊
Indra den Bakker,資料科學家、深度學習導師。
Linedin:https://www.linkedin.com/in/indradenbakker/