PyTorch橫掃各大頂會,TensorFlow退守工業界

五嘎子 5年前發布 | 1K 次閱讀 Pytorch TensorFlow

  TensorFlow 2.0正式發布沒幾天,PyTorch 1.3今天也上線了。

  一個瘋狂強調“易用性”,一個整出了移動端部署。老將和新秀都卯足了勁。畢竟,機器學習框架的世界,局勢變化過于迅猛,稍不注意就會被搶了地盤。一年前,TensorFlow 還是各大頂會論文選擇的主流框架,如今頂會幾乎成了 PyTorch 的天下。

  CVPR 2019,只提到 PyTorch 的論文有280 篇,只提到 TensorFlow 的論文有125 篇,但這還不是懸殊最大的一場會議。

  有網友 (@programmerChilli) 說,雖然知道大批研究者逃離 TF 擁抱 PT:

但我絕對想不到漲幅能到這種地步。

  那么,PyTorch 的優勢到底在哪里?

  PyTorch 一路凱歌,對 TensorFlow 經營多年的格局又有怎樣的沖擊。這一次,一位來自康奈爾大學的少年 Horace He,用一份詳盡的調查報告,對現狀進行了總結,也為潛在入門者提供了方向:

  PyTorch 制霸學界

  報告開頭就提到:目前的大背景是,大量研究人員從 TensorFlow 轉投 PyTorch。但大家未必知道,這勢頭來得多猛烈。來看 2018 年與 2019 年的各大頂會對比吧:


被擋住的 ICML 是 32.5%

  表格列出了 CVPR、NAACL、ACL、ICLR、ICML 這五大頂會上,僅提到 PyTorch/僅提到 TensorFlow 的論文數量。

  2018 年,PyTorch 五項數據全部低于 TensorFlow。

  2019 年,PyTorch 五個數字全部超越 TensorFlow。

  PyTorch 每項數據的增幅,都在192%450%之間,漲勢十分兇猛。其中,以自然語言處理(NLP) 的頂會NAACL (450%) 和ACL (290%) 最為顯著;在視覺頂會CVPR上也有大幅增長 (240%) 。

  相比之下,TensorFlow 有三項數據下滑。其中 NAACL 數據下降幅度達到了 38.2%,而這里正是 PyTorch 飛躍式增長的地方。

  此消彼長,PyTorch 只用了一年,便把弱勢變成了壓倒性優勢

  280:125 (CVPR) ,兩倍有余。

  66:21 (ACL) ,三倍有余。

  103:33 (NAACL) ,三倍有余。

  在語言和視覺頂會上,PyTorch 的主導地位最明顯。這跟上文提到的漲幅是吻合的。如果還有人把 PyTorch 當做一個新秀,試圖在 TensorFlow 主導的世界里,劃出一片自己的地盤,那么數據告訴他們,已經不是這樣了。

  雖然,看上去 TensorFlow 還有兩項數據在增長,但其實只有 ICML 的漲幅 (32.5%) ,還跟得上會議總錄取論文數的增長。也就是說,在另外四場會議上,TensorFlow 已經開始衰退了。

  為何研究人員愛 PyTorch?

  一是簡單。它和 NumPy 比較像,風格很 Python,能輕易和 Python 生態集成起來。

  比如,你只要把一個 pdb 斷點扔進 PyTorch 模型里,它直接就能用了。相比之下,在 TensorFlow 模型里面 debug 的話,便會復雜得多了。

  二是API 好。比起 TensorFlow 的 API,大多數研究人員更偏愛 PyTorch 的 API。PyTorch 設計得更科學;而 TensorFlow 要在各種 API 之間切換,令人操作不便:

