您的位置:首頁>正文

「2017深度學習框架大事記」PyTorch成TensorFlow最大競爭對手,微軟、亞馬遜、Facebook 合作聯盟對抗穀歌

新智元編譯

深度學習的圖景在不斷變化。 Theano是第一個被廣泛採用的深度學習框架, 由Yoshua Bengio領導的MILA創建和維護。 但情況已經發生改變。 今年9月, MILA宣佈, 在發佈Theano的最新版本後, 2018年將終止Theano的開發和維護。 這個消息並不令人感到意外。 在過去的幾年裡, 出現了不同的開源Python深度學習框架, 這些框架通常是由大型科技公司開發或支持的, 而且有些引起了很大的關注。

2017年開源深度學習框架圖景

目前, 從GitHub的star和fork數量, 以及Stack Overflow活躍度來看, 穀歌的TensorFlow似乎是最常用的深度學習框架。 有人預計, 伴隨著TensorFlow的推出, 穀歌將主導這個市場多年。 但是, 看起來其他框架確實也吸引了越來越多的充滿熱情的用戶群。 值得一提的是PyTorch的開發和發展。 PyTorch是在2017年1月由Facebook推出的。

它是經典機器學習庫Torch框架的一個埠, Torch二進位檔案包裝於GPU加速的Python。

除了GPU加速和記憶體使用的高效外, PyTorch受歡迎的主要因素是動態計算圖的使用。 已經有其他一些不太知名的深度學習框架使用動態計算圖, 例如Chainer。 動態圖的優點在於, 圖(graph)是由run定義(“define by run”), 而不是傳統的“define and run”。 特別是, 在輸入可以變化的情況下, 例如文本這樣的非結構化資料, 這非常有用而且高效。

其他科技巨頭也坐不住了。 微軟開發了名為CNTK的內部深度學習框架, 在2017年正式推出2.0版本, 並將其重新命名為微軟認知工具包(Microsoft Cognitive Toolkit)。 2017年, Facebook還推出了Caffe2。 它將成為眾所周知的Caffe框架的繼承者。 Caffe框架最初是伯克利視覺和學習中心開發的, 現在仍然非常受歡迎, 這是由於它的社區性質, 它是電腦視覺的應用程式, 以及它的Model Zoo ——一系列預訓練的模型。 不過, Caffe2似乎還沒有跟上Caffe的腳步。

另一個流行的深度學習框架是MXNet, 由微軟和亞馬遜共同支持。 MXNet的歷史已經有一段時間了, 但是當MXNet作為一個深度學習框架被提及時, 我經常聽到人們說“那是一個R語言的深度學習框架吧?”。

是的, 但不止。 MXNet實際上支援許多語言, 包括C ++, Python, JavaScript, Go, 以及R。 MXNet最為突出的是它的可擴展性和性能。

這些只是眾多可選擇的框架中的一小部分。 其他開源的深度學習框架還有Deeplearning4j和Dlib(基於C ++)。 而且在2017年, 穀歌旗下的DeepMind發佈了Sonnet(一個建立在TensorFlow上的高級物件導向的庫)。 其他值得一提的框架還有H20.ai和Spark。

用Keras直接構建模型— source: https://github.com/keras-team/keras

除了這些框架之外,我們還有一些包裝在一個或多個框架中的介面(interface)。對於深度學習來說,最為人熟知和廣泛使用的介面無疑是Keras。Keras是一個高級深度學習API,用Python編寫,由穀歌的深度學習研究員François Chollet開發。穀歌在2017年宣佈,Keras已被選為TensorFlow的高級API。這意味著Keras將被包含在下一個TensorFlow版本中。除了TensorFlow,Keras也可以使用Theano或者CNTK作為後端。

Keras的功能強大,因為它用非常直接的方式,即通過堆疊多個層來創建深度學習模型。使用Keras時,用戶不必進行layers背後的數學運算。這似乎是快速原型設計的一種理想選擇。Keras也是Kaggle比賽的熱門工具。

那麼,一方面我們現在擁有了高級的Keras API,可以讓你輕鬆地構建簡單而高級的深度學習模型;另一方面我們還有低級的TensorFlow框架,能為構建模型提供更大的靈活性。這兩者都由穀歌支持。但是競爭並沒有停止——2017年10月,微軟和亞馬遜的AWS聯合宣佈推出Gluon API。Gluon是一個封裝了MXNet的高級Python深度學習介面,未來它還將支持微軟的CNTK。Gluon是Keras的直接競爭對手,儘管AWS聲稱他們強烈支持所有深度學習框架,但顯然,他們會打著AI民主化的口號押注於Gluon。

用Gluon堆疊卷積層和密集層以及參數初始化

令人驚訝的是,如今TensorFlow的最大競爭對手似乎是PyTorch。社區對PyTorch的興趣越來越高漲,例如,Kaggle的最新競賽中,參賽者經常選擇使用PyTorch作為其解決方案的一部分,PyTorch也被用在最新的研究論文中。而TensorFlow終於引入動態圖機制是在2017年10月發佈的Eager Execution,這是TensorFlow的“define-by-run”介面。穀歌希望通過這次發佈,贏回那些喜歡上PyTorch以及它的動態圖的使用者。

但對於廣受歡迎的深度學習課程fast.ai的開發者來說,這個改變來得太遲了。今年9月,fast.ai宣佈從Keras&TensorFlow轉換到PyTorch。fast.ai的創始研究員、Kaggle的前總裁兼首席科學家Jeremy Howard認為PyTorch將能夠保持領先地位。只有時間能告訴我們答案了。

