- 原文地址:Which Deep Learning Framework is Growing Fastest?
- 原文作者:Jeff Hale
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:ccJia
- 校對者:luochen1992, zhmhhu
哪一個深度學習框架增長最迅猛?TensorFlow 還是 PyTorch?
在 2018 年的 9 月,我在一篇文章中,從需求量,工程使用量以及流行程度等方面對比了所有的主流深度學習框架。TensorFlow 處於絕對的王者地位,而 Pytorch 則是一位躍躍欲試的年輕挑戰者。
半年過去了,這種形勢是否有所改變呢?
為了回答這個問題,我從線上招聘網站(如:Indeed、Monster、LinkedIn 和 SimplyHired) 的職位需求、谷歌的搜尋量、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,所以我們將它們也囊括到了對比之中。
至於其他的深度學習框架,我將不予討論。很多讀者肯定會覺得像 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。Keras 也有增長,大致是 TensorFlow 的一半。Fastai 仍然是沒有什麼需求量。
值得注意的是除了 LinkedIn 以外,在其他的求職網站上 PyTorch 相較於 TensorFlow 都有明顯的增長。但是在絕對的數量上,TensorFlow 的職位數量接近PyTorch 或者 Keras 的 3 倍。
谷歌平均搜尋活躍度的變化
在最大搜尋引擎上的搜尋次數可以作為衡量流行程度的一個指標。我在 Google Trends 上搜集了過去一年全世界範圍內關於 Machine Learning and Artificial Intelligence 分類的搜尋。不幸的是谷歌不提供絕對的數值,只能獲得一組相對值。
我得到了過去 6 個月興趣分數的均值並與半年以前的興趣均值做比較。
在過去 6 個月中,TensorFlow 的相關搜尋量在下降,而 PyTorch 的相關搜尋量在上升。
下面的圖表直觀的反映了過去 1 年人們的興趣趨勢。
媒體新增文章
新媒體是資料科學文章和教程的主要傳播場所,我希望你會喜歡它。我利用 Medium.com 作為篩選項在谷歌上進行搜尋,在過去的 6 個月中,TensorFlow 和 Keras 的文章發表數基本相似,而 PyTorch 的要稍微少一些。
作為高階 API 的 Keras 和 fastai 在新框架的實踐者中十分流行,有很多教程都是在向人們展示如何很好的使用這些新框架。
arXiv新增文章
arXiv 是當前大多數深度學習學術論文選擇發表的線上倉儲。我使用谷歌搜尋了過去 6 個月新發表的新論文中提到的框架,結果是 TensorFlow 遙遙領先。
GitHub新增活躍度
Git 的近期活躍度是框架流行度的另一個指標。下面的圖表展示了點贊、克隆、粉絲以及貢獻者的數量。
TensorFlow 在各個選項上都是領先的。儘管如此,PyTorch 在關注者和貢獻者方面已經十分接近 TensorFlow 了,同時 fastai 也出現了很多新的貢獻者。
毫無疑問,一些 Keras 的貢獻者還在努力的挖掘 TensorFlow 庫。同時值得注意的是,這兩個開源專案都是由谷歌的員工發起的。
Quora的新增粉絲數
我將之前遺漏的一個參考指標 —— Quora 新話題的粉絲數量也加入進來。
過去 6 個月中,絕大多數新增話題的粉絲都是圍繞著 TensorFlow,而 PyTorch 和 Keras 則遠遠落後。
一旦我有了所有的資料,我將把它們整理成一個新的指標。
增長分數的計算
下面是我如何建立增長分數的:
-
將所有指標的分數縮放到 0 和 1 之間。
-
彙總 線上職位 和 GitHub 活躍度 等子類。
-
根據下面的百分比對各個分類加權。
-
為了方便理解,我們再將所有得分乘以 100。
-
將每個框架的對應分類的得分進行累加,得到最後的增長分數。
線上工作一項的權重佔據了整體的三分之一,原因很簡單,直接的經濟利益才是最實際的。這種劃分也是為了更好的平衡各個選項。區別於我的另一篇 2018 power score analysis ,我沒有包含 KDNuggets 的使用情況調查(沒有新的資料)和出版物(過去 6 個月沒有太多的新書)。
結果
下面是表格的形式:
這裡是各個分類的得分:
這裡是最終的得分:
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版本。這個語言可能在最近的一兩年不會完成,但是它一定會改進現存的深度學習框架。可以看到,語言和框架之間的合作和交叉學習正在進行著。
量子計算 的進步也將影響深度學習框架。雖然可用的量子計算機還需要幾年才能出現,但是 Google、IBM、Microsoft 和其他的公司已經在思考如何將量子計算和深度學習結合起來了。框架需要去慢慢適應這種新的技術。
結語
你已經看到了 TensorFLow 和 PyTorch 的增長。它們都有很好的高階 API:tf.keras 和 fastai,它們可以降低初學者的學習門檻。你也已經看到了框架的新特性和未來方向。
如果需要使用文中的圖表,可以到我的 Kaggle Kernel 中去獲取相關內容。
我希望你可以從這個對比中獲取幫助。如果確實有幫助,就請你把它分享到你喜歡的社交頻道,這樣就可以使更多的人獲益。
謝謝大家瀏覽!
如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。