‘layers’ -> ‘slim’ -> ‘estimators’ -> ‘tf.keras’

  三是性能。雖然 PyTorch 的動態圖 (Dynamic Graphs) 提供的優化空間比較小,但許多用戶都反饋說 PyTorch 的速度不亞于 TensorFlow,甚至比對方還快。

  雖然,沒有嚴格測試數據表明到底誰更快,但至少 TensorFlow 并沒有明顯的優勢。這樣,再加上前兩點,足夠讓許多研究人員擁抱 PyTorch 了。

  TensorFlow 在研究領域會怎樣?

  就算今后 TensorFlow 變得像 PyTorch 一樣友好,PyTorch 的地盤也已經很大了。這就是說,PyTorch 的代碼實現更容易找到,人們也更有動力發表 PyTorch 的代碼給大家用,跟別人合作的話隊友也可能會傾向 PyTorch。

  所以,遷回TensorFlow 2.0這件事,大概率不會進展很快。

  當然,谷歌和 DeepMind 內部研究還是會用 TensorFlow。他們的研究成果,大概也給了一部分研究人員,繼續用 TensorFlow 的信心。不過 Horace He 聽說,谷歌內部也有許多研究人員,渴望逃離 TensorFlow 了。

  另一方面,PyTorch 主導地位越來越強,谷歌研究人員可能和整個社區之間產生隔閡:他們很難在外部研究的基礎上搭建自己的應用,外面的研究人員也很難借鑒谷歌的代碼。

  最后,TensorFlow 2.0 能不能挽回一些研究人員,還需要時間來觀察。Eager Execution 一定是個吸引人的點,而 Keras API 就不一定了。

  TensorFlow 守住工業界

  雖然在各個開發者社區,“PyTorch 真香”論聲勢浩大,現在又在頂會數據上實力壓倒 TensorFlow,但其實,在工業界,TensorFlow 仍具優勢。

  比如,根據 Medium 博主 Jeff Hale 的統計結果,2019 年,TensorFlow 在線上招聘啟事中擁有 1541 個新增職位,而 PyTorch 有 1437 個。從 arXiv 的論文數量來看,TensorFlow 也仍然占據首位,只是領先優勢在縮小。

  一方面,TensorFlow 的誕生早于 PyTorch,工業界對新鮮事物的追逐,不像學術界那樣熱切,使用 TensorFlow 已成行業慣性。并且,許多企業的代碼都是基于 TensorFlow 搭建的,想要遷移到 PyTorch 上,并非易事。

  另一方面,相比于 PyTorch,TensorFlow 本身就是為工業界量身打造的。

  相比于研究實驗,工業界會有更多的限制和要求,比如:

  TensorFlow 在這些方面顯然比 PyTorch 做得好得多。比如,訓練好模型,然后使用 TF Lite 進行部署,是目前最可靠的生產管道之一。

  有網友舉了個例子:

TensorFlow 能夠將模型導出到 coreml Android 模型中,也能很容易地將其轉移到 GCP(谷歌云端平臺)環境等任何形式的生產環境中。

  相比之下,PyTorch 的部署有些讓人頭禿:模型無法導出到非 Python 環境,無法優化,無法在移動設備上運行(隨著 PyTorch 1.3 的發布,無法在移動端部署的問題已經得到解決)。

  況且,TensorFlow 還有Keras這個好伙伴呢。

  不過,也有網友認為,PyTorch 在工業界取得主導地位,只是時間問題。

  畢竟在 2018 年的頂會上,TensorFlow 還是主流呢。僅僅一年時間,王座就已易主。


Medium 博主 Jeff Hale 統計

  “融合”趨勢

  PyTorch 勢頭猛烈,但 TensorFlow 也沒有坐以待斃。一個有趣的現象是,現在,這兩個機器學習框架呈現出了“融合”的趨勢。

  十一假期,TensorFlow 2.0 正式登場,進一步整合 TensorFlow 和 Keras,增強易用性,官方表示,這是一個快速、可擴展、可投入生產的靈活而強大的平臺。

  Keras 的作者 François Chollet 甚至說:“TensorFlow 2.0 是一個來自未來的機器學習平臺,它改變了一切。”

  在默認的 eager execution 模式下,TensorFlow 2.0 能提供 PyTorch eager 模式下的大部分有點,比如易用性、可調試性等。并且,針對 TensorFlow 的 API 過于復雜這個問題,2.0 版本也提供了更易用的 API。模型的訓練和 serving 都無縫集成在了基礎框架中。

  PyTorch 這邊,2018 年底引入了 JIT 編譯器和“TorchScript”,增加圖形功能。就在今天,PyTorch 1.3 發布,新增移動端部署、量化和命名張量等功能。

  機器學習框架未來的游戲規則會如何改變,還真令人期待呢。

  FB 谷歌雙料實習生

  最后,介紹下這份詳細報告的作者:

  Horace He,來自康奈爾大學,是 2016 年入學的本科生。自從上了大學,他每個暑假都在大廠實習:2017 年是 非死book 實習軟件工程師,2018 年是谷歌的實習軟件工程師,2019 年在 非死book 做PyTorch 實習生

  另外,少年還是VSCodeVim (標星 6.2k) 的主要貢獻者之一:

  那么,TensorFlow 和 PyTorch,你會 pick 誰?

 本文由用戶 五嘎子 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  轉載自:https://mp.weixin.qq.com/s/IV7BNDEdQv2cwTfjj_7ctw