有這麼多深度學習框架,對於新入門者來說,選擇哪個框架可能是有挑戰性的問題。坦白說,即使是經驗豐富的研究人員和開發人員,也很難跟上深度學習框架最新的發展。對此,一個好消息是開放神經網路交換(ONNX)格式的發佈。ONNX於9月8日由微軟和Facebook聯合發佈,並在12月發佈了V1版本。ONNX是一個表示深度學習模型的開放格式。它使用戶可以更輕鬆地在不同框架之間轉移模型。例如,它允許使用者構建一個PyTorch模型,然後使用MXNet運行該模型來進行推理。

開放神經網路交換(ONNX)的Github頁面

ONNX由微軟、亞馬遜和Facebook等公司共同發起,宣佈支持ONNX的公司還有AMD、ARM、華為、 IBM、英特爾、Qualcomm等。穀歌不在這個陣營中並不令人驚訝。ONNX從一開始就支持Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch,但與其他開源專案一樣,社區也已經為TensorFlow添加了一個轉換器。

小結

2017年深度學習框架方面有很多令人興奮的發展,就跟快速發展的深度學習和人工智慧一樣。很難預測新的一年會發生什麼。我們可能會看到一些整合,不過,大科技公司肯定會想使用和推廣自己的技術棧。我們很高興看到由不同技術巨頭支援的不同框架,它們互相推動,促進更快的創新。這是我對2017年深度學習框架競爭觀察的第一部分,在第二部分中,我將根據不同的度量標準,例如速度、記憶體使用、可攜性和可伸縮性等,來對比不同的框架性能。

用Keras直接構建模型— source: https://github.com/keras-team/keras

除了這些框架之外,我們還有一些包裝在一個或多個框架中的介面(interface)。對於深度學習來說,最為人熟知和廣泛使用的介面無疑是Keras。Keras是一個高級深度學習API,用Python編寫,由穀歌的深度學習研究員François Chollet開發。穀歌在2017年宣佈,Keras已被選為TensorFlow的高級API。這意味著Keras將被包含在下一個TensorFlow版本中。除了TensorFlow,Keras也可以使用Theano或者CNTK作為後端。

Keras的功能強大,因為它用非常直接的方式,即通過堆疊多個層來創建深度學習模型。使用Keras時,用戶不必進行layers背後的數學運算。這似乎是快速原型設計的一種理想選擇。Keras也是Kaggle比賽的熱門工具。

那麼,一方面我們現在擁有了高級的Keras API,可以讓你輕鬆地構建簡單而高級的深度學習模型;另一方面我們還有低級的TensorFlow框架,能為構建模型提供更大的靈活性。這兩者都由穀歌支持。但是競爭並沒有停止——2017年10月,微軟和亞馬遜的AWS聯合宣佈推出Gluon API。Gluon是一個封裝了MXNet的高級Python深度學習介面,未來它還將支持微軟的CNTK。Gluon是Keras的直接競爭對手,儘管AWS聲稱他們強烈支持所有深度學習框架,但顯然,他們會打著AI民主化的口號押注於Gluon。

用Gluon堆疊卷積層和密集層以及參數初始化

令人驚訝的是,如今TensorFlow的最大競爭對手似乎是PyTorch。社區對PyTorch的興趣越來越高漲,例如,Kaggle的最新競賽中,參賽者經常選擇使用PyTorch作為其解決方案的一部分,PyTorch也被用在最新的研究論文中。而TensorFlow終於引入動態圖機制是在2017年10月發佈的Eager Execution,這是TensorFlow的“define-by-run”介面。穀歌希望通過這次發佈,贏回那些喜歡上PyTorch以及它的動態圖的使用者。

但對於廣受歡迎的深度學習課程fast.ai的開發者來說,這個改變來得太遲了。今年9月,fast.ai宣佈從Keras&TensorFlow轉換到PyTorch。fast.ai的創始研究員、Kaggle的前總裁兼首席科學家Jeremy Howard認為PyTorch將能夠保持領先地位。只有時間能告訴我們答案了。

有這麼多深度學習框架,對於新入門者來說,選擇哪個框架可能是有挑戰性的問題。坦白說,即使是經驗豐富的研究人員和開發人員,也很難跟上深度學習框架最新的發展。對此,一個好消息是開放神經網路交換(ONNX)格式的發佈。ONNX於9月8日由微軟和Facebook聯合發佈,並在12月發佈了V1版本。ONNX是一個表示深度學習模型的開放格式。它使用戶可以更輕鬆地在不同框架之間轉移模型。例如,它允許使用者構建一個PyTorch模型,然後使用MXNet運行該模型來進行推理。

開放神經網路交換(ONNX)的Github頁面

ONNX由微軟、亞馬遜和Facebook等公司共同發起,宣佈支持ONNX的公司還有AMD、ARM、華為、 IBM、英特爾、Qualcomm等。穀歌不在這個陣營中並不令人驚訝。ONNX從一開始就支持Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch,但與其他開源專案一樣,社區也已經為TensorFlow添加了一個轉換器。

小結

2017年深度學習框架方面有很多令人興奮的發展,就跟快速發展的深度學習和人工智慧一樣。很難預測新的一年會發生什麼。我們可能會看到一些整合,不過,大科技公司肯定會想使用和推廣自己的技術棧。我們很高興看到由不同技術巨頭支援的不同框架,它們互相推動,促進更快的創新。這是我對2017年深度學習框架競爭觀察的第一部分,在第二部分中,我將根據不同的度量標準,例如速度、記憶體使用、可攜性和可伸縮性等,來對比不同的框架性能。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示