哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

賈瀾鵬發表於2019-04-11

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

在 2018 年的 9 月,我在一篇文章中,從需求量,工程使用量以及流行程度等方面對比了所有的主流深度學習框架。TensorFlow 處於絕對的王者地位,而 Pytorch 則是一位躍躍欲試的年輕挑戰者。

半年過去了,這種形勢是否有所改變呢?

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

為了回答這個問題,我從線上招聘網站(如:IndeedMonsterLinkedInSimplyHired) 的職位需求、谷歌的搜尋量GitHub 活躍度媒體的文章數ArXiv 的文章數以及Quora 的粉絲數等幾個方面的資料變化去做評估。最終,以這些資料為依據,繪製了需求量,使用率和流行程度的增長圖便於讀者理解。

整合和更新

我們發現,TensorFlow 和 PyTorch 都有一些重要的版本釋出。

PyTorch 1.0 版本在 2018 年 10 月預先發布,同一時間 fastai 1.0 版本也進行了釋出。這兩個版本的釋出是深度學習框架走向成熟的重要里程碑。

2019 年 4 月,TensorFlow 2.0 alpha 版也進行了釋出。在新增了許多新特性的同時,改進了使用者的體驗。並且更加緊密地整合了 Keras 作為它的高階 API。

方法

在本文中,由於 Keras 和 fastai 與 TesnsorFlow 和 PyTorch 的依存關係,它們也可以作為一個尺度來評估 TensorFlow 和 PyTorch,所以我們將它們也囊括到了對比之中。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

至於其他的深度學習框架,我將不予討論。很多讀者肯定會覺得像 Caffe、Theano、MXNET、CNTK、DeepLearning4J 和 Chainer 這些框架是很有價值的。然而它們雖然有諸多的優點,但確實無法與 TensorFlow 和 Pytorch 相提並論,同時又和這兩個框架沒有什麼交集。

我們的分析工作是在 2019 年 3 月 20 號到 21 號間執行的,資料來源在 谷歌的表格中

我使用 plotly 作為視覺化庫,更多的細節可以參考我的 Kaggle Kernel

好,現在我們就來看看各個分類的結果如何。

線上職位需求的變化

我通過搜尋幾個主要的線上招聘網站,如,Indeed、LinkedIn、Monster 和 SimplyHired 的相關資料來判斷哪一個框架是目前需求量最大的。

我使用的搜尋關鍵字是這樣的,machine learning ,後面跟隨對應的庫名。舉個例子,評估 TensorFlow 我們使用的關鍵字就是 machine learning TensorFlow 。由於歷史的比較原因,使用了這種關鍵字進行搜尋。如果不加 machine learning 結果也不會有明顯的不同。我們的搜尋範圍設定的是美國。

我用2019年3月的資料減去6個月之前的資料,有如下的發現:

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

在職位列表中,TensorFlow 的增長略微高於 PyTorch。Keras 也有增長,大致是 TensorFlow 的一半。Fastai 仍然是沒有什麼需求量。

值得注意的是除了 LinkedIn 以外,在其他的求職網站上 PyTorch 相較於 TensorFlow 都有明顯的增長。但是在絕對的數量上,TensorFlow 的職位數量接近PyTorch 或者 Keras 的 3 倍。

谷歌平均搜尋活躍度的變化

在最大搜尋引擎上的搜尋次數可以作為衡量流行程度的一個指標。我在 Google Trends 上搜集了過去一年全世界範圍內關於 Machine Learning and Artificial Intelligence 分類的搜尋。不幸的是谷歌不提供絕對的數值,只能獲得一組相對值。

我得到了過去 6 個月興趣分數的均值並與半年以前的興趣均值做比較。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

在過去 6 個月中,TensorFlow 的相關搜尋量在下降,而 PyTorch 的相關搜尋量在上升。

下面的圖表直觀的反映了過去 1 年人們的興趣趨勢。

TensorFlow in blue; Keras in yellow, PyTorch in red, fastai in green

媒體新增文章

新媒體是資料科學文章和教程的主要傳播場所,我希望你會喜歡它。我利用 Medium.com 作為篩選項在谷歌上進行搜尋,在過去的 6 個月中,TensorFlow 和 Keras 的文章發表數基本相似,而 PyTorch 的要稍微少一些。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

作為高階 API 的 Keras 和 fastai 在新框架的實踐者中十分流行,有很多教程都是在向人們展示如何很好的使用這些新框架。

arXiv新增文章

arXiv 是當前大多數深度學習學術論文選擇發表的線上倉儲。我使用谷歌搜尋了過去 6 個月新發表的新論文中提到的框架,結果是 TensorFlow 遙遙領先。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

GitHub新增活躍度

Git 的近期活躍度是框架流行度的另一個指標。下面的圖表展示了點贊、克隆、粉絲以及貢獻者的數量。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

TensorFlow 在各個選項上都是領先的。儘管如此,PyTorch 在關注者和貢獻者方面已經十分接近 TensorFlow 了,同時 fastai 也出現了很多新的貢獻者。

