對比 | TensorFlow VS PyTorch下的深度學習框架之爭

2021-12-28 機器學習實驗室

深度學習框架

Author:Horace He

Revise:louwill

 

source:https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/

對於廣大深度學習行業從業者而言,熟練掌握一種或多種深度學習框架,是日常煉丹的必備技能之一。深度學習框架市場經歷了早期的混亂之後,逐漸形成了以 TensorFlow 和 PyTorch 兩家獨大的市場格局。

圖1是2019年各深度學習框架的綜合得分對比。可以看到,雖然過去一年之中PyTorch 發展勢頭迅猛,但 TensorFlow 仍然牢牢佔據市場頭名。隨著2.0版本將 Keras 作為前端框架進行集成,TensorFlow 在未來相當長一段時間內都會作為老大哥而存在。回顧過去兩年 TensorFlow 和 PyTorch 的發展特點來看,TensorFlow 雖然由於各種原因在丟失一些市場份額,但在工業界落地中仍然是當仁不讓的選擇。但在學術論文和研究領域,PyTorch 卻逐漸佔據主導地位。就國內而言,這兩年深度學習市場的一個顯著特徵是,國產深度學習框架開始多了起來。百度的飛槳、曠視的天元、清華的計圖以及華為的MindSpore等。在世界範圍內深度學習框架競爭趨於穩定的情況下,國產框架能在這兩年集中爆發,不得不說是一個令人欣慰的現象。我們通過實際數據來看一下。下圖顯示了在近些年的研究頂會中,僅僅使用了 PyTorch 框架進行研究的論文數和使用了 TensorFlow 或 PyTorch 的論文總數的比例。如圖所示,每條曲線(代表不同的會議)都向上傾斜(意味著 PyTorch 的佔比越來越高),而且在 2019 年的每個主要的會議中,大多數的論文都採用 PyTorch 實現。圖表來源:https://chillee.github.io/pytorch-vs-tensorflow/如果你需要更多的證據來說明 PyTorch 在研究社區中獲得關注的速度有多快,請看下面關於 PyTorch 和 TensorFlow 使用情況的原始統計圖。在 2018 年,PyTorch 在深度學習框架中的佔比還很小。而現在,PyTorch 已成佔據壓倒性比重的多數。據統計:69% 的 CVPR 論文、75% 以上的 NAACL 和 ACL 論文,以及 50% 以上的 ICLR 和 ICML 論文都選擇使用 PyTorch。PyTorch 在視覺和語言類的會議上(分別以 2:1 和 3:1 的比例超過了 TensorFlow)被使用的頻繁度最為明顯,而且 PyTorch 在ICLR 和ICML 等通用機器學習會議上也比 TensorFlow 更受歡迎。雖然有些人認為 PyTorch 仍然是一個處於萌芽期的框架,試圖在 TensorFlow 主導的世界中開闢出一片市場,但真實的數據卻說明事實並非如此。除了在 ICML 上,其它學術會議中使用 TensorFlow 的論文的增長率甚至還趕不上整體論文數量的增長率。在 NAACL、ICLR 和 ACL 上,今年使用 TensorFlow 的論文數量實際上比去年還少。這麼看來,TensorFlow 確實需要對未來發展緊張起來。簡潔性。PyTorch 與 numpy 很相似,具有很強的 python 風格,並且很容易與 Python 生態系統中的其它組件實現集成。例如,你可以簡單地在 PyTorch 模型中的任何地方添加「PDB」斷點,然後就可以進行調試。在 TensorFlow 框架中,想要進行程序調試就需要一個運行中的會話,這使得調試難以進行。易用的應用程式接口(API)。相較於 TensorFlow 的 API,大多數研究人員更喜歡 PyTorch 提供的 API。這在一定程度上是由於 PyTorch 的設計更好,另一方面是因為 TensorFlow 需要多次切換 API(例如,「layers」->「slim」->「estimators」->「tf.keras」)從而限制了自己的易用性。卓越的性能。儘管 PyTorch 的動態圖留給我們優化的機會很少,但是已經有很多有趣的報導說明 PyTorch 的運行速度和 TensorFlow 一樣快(https://www.reddit.com/r/MachineLearning/comments/cvcbu6/d_why_is_pytorch_as_fast_as_and_sometimes_faster/),甚至更快(https://arxiv.org/abs/1608.07249)。目前尚不清楚這種說法是否屬實,但至少,TensorFlow 在這個方面並沒有獲得絕對的優勢。即使 TensorFlow 在功能方面與 PyTorch 的水平差不多,但是 PyTorch 已經擁有了研究社區中的大多數用戶。這意味著我們更容易找到 PyTorch 版本的算法實現,而作者也會更有動力發布 PyTorch版本的代碼(這樣人們就會使用它),而你的合作者們很可能也更喜歡 PyTorch。因此,如果將代碼移植回 TensorFlow 2.0 平臺,這將會是一個很漫長的過程(如果真的這麼做了)。TensorFlow 在 Google/DeepMind 內部總會有一批固定的用戶,但我不知道 Google 最終是否會放開這一點。即使是現在,很多 Google 想要招募的研究人員已經在不同程度上更加青睞 PyTorch 了。我也聽到了一些抱怨,很多 Google 內部的研究人員希望使用 TensorFlow 以外的框架。此外,PyTorch 的統治地位可能會開始切斷 Google 研究人員與其它研究社區之間的聯繫。不僅 Google的研究人員將更加難以在他人研究的基礎上構建自己的工作,而且外部的研究人員也不太可能基於 Google 發布的代碼開展工作。TensorFlow 2.0 是否能夠為 TensorFlow 挽回一部分研究人員用戶還有待觀察。儘管它的動態圖模式(TensorFlow 2.0 的動態圖模式)一定很吸引人,但是 Keras 的 API 就並非如此了。雖然 PyTorch 現在在研究領域佔據主導地位,但是我們快速分析一下工業界的情況就會發現,在工業界 TensorFlow 仍然是主流的框架。例如,2018 年到 2019 年的數據顯示,在公開招聘網站上,涉及 TensorFlow 的新招聘信息有 1541 個,而涉及 PyTorch 的新招聘信息則是 1437 個;知名科技媒體「Medium」上有 3230 篇關於 TensorFlow 的新文章,而關於 PyTorch 的新文章只有 1200 篇;在 GitHub 上,用 TensorFlow 編寫的項目獲得了 13700 顆星,而用 PyTorch 編寫的項目只獲得了 7200 顆星。那麼,既然 PyTorch 在研究人員中是如此受歡迎,為什麼它在工業界還沒有取得同樣的成功呢?第一個顯而易見的答案就是:慣性。TensorFlow 比 PyTorch 早誕生數年,而且工業界採用新技術的速度比研究人員要慢一些。另一個原因是:TensorFlow 比 PyTorch 更適用於生產環境。但這意味著什麼呢?要想回答這個問題,我們需要知道研究人員和工業界的需求有何不同。研究人員關心的是他們在研究中迭代的速度有多快,這通常是在相對較小的數據集(可以在一臺機器上運行的數據集)上、使用少於 8 個 GPU 進行的。最大的限制因素往往不是出於性能的考慮,而是他們快速實現新思路的能力。相反,工業界認為性能是需要最優先考慮的。雖然運行時的速度提升 10% 對於研究人員來說基本沒有意義,但這可以直接為公司節約數百萬美元的成本。另一個區別是部署。研究人員將在他們自己的機器或某個專門用於運行研究工作的伺服器集群上進行實驗。另一方面,工業界在部署方面則有一連串的限制/要求:不能使用 Python。對於一些公司運行的伺服器來說,Python 運行時的計算開銷太大了。移動性。你不能在移動端的二進位文件中嵌入 Python 解釋器。服務性。需要滿足各種需求,例如在不停機的狀態下更新模型、在模型之間無縫切換、在推理時進行批處理,等等。TensorFlow 是專門圍繞這些需求構建的,並為所有這些問題提供了解決方案:計算圖的版式和執行引擎本身並不需要Python,並且通過TensorFlow Lite 和 TensorFlow Serving 分別處理移動端和伺服器端的問題。在此前,PyTorch 還不能夠很好地滿足上述需求,因此大多數公司目前在生產環境下都選擇使用 TensorFlow。但隨著 PyTorch 1.6版本的發布,對生產環境的支持也更加友好,相信 PyTorch 會逐漸在此方面縮小與 TensorFlow 的差距。進入2020年,我們驚喜的發現,國內頂級科技公司和研究機構逐漸開始開源自己的深度學習計算框架。包括百度的PaddlePaddle、曠視的MegEngine、清華的Jittor、華為的MindSpore以及一流科技的OneFlow等。
作為國產深度學習框架的老大哥,飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業務應用為基礎,是中國首個開源開放、技術領先、功能完備的產業級深度學習平臺,集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件於一體。目前,飛槳累計開發者194萬,服務企業8.4萬家,基於飛槳開源深度學習平臺產生了23.3萬個模型。飛槳助力開發者快速實現AI想法,快速上線AI業務。幫助越來越多的行業完成AI賦能,實現產業智能化升級。

