機器之心報道
參與:張倩、杜偉
幾天前,OpenAI 通過官方博客宣佈了「全面轉向 PyTorch」的消息,計劃將自家平臺的所有框架統一為 PyPyTorch。這一消息再次引發了社區關於兩個框架優劣的討論。作為後起之秀,PyTorch 真的已經全面趕超 TensorFlow 了嗎?為了研究這個問題,數據科學家 Jeff Hale 從在線職位數量、頂會論文中的出現次數、在線搜索結果、開發者使用情況四個方面對兩個框架的現狀進行了調研。
通過這四個方面的對比,作者最後得出結論,TensorFlow 在大多數領域仍然處於領先地位,但 PyTorch 正在取得進展並逐漸縮小差距。
其實,這已經不是這位作者第一次調研深度學習框架了。從 2018 年到 2020 年,他先後進行過三次調查研究併發布了相關報告。從這些報告中,我們可以看出深度學習框架在多個維度的熱度演變史。
2018:TensorFlow 碾壓 PyTorch
Jeff Hale 的第一份調研結果發佈於 2018 年 9 月。他在那次調研中發現,TensorFlow 是當時的絕對冠軍。在 GitHub 活躍度、谷歌搜索量、Medium 文章數、亞馬遜書籍和 arXiv 論文等維度上所佔的比重都是最大的。此外,TensorFlow 還擁有最多的開發者用戶,相關的網上職位描述也是最多的。
2018 年調研得出的深度學習框架實力得分排名。
相比之下,當時的 PyTorch 只能排到第三,得分比當時的第二名 Keras 還要矮上一截。
各個框架在 2018 年調研結果中的加權得分。從中可以看出,TensorFlow 在絕大多數指標中都是絕對冠軍,而 PyTorch 大多居於第三名。
2019:PyTorch 火力全開,TensorFlow 增長乏力
2019 年 4 月,Jeff Hale 發佈了第二份調查結果。這次,他調研了幾個框架在過去 6 個月(此次調研與上次調研之間的時間間隔)裡的增長情況。結果發現,TensorFlow 仍然是當時需求量最大、增長最快的框架,但 PyTorch 也不容小覷,在過去的六個月增速超過了原來的第二名 Keras。
2019 年調研得出的深度學習框架增長排名。
值得注意的是,當時的 PyTorch 在職位數量增長方面尤其亮眼,與 TensorFlow 之間的差距非常小。而且,除了領英之外,PyTorch 在所有求職網站上的職位增加量都超過了 TensorFlow。
而在谷歌搜索相對數量方面,TensorFlow 當時已經出現了負增長。這表示,在過去六個月,TensorFlow 的相對搜索數量減少,而 PyTorch 的相對搜索數量增加。
2020:PyTorch 頂會獨領風騷,職場優勢追趕 TensorFlow
轉眼到了 2020 年,框架之爭只剩下 PyTorch 和 TensorFlow 兩個實力玩家。所以這次,作者把調研的全部精力都放在了這兩個框架上。
在這次調研進行時,兩個框架已經越來越像了,即出現了「融合」趨勢。二者現在都可以在動態 eager execution 模式或靜態圖模式下運行。
截至目前,PyTorch 已經更新到了 1.4,增加了不少新特性來迎合業界,在谷歌雲 TPU 上運行起來也更加容易。此外,PyTorch 的社區也在不斷擴大,除了最近的 OpenAI,深度學習開源框架 Chainer 的維護者 Preferred Networks(PFN)也於去年底宣佈,該團隊今後將不再進行 Chainer 的重大升級,今後的研究方向將轉向 PyTorch。
TensorFlow 2.0 也引入了不少新的改進,使得 API 更加精簡,對大腦更加友好。此外,TensorFlow 緊密集成了 Keras 作為其前端和高級 API。
與 PyTorch 相比,TensorFlow 在產品和邊緣設備深度學習中仍然擁有更加豐富的功能,但是 PyTorch 的功能也在逐漸完善。
在此背景下,此次調研從以下四個評估指標著手,即在線職位數量、頂會論文中出現次數、在線搜索結果和開發者使用情況。
在線職位數量
2020 年 1 月 26 日,作者搜索了 Indeed、Monster、SimplyHired 和 LinkedIn 四個(美國)求職網站中關於 TensorFlow 和 PyTorch 的關鍵詞。
搜索結果如下圖所示,TensorFlow 在每個求職網站出現的次數大約是 PyTorch 的兩倍。
以百分比計數展示結果如下:
在 10 個月前的調研結果(即 2019 年調研結果)中,TensorFlow 出現在職位列表中的次數是 PyTorch 的三倍,如今差距進一步縮短,降到了兩倍。
頂會論文中的出現次數
當前,PyTorch 在頂會論文中出現的次數最多。如下圖所示,前 PyTorch 實習生 Horace He 做了一個圖表,展示了各大頂會(2017 年-2019 年)論文中,PyTorch 出現次數在 TensorFlow/PyTorch 總出現次數中的佔比情況:佔比超過 50% 意味著在該頂會論文中 PyTorch 出現的次數多於 TensorFlow。從圖中可以看出,PyTorch 在各大頂會中的出現次數幾乎都超過了 TensorFlow。
圖源:https://chillee.github.io/pytorch-vs-tensorflow/
下圖展示了 PyTorch 和 TensorFlow 在 NeurIPS 會議論文中(2016 年-2019 年)的直觀對比和趨勢發展,實線代表 PyTorch,虛線代表 TensorFlow:其中,在 2019 NeurIPS 會議論文中,PyTorch 出現 166 次,TensorFlow 出現 74 次,是後者的兩倍之多;而在 2018 年 NeurIPS 會議論文中,PyTorch 的出現次數還是少於 TensorFlow 的。這些可以看出兩種框架近年來的發展趨勢。
圖源:https://chillee.github.io/pytorch-vs-tensorflow/
在線搜索結果
作者通過 Google Trends 找出了 2017 年 1 月 26 日至 2020 年 1 月 26 日期間,PyTorch(軟件)和 TensorFlow(計算機應用)的相對搜索量。
下圖是谷歌搜索結果(Google Search Results)線性趨勢線,藍色代表 TensorFlow,紅色代表 PyTorch。從圖中可以看出,TensorFlow 的性對搜索量呈下降趨勢,而 PyTorch 呈增長趨勢,二者差距越來越小。
圖源:https://public.tableau.com/profile/jeff.hale6436#!/vizhome/shared/SCFBWY2SP
開發者使用情況
在 2019 年初的 Stack Overflow 開發者調研中,10% 的受訪者使用 TensorFlow,3.3% 的受訪者使用 Torch/PyTorch。專業開發人員的使用佔比情況同樣如此(9.4%vs 2.9%)。但鑑於數據取自 2019 年初,現在的真實情況可能有所變化。
總之,在線職位數量中,TensorFlow 的出現次數依然多於 PyTorch,但差距正在縮小;PyTorch 在頂會論文中出現的次數一直處於領先地位,並在谷歌搜索結果中進一步縮小了與 TensorFlow 的差距;在最近一次的 Stack Overflow 開發者調研中,TensorFlow 的使用佔比依然是 PyTorch 的三倍。
最後,作者表示,他關於 TensorFlow 和 PyTorch 兩種深度學習框架的調研還會繼續下去,但目前仍不確定未來兩年選擇哪種框架最合適。但他認為,TensorFlow 是更加安全的選擇。
最後,作者為想要學習深度學習的讀者提供了一些有用的資源:如 course.fast.ai 網站:https://course.fast.ai/index.html。
閱讀更多 機器之心Pro 的文章