當前位置:
首頁 > 知識 > 來勢洶洶PyTorch!ICLR論文提及頻率直追TensorFlow

來勢洶洶PyTorch!ICLR論文提及頻率直追TensorFlow

機器之心報道

作者:思源、李亞洲

昨日,Facebook 在首屆 PyTorch 開發者大會發布了PyTorch1.0 預覽版,標誌著這一框架更為穩定可用。從去年年初發布以來,PyTorch 已經成為明星框架,發展速度甚至有力壓 TensorFlow 的趨勢。據網友統計,在最新的 ICLR 2019 提交論文中,提及 TensorFlow 的論文數量從 228 升到了 266,而提及 PyTorch 的論文數量從 2018 年的 87 激增到了 252,這是否也是 PyTorch 即將趕超 TensorFlow 的又一證明?

ICLR 提交論文提及頻率

今日,Reddit 上的一條帖子吸引了大家的關註:有網友統計,相比於 2018 年,在 ICLR 2019 提交論文中,提及不同框架的論文數量發生了極大變化。

首先,說下 2018 年和 2019 年論文提交數量。ICLR 2019 將於明年 5 月 6 日-9 日在美國新奧爾良舉行,今年 9 月 27 日下午 18 時,大會論文提交截止。據統計,ICLR 2019 共收到 1591 篇論文投稿,相比去年的 1000 余篇增長了 60%。

其次,介紹下統計方法,相當簡單。在 Frankensteinian search 搜索框下分別搜索提及不同框架的論文結果,如下:

網友發現,提及 TensorFlow 的論文數量從 2018 年的 228 篇略微提升到了 266 篇,Keras 從 42 升到 56,但 Pytorch 的數量從 87 篇提升到了 252 篇。從數據上可以明顯看出,採用 PyTorch 的 ICLR 論文在這一年內幾乎要超越 TensorFlow。

TensorFlow:228266

Keras: 4256

Pytorch:87252

在 PyTorch 1.0 推出之際,這樣的數據統計讓我們不得不聯想到:TensorFlow 的深度學習框架霸主地位是否還保得住?既然 PyTorch 1.0 預覽版已經發布,那麼讓我們再把兩個框架放在一起對比下,看哪一款才是適合你的深度學習框架。

TensorFlow VS PyTorch

自 2015 年開源以來,深度學習框架的天下就屬於 TensorFlow。不論是 GitHub 的收藏量或 Fork 量,還是業界使用量都無可比擬地位列第一。

TensorFlow 的版本迭代

但是 TensorFlow 有一個令人詬病的劣勢,即它和 Theano 一樣採用的是靜態計算圖,這令神經網路的搭建和入門學習都變得更加困難。因此在 2017 年 1 月,Torch7 團隊開源了 PyTorch,它的宗旨是儘可能令深度學習建模更加簡單。

PyTorch 的版本迭代

其實機器之心在很多對比文章中都發現 TensorFlow 的使用在目前來說還是最為廣泛的,但是 PyTorch 的發展勢頭非常迅猛,尤其是在學術研究領域的應用上。那麼為什麼新近開源的 PyTorch 會那麼受歡迎呢,首先我們需要了解深度學習框架的關鍵點:

易於構建大型計算圖

易於在計算圖中進行梯度運算

能在 GPU 上高效運行(cuDNN、cuBLA 等)

在後兩項中,基本上 TensorFlow 和 PyTorch 都能實現高效的自動微分機制和並行運算機制。但是在第一項中,PyTorch 的哲學是解決當務之急,也就是說即時構建和運行計算圖,這與 TensorFLow 先建立靜態計算圖再發生實際運算相比要簡單地多。因此在第一項上,PyTorch 具備很大優勢,但是 TensorFlow 的靜態計算圖更有利於部署模型,且現在同樣也非常關注動態計算圖。

工業化的缺陷

PyTorch 最開始發布以來,大家都偏向於使用它做學術研究,而不是用於實際生產。主要的原因可能有兩點:首先它比較新,還不太成熟,因此很多 API 介面和結構也都不太穩定;其次是動態計算圖在部署上不太方便,而像 TensorFlow 這樣的靜態圖可以在不同的環境下調用計算圖和對應參數,因此很容易部署到各種產品中。

由於 PyTorch 與 Python 有著緊密的結合,因此將這種動態計算圖部署到其它產品會比較困難。不論是訓練腳本還是預訓練模型,我們經常需要將研究代碼轉換為 Caffe2 中的計算圖表徵,從而實現生產規模上的高效使用。其中 Caffe2 項目是兩年前提出的,其目的是標準化 AI 模型的生產工具,目前該框架在 Facebook 伺服器以及超過 10 億台手機上運行,橫跨了八代 iPhone 和六代安卓 CPU 架構。

之前,從 PyTorch 到 Caffe2 的遷移過程是手動的,耗時間且容易出錯。為了解決這個問題,Facebook 與主要的硬體和軟體公司合作創建了 ONNX(開放神經網路交換格式),這是一種用於表示深度學習模型的開放格式。通過 ONNX,開發者能在不同的框架間共享模型,例如我們可以導出由 PyTorch 構建的模型,並將它們導入到 Caffe2。

通過 ONNX 和 Caffe2,使用 PyTorch 構建的研究結果可以快速地轉化到生產中。而且昨日發布的 PyTorch 1.0 預覽版也標誌著 PyTorch 開始走向成熟,很多 API 介面和框架結構也都會變得更加穩定,這些都非常有利於將 PyTorch 應用於實際生產中。

性能對比

這兩種深度學習框架都有各自的特點,那麼它們在相同硬體(GPU)上運行相同神經網路的性能又怎麼樣?Ilia Karmanov 在 GitHub 上開源了一項測試,他在相同的環境下測試由不同框架編寫的相同模型,並藉此討論不同框架的性能。從這些數據中,我們可以了解到在性能上,TensorFlow 和 PyTorch 並不會有顯著的差別,不過在特定的任務上還是有一些不同。

項目地址:https://github.com/ilkarman/DeepLearningFrameworks

以下展示了使用 VGG 在 CIFAR-10 上實現圖像分類的速度:

以下展示了 DenseNet-121 在 ChestXRay 數據集上的訓練速度,在這個圖像識別任務中,PyTorch 要比 TensorFlow 表現得更好一些:

如下展示了在 IMDB 數據集上訓練門控循環單元(GRU)的速度,它們實現的是情感分析任務。對於循環神經網路,PyTorch 和 TensorFlow 的性能差不多,不過 PyTorch 在 P100 晶元上普遍表現得比 TensorFlow 好。

該項目還有更多的對比與分析,感興趣的讀者可查看原 GitHub 項目。

本文為機器之心報道,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

專欄 | 香儂科技獨家對話Facebook人工智慧研究院首席科學家Devi Parikh
教程 | 通過可視化隱藏表示,更好地理解神經網路

TAG:機器之心 |