MegEngine 是 Brain++的核心組件,是與百度PaddlePaddle一樣的為開發者和研究人員提供開發的國產原創深度學習框架。而Brain++是曠視一個具備大規模算法研發能力的端到端解決方案。這該框架主要用於曠視內部進行計算機視覺領域的算法開發工作,包括大規模的圖像檢測、分割、識別任務等,因此在計算機視覺領域具備獨特的優勢。
import megengine as mgeimport megengine.functional as Fimport megengine.module as Mimport numpy as np
class LeNet(M.Module): def __init__(self): super(LeNet, self).__init__() self.conv1 = M.Conv2d(1, 6, 5) self.relu1 = M.ReLU() self.pool1 = M.MaxPool2d(2, 2) self.classifer = M.Linear(84, 10)
def forward(self, x): x = self.pool1(self.relu1(self.conv1(x))) x = self.classifer(x) return x

我國人工智慧產業發展迅速,急需構建自己的開源深度學習生態。清華大學計算機系胡事民教授研究團隊提出了一個全新的深度學習框架——計圖(Jittor)。Jittor是一個採用元算子表達神經網絡計算單元、完全基於動態編譯(Just-in-Time)的深度學習框架。Jittor國內首個高校研究機構開源的深度學習框架。深度學習採用的卷積神經網絡是由算子(Operator)組成的一個計算網絡。由於架構設計和不斷擴充等原因,當前深度學習框架有多達2000種算子,系統複雜,優化和移植困難。Jittor則將算子運算進一步分解,形成了更加底層的三類20餘種元算子閉包,目前神經網絡常用算子均可以使用元算子的組合進行表達。面向未來深度學習框架的發展趨勢,Jittor利用元算子組合表達的優勢,提出統一計算圖進行優化,並從底層開始設計了一個全新的動態編譯架構。該架構支持多種編譯器,實現了所有代碼的即時編譯和動態運行,確保了實現和優化分離,大幅提升了應用開發靈活性、可拓展性和可移植性。最後,為了了解國內各類企業在人工智慧和深度學習框架方面的需求,我們做一個小調研,歡迎掃描下方二維碼或點擊閱讀原文填寫深度學習框架問卷,助力和宣傳國產深度學習技術框架。