毫無疑問,一些 Keras 的貢獻者還在努力的挖掘 TensorFlow 庫。同時值得注意的是,這兩個開源專案都是由谷歌的員工發起的。

Quora的新增粉絲數

我將之前遺漏的一個參考指標 —— Quora 新話題的粉絲數量也加入進來。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

過去 6 個月中,絕大多數新增話題的粉絲都是圍繞著 TensorFlow,而 PyTorch 和 Keras 則遠遠落後。

一旦我有了所有的資料,我將把它們整理成一個新的指標。

增長分數的計算

下面是我如何建立增長分數的:

  1. 將所有指標的分數縮放到 0 和 1 之間。

  2. 彙總 線上職位GitHub 活躍度 等子類。

  3. 根據下面的百分比對各個分類加權。

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

  1. 為了方便理解,我們再將所有得分乘以 100。

  2. 將每個框架的對應分類的得分進行累加,得到最後的增長分數。

線上工作一項的權重佔據了整體的三分之一,原因很簡單,直接的經濟利益才是最實際的。這種劃分也是為了更好的平衡各個選項。區別於我的另一篇 2018 power score analysis ,我沒有包含 KDNuggets 的使用情況調查(沒有新的資料)和出版物(過去 6 個月沒有太多的新書)。

結果

下面是表格的形式:

Google Sheet [here](https://docs.google.com/spreadsheets/d/1Q9rQkfi8ubKM8aX33In0Ki6ldUCfJhGqiH9ir6boexw/edit?usp=sharing).

這裡是各個分類的得分:

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

這裡是最終的得分:

哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?

TensorFlow 是目前需求量最大且增長速度最快的框架,短時間內,這個局面不會發生變化。PyTorch 的增長也十分迅猛,大量的職位需求就是它需求量和使用量增長的最好證明。當然,Keras在過去的6個月也有長足的進步。最後,fastai 的增長就不那麼的理想了,但是需要說明的是,它是這幾個框架中最年輕的一個。 所以,TensorFlow 和 PyTorch 都是十分值得學習的框架。

學習建議

如果你準備學習 TensorFlow ,那麼我建議你可以先從 Keras 開始。Chollet 的 Deep Learning with Python 和 Dan Becker 的 DataCamp course on Keras 是兩本很好的入門教材。在 TensorFlow 2.0 中使用 Keras 作為高階 API 只需要通過 tf.keras 就可以呼叫。這裡有一個 Chollet 寫的 TensorFlow 2.0 快速入門 教程

如果你準備學習 PyTorch,我建議可以從 fast.ai 的 MOOC 文章 Practical Deep Learning for Coders, v3 開始。你可以學習到深度學習的原理以及 fastai、PyTorch 的基礎。

那麼,TensorFlow 和 PyTorch 的未來是什麼呢?

未來的方向

我常聽人說,PyTorch 比 TensorFlow 更好用。這是因為 PyTorch 有更穩定的 API 並且更貼近 Python 的用法。同時還有原生的模型轉換工具 ONNX,可以用來提高推理的速度。並且,Pytorch 共用了許多 numpy 的命令,可以降低學習的門檻。

對於 TensorFlow 2.0 的所有改進都是針對於使用者體驗這點,谷歌的首席人工智慧決策官 Cassie Kozyrkov 有如下的 解釋。TensorFlow 現在有更直觀的API,更合理的 Keras 整合,以及更直接的執行選項。這些改變以及 TensorFlow 的廣泛使用,都將幫助它在未來幾年繼續流行。

此外,TensorFlow 最近公佈了一項令人激動的計劃:開發針對於 Swift的TensorFlow版本Swift 最初是由蘋果公司構建的程式語言。相較於 Python,Swift 在執行和開發速度上有很多的優勢。fast.ai 的聯合創始人 Jeremy Howard 釋出的 訊息,fast.ai 將在部分的進階 MOOC 中使用 TensorFLow的Swift版本。這個語言可能在最近的一兩年不會完成,但是它一定會改進現存的深度學習框架。可以看到,語言和框架之間的合作和交叉學習正在進行著。

量子計算 的進步也將影響深度學習框架。雖然可用的量子計算機還需要幾年才能出現,但是 GoogleIBM、Microsoft 和其他的公司已經在思考如何將量子計算和深度學習結合起來了。框架需要去慢慢適應這種新的技術。

結語

你已經看到了 TensorFLow 和 PyTorch 的增長。它們都有很好的高階 API:tf.keras 和 fastai,它們可以降低初學者的學習門檻。你也已經看到了框架的新特性和未來方向。

如果需要使用文中的圖表,可以到我的 Kaggle Kernel 中去獲取相關內容。

我希望你可以從這個對比中獲取幫助。如果確實有幫助,就請你把它分享到你喜歡的社交頻道,這樣就可以使更多的人獲益。

謝謝大家瀏覽!

如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章