相關焦點

  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • Tensorflow和Pytorch深度學習框架安裝教程
    目前主流深度學習框架有Tensorflow和pytorch,由於一些原因我只在windows10下安裝了以上兩個深度學習框架。
  • TensorFlow 與 PyTorch 之爭
    谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。
  • 2020,PyTorch真的趕上TensorFlow了嗎?
    通過這四個方面的對比,作者最後得出結論,TensorFlow 在大多數領域仍然處於領先地位,但 PyTorch 正在取得進展並逐漸縮小差距。其實,這已經不是這位作者第一次調研深度學習框架了。從 2018 年到 2020 年,他先後進行過三次調查研究並發布了相關報告。從這些報告中,我們可以看出深度學習框架在多個維度的熱度演變史。
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智慧。本文將手把手帶你快速搭建你自己的深度學習環境,然後實現自己的第一個深度學習程序。野蠻智能,小白也能看懂的人工智慧。小編強烈建議為pytorch建立一個虛擬環境,這樣做的好處是方便我們同時使用多個深度學習框架,每個框架就對應一個虛擬環境,框架之間可以互不幹擾。具體步驟:Windows用戶搜索打開Anaconda Prompt,然後輸入:source create -n pytorch python=3.5,pytorch是這個虛擬環境的名字,你也可以給它起個別的名字,Python的版本我們也可以指定為3.6。
  • PYTORCH與TENSORFLOW:哪種框架最適合您的深度學習項目?
    為了幫助開發這些架構,諸如Google,Facebook和Uber之類的技術巨頭已經發布了適用於Python深度學習環境的各種框架,從而使學習,構建和訓練多樣化的神經網絡變得更加容易。在本文中,我們將研究兩個流行的框架並進行比較:PyTorch與TensorFlow。簡要地比較一下,最常用和依賴的Python框架TensorFlow和PyTorch。
  • TensorFlow、PyTorch、Keras:NLP框架哪家強
    全文共3412字,預計學習時長7分鐘在對TensorFlow、PyTorch和Keras做功能對比之前,先來了解一些它們各自的非競爭性柔性特點吧。)Keras· 是一個高級API,降低了深度學習框架的複雜程度· 可以在其他深度學習API,如TensorFlow、Theano和CNTK上運行· 本身並不是一個庫競爭性區別
  • PyTorch 能追上 TensorFlow 嗎?
    2020年深度學習框架現狀自從我對主要的深度學習框架進行研究以來,已經過去了10個月。PyTorch和TensorFlow已經成為了首選的框架。TensorFlow領先了PyTorch兩年,但是PyTorch在許多領域都在縮小差距。讓我們來看看現在的狀況!👍
  • PyTorch稱霸頂會:CVPR論文佔比是TensorFlow 4 倍
    機器之心報導參與:杜偉在開源框架領域,PyTorch 與 TensorFlow 之爭一直存在,研究人員在寫論文時也會有不同的偏向。自 2009 年深度學習再度成為焦點以來,很多機器學習框架成為研究者和業界開發者的新寵。從早期的學術框架 Caffe、Theano 到如今 Pytorch、TensorFlow 這樣越來越大規模的開發框架。
  • 深度學習環境配置指南:Pytorch、TensorFlow、Keras
    導讀本文介紹了作者使用RTX3090進行深度學習環境配置pytorch、tensorflow、keras等的詳細過程及代碼。筆者中山大學研究生,醫學生+計科學生的集合體,機器學習愛好者。所以自己測了下速度最快的3090配置環境,歡迎補充!
  • Pytorch還是TensorFlow?頂會帶你覽趨勢
    ,PyTorch 與 TensorFlow 之爭一直存在,研究人員在寫論文時也會有不同的偏向。自 2009 年深度學習再度成為焦點以來,很多機器學習框架成為研究者和業界開發者的新寵。從早期的學術框架 Caffe、Theano 到如今 Pytorch、TensorFlow 這樣越來越大規模的開發框架。發展到 2020 年,我們可以看到國內外越來越多的科技巨頭、創業公司都在研發、使用自家的深度學習框架,如國內的也有百度飛槳、華為 MindSpore、曠視天元。
  • 「決戰紫禁之巔」之深度學習框架篇:Keras VS PyTorch
    一年前,機器之心就曾做過此方面的探討:《Keras vs PyTorch:誰是「第一」深度學習框架?》。現在PyTorch已經升級到1.x版本,而Keras也在進一步發展,情況發生了怎樣的變化呢?本文從四個方面對Keras和PyTorch各自的優劣勢做了進一步詳述,相信讀者會對如何選擇適合自己的框架有更清楚的認知。
  • GitHub趨勢榜第一:TensorFlow+PyTorch深度學習資源大匯總
    來源:Github編輯整理:元子【新智元導讀】該項目是Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構本文搜集整理了Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構,模型和技巧,內容非常豐富,適用於Python 3.7,適合當做工具書。大家可以將內容按照需要進行分割,列印出來,或者做成電子書等,隨時查閱。
  • 2019 年機器學習框架之爭:PyTorch 和 TensorFlow 誰更有勝算?
    雷鋒網 AI 科技評論按:對於機器學習科研工作者和工業界從業人員來說,熟練掌握一種機器學習框架是必備技能之一。隨著深度學習技術發展的突飛猛進,機器學習框架市場也漸漸度過了初期野蠻生長的階段。大浪淘沙,目前仍然活躍的機器學習框架主要是 PyTorch 和 TensorFlow。本文從學術界和工業界兩個方面深度盤點了 2019 年機器學習框架的發展趨勢。
  • RTX 3090 的深度學習環境配置指南:Pytorch、TensorFlow、Keras
    導讀本文介紹了作者使用RTX3090進行深度學習環境配置pytorch、tensorflow、keras等的詳細過程及代碼。筆者中山大學研究生,醫學生+計科學生的集合體,機器學習愛好者。所以自己測了下速度最快的3090配置環境,歡迎補充!
  • 深度學習100+經典模型TensorFlow與Pytorch代碼實現大集合
    【導讀】深度學習在過去十年獲得了極大進展,出現很多新的模型,並且伴隨TensorFlow和Pytorch框架的出現,有很多實現,但對於初學者和很多從業人員
  • 9步教你安裝完成tensorflow與pytorch
    (沒裝或者不懂的⼩夥伴可以學習下)這⾥咱們主要使⽤ Windows 中的Anaconda Prompt 進⾏安裝,因為在Linux、Mac通⽤也是⼤同⼩異的                                                ▍第一步:打開Anaconda Prompt
  • 深度學習 100+ 經典模型 TensorFlow 與 Pytorch 代碼實現大集合
    深度學習在過去十年獲得了極大進展,出現很多新的模型,並且伴隨TensorFlow和Pytorch框架的出現,有很多實現,但對於初學者和很多從業人員,如何選擇合適的實現
  • 深度學習框架搭建之PyTorch
    深度學習框架搭建之PyTorchPyTorch 簡介PyTorch 是由 Facebook 推出,目前一款發展與流行勢頭非常強勁的深度學習框架。PyTorch 與 NumPy 非常相似,可以說是它的替代者,支持 GPU 加速運算,用來搭建和訓練深度神經網絡。如果學習過 NumPy 以及常見的深度學習概念(如卷積層,循環層等),非常容易上手PyTorch。目前主流的深度學習框架主要有 TensorFlow,PyTorch,mxnet,caffe和Keras 等。
  • 掌握深度學習,為什麼要用 PyTorch、TensorFlow 框架?
    另一方面,在某些情況下,深度學習或深度遷移學習可以幫助你訓練更準確的模型。在這些情況下,你可以考慮使用PyTorch和TensorFlow,特別是如果你所需的訓練模型與其中一個框架模型庫中的模型類似。PyTorchPyTorch建立在舊版的Torch和Caffe2框架之上。