自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2019深度學習框架決戰(zhàn):PyTorch橫掃AI頂會,再奪NeurIPS 2019!

新聞 機器學習
近日,Reddit的一則熱帖引發(fā)機器學習社區(qū)大量討論:NeurIPS 2019使用的機器學習框架:PyTorch 68-> 166,TensorFlow 91-> 74。

近日,Reddit的一則熱帖引發(fā)機器學習社區(qū)大量討論:

 NeurIPS 2019使用的機器學習框架:PyTorch 68-> 166,TensorFlow 91-> 74

帖主Horace He是康奈爾大學的學生,他的研究興趣是編譯器和機器學習的交叉。他分析了 NeurIPS 2019論文使用的機器學習框架,發(fā)現相比2018年,今年使用PyTorch的論文從68篇增加到166篇,使用TensorFlow的從91篇減少到74篇。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

從篇數上看,相比2018年,使用PyTorch的論文大幅增加,而TensorFlow略有下降

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

在所有提及TensorFlow/PyTorch的論文中,PyTorch占了69%

這印證了他的在上個月寫了一篇題為《2019年機器學習框架的狀態(tài)》的文章,指出PyTorch的增長在研究領域已經大幅超越TensorFlow,研究人員正在放棄TensorFlow并大量涌向PyTorch。同時,在工業(yè)界,Tensorflow當前仍然是首選框架,但長期來看可能并非如此。

這篇全面分析比較PyTorch和Tensorflow的增長的文章當時引起熱議,但有人質疑:這些結果是否只適用于NLP會議?

現在,從NeurIPS會議的分析結果來看,答案是否定的。

也有人仍然認為動態(tài)圖/PyTorch只在NLP社區(qū)中流行。很顯然,事實并非如此。

從這些分析結果來看,PyTorch在深度學習研究,包括機器學習、計算機視覺和自然語言處理各領域都占據了主導地位,這點Yann LeCun也同意。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

Yann LeCun:NeurIPS19論文使用深度學習框架中,超過69%提到了PyTorch。PyTorch在深度學習研究(ML/CV/NLP會議)中占據了主導地位。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

上圖可以看出,各大ML/CV/NLP的頂會上,采用PyTorch的論文持續(xù)大幅增長,而TensorFlow增速減緩,甚至略有下降。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

考慮到各大頂會錄取論文數量年年增長,只看絕對數量不能完全反映實際。上圖是采用PyTorch/TensorFlow的論文相對總論文數量的百分比,可以更明顯地看出這一趨勢。

Reddit網友:從TensorFlow轉PyTorch,真香

造成這一趨勢的原因是什么?PyTorch真的那么好用,足以讓一大批研究人員放棄TensorFlow涌向PyTorch嗎?

從Reddit網友的評論來看,改用PyTorch的一致表示“真香”:

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

過去兩年我一直使用Keras/TF,直到最近我才改用PyTorch?,F在我真的很喜歡PyTorch,我覺得它更簡潔明了。只是我個人的看法。


2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

我喜歡使用PyTorch來設計帶有怪異的訓練、反向傳播圖和其他內容的新模型。我覺得使用PyTorch,即使你不能快速部署標準模型,也可以更自由地設計自己的自定義算法。也許這就是為什么它主要用于研究。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

我使用Tensorflow/Keras已經有一段時間了。我記得的結論是,Tensorflow在生產部署方面更出色,PyTorch在研究中表現更好。我最近開始使用PyTorch,不得不說我真的很喜歡它,感覺它更“pythonic”。此外,通過諸如ONNX之類的框架,部署(眾所周知的模型)也開始變得不成問題。兩者我都會繼續(xù)使用。

Tensorflow 2.0 vs PyTorch是一個艱難的選擇。

我喜歡Tensorflow,我也喜歡PyTorch。

TF是基于開發(fā)的,PyTorch是基于研究的。

兩者都很需要。在我看來,兩者是平等的。50-50

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

很長一段時間以來,TensorFlow有很多PyTorch沒有的“面向生產”的特性。例如部署到移動端,能夠在沒有python環(huán)境的情況下運行,有很多方法可以最大化模型的性能(量化等等)。

如果你要在生產中部署模型,那么業(yè)界仍然首選TF。除非他們能讓PyTorch的production pipeline不那么糟糕,否則這種情況將一直持續(xù)下去。

總體來看,網友的體驗與Horace He的分析在很大程度上是一致的。但PyTorch究竟好用在哪里呢,Horace He的文章還細致分析了兩者各自的特性、優(yōu)勢和不足,并討論了機器學習框架的未來。

2019年機器學習框架之戰(zhàn),PyTorch還是TensorFlow?

自2012年深度學習重新獲得重視以來,許多機器學習框架便爭相成為研究人員和行業(yè)從業(yè)人員的新寵。從早期的學術成果Caffe和Theano到龐大的產業(yè)支持的PyTorch和TensorFlow,在這么多選擇中,到底最流行的是哪一個?

如果你只瀏覽Reddit,則可能會假設每個人都在用PyTorch。若從Francois Chollet的Twitter來判斷,TensorFlow或Keras可能是主流,而PyTorch卻停滯不前。

在2019年,機器學習框架之戰(zhàn)還有兩個主要競爭者:PyTorch和TensorFlow。分析表明,研究人員正在放棄TensorFlow并大量涌向PyTorch。同時,在行業(yè)中,Tensorflow當前是首選平臺,但從長遠來看可能并非如此。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

PyTorch在研究領域的主導地位不斷提升

先來看看數據。下圖顯示了從2017~2019年,在主要機器學習頂會上,僅提及PyTorch的論文和使用TensorFlow或PyTorch的論文之間的比例??梢钥闯?,所有的線條都在向上傾斜,并且在2019年的每個主要會議上,大多數論文都在PyTorch中實現。


2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

詳見:https://chillee.github.io/pytorch-vs-tensorflow/

如果你需要更多證據證明PyTorch在學術界的發(fā)展有多快,下面是PyTorch與TensorFlow被提及數量的對比圖。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

PyTorch和TensorFlow被單獨提及的數量

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

在2018年,PyTorch還是少數?,F在,PyTorch已是主流,CVPR使用PyTorch的占 69%,NAACL和ACL中占75%以上,而ICLR和ICML中占50%以上。雖然PyTorch在視覺和語言會議上的統(tǒng)治地位最強(PyTorch與TensorFlow相比是2:1和3:1),但在ICLR和ICML等常規(guī)機器學習會議上,PyTorch也比TensorFlow受歡迎。

雖然有人認為PyTorch仍然是一個新興的框架,試圖在TensorFlow主導的世界中開拓一席之地,但數據顯示并非如此。除了ICML之外,在任何一次會議上,TensorFlow的增長都與論文的總體增長保持一致。在NAACL、ICLR和ACL,Tensorflow今年的論文數量實際上比去年少。

PyTorch不用擔心自己的未來,需要擔心的是TensorFlow。

為什么研究人員喜歡PyTorch?

  • 簡單。它類似于numpy,非常具有python風格,并且可以輕松地與Python生態(tài)系統(tǒng)的其余部分集成。例如,只需在PyTorch模型中的任何地方插入一個pdb斷點,它就可以工作了。在TensorFlow中,調試模型需要一個活動會話(active session),并且最終變得更加棘手。
  • 很棒的API。與TensorFlow的API相比,大多數研究人員更喜歡PyTorch的API。一個原因是PyTorch的設計更好,另一個原因是TensorFlow通過多次切換API(例如‘layers’ -> ‘slim’ -> ‘estimators’ -> ‘tf.keras’)把自己搞殘了。
  • 性能。盡管事實上PyTorch的動態(tài)圖提供的優(yōu)化機會很少,但是有許多傳聞稱PyTorch的速度和TensorFlow一樣快,甚至比TensorFlow還快。目前尚不清楚這是否真的成立,但至少,TensorFlow在這一領域還沒有獲得決定性的優(yōu)勢。

TensorFlow的研究前景如何?

即使TensorFlow在功能方面與PyTorch不相上下,但PyTorch已經覆蓋了社區(qū)的大部分。這意味著PyTorch將更容易找到,作者將更有動力在PyTorch中發(fā)布代碼(以便人們使用它),并且你的合作者很可能會更喜歡PyTorch。因此,如果真的發(fā)生的話,任何回到Tensorflow 2.0的遷移都可能很慢。

TensorFlow在Google / DeepMind中將始終擁有一定的受眾群體,但不知道Google是否最終會放棄。即使是現在,Google想要招募的許多研究人員已經在不同層次上偏愛PyTorch,而且還聽到有人抱怨說Google內部的許多研究人員都希望使用TensorFlow以外的框架。

此外,PyTorch的統(tǒng)治地位可能會開始將Google研究人員與其他研究群體隔離開來。他們不僅很難在外部研究的基礎上進行構建,而且外部研究人員也不太可能在Google發(fā)布的代碼基礎上進行構建。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

PyTorch和TensorFlow用于生產

盡管PyTorch現在在研究領域占據主導地位,但縱觀業(yè)界,TensorFlow仍然是主導框架。例如,根據2018年至2019年的招聘網站數據,TensorFlow有1541個新職位,PyTorch有1437個新職位。TensorFlow的Medium文章有3230篇,PyTorch則有1200篇;TensorFlow有13700顆GitHub新星,PyTorch有7200顆,等等。

因此,如果PyTorch在學界中如此流行,為什么它沒有在業(yè)界獲得同樣的成功呢?一個顯而易見的第一個答案就是懶(inertia)。Tensorflow比PyTorch早幾年問世,業(yè)界采用新技術的速度比研究人員慢。另一個原因是TensorFlow在生產方面比PyTorch更好。但是,這是什么意思?

要回答這個問題,我們需要知道研究人員和行業(yè)的需求有何不同。

研究人員在意他們能夠以多快的速度進行研究,該研究通常是在相對較小的數據集(可以放在一臺機器上的數據集)上運行的,并且運行在<8個GPU上。通常,研究人員考慮的是速度而非性能,即哪個能讓他們快速實踐新想法。相反,業(yè)界認為性能是重中之重。盡管將運行速度提高10%對研究人員來說毫無意義,但這可以直接為公司節(jié)省數百萬美元的費用。

另一個區(qū)別是部署。研究人員將在自己的計算機或專用于運行研究工作的服務器群集上進行實驗。相反,業(yè)界有很多限制/要求:

  • 無Python。一些公司會運行服務器,而高昂的Python運行開銷無法承受。
  • 移動。無法在mobile binary中嵌入Python interpreter。
  • 服務。一個全面的功能,如不停機更新模型,無縫切換模型,在預測時間批處理,等等。

TensorFlow是專門針對這些需求而構建的,并為所有這些問題提供了解決方案:圖形格式和執(zhí)行引擎本來就不需要Python,TensorFlow Lite和TensorFlow Serving服務分別考慮了移動和服務。

從歷史上看,PyTorch未能滿足這些考慮,因此大多數公司目前在生產中使用TensorFlow。

Tensorflow Eager

在 API 級別,TensorFlow eager 模式與 PyTorch 的 eager 模式本質上是相同的。eager 模式為 TensorFlow 提供了 PyTorch 的大部分優(yōu)勢 (易用性、可調試性等)。

然而,這也給了 TensorFlow 帶來了同樣的缺點。TensorFlow eager 模型不能導出到非 python 環(huán)境,不能進行優(yōu)化,不能在移動設備上運行,等等。

這將 TensorFlow 置于與 PyTorch 相同的位置,它們以本質上相同的方式進行解析 —— 你可以跟蹤代碼 (tf.function) 或重新解釋 Python 代碼 (Autograph)。

2019深度学习框架决战:PyTorch横扫AI顶会,再夺NeurIPS 2019!

因此,TensorFlow 的 eager 模式并不能真正做到 “兩全其美”。盡管可以使用 tf 將代碼轉換為靜態(tài)圖,但這不是一個無縫的過程。跟蹤代碼會受到限制,重新解釋 Python 代碼本質上需要重寫大部分 Python 編譯器。當然,通過將范圍限制為用于深度學習的 Python 子集,可以大大簡化范圍。

PyTorch占領研究界,TensorFlow統(tǒng)治工業(yè)界

至此,我們得出了機器學習框架當前的現狀:

  • PyTorch 占領了研究界,并試圖將其在研究領域的成功推廣到工業(yè)界。
  • TensorFlow 試圖在不犧牲太多生產能力的情況下,遏制其在研究領域的損失。

當然,PyTorch 要在業(yè)界產生有意義的影響還需要很長一段時間 ——TensorFlow 太根深蒂固了,而行業(yè)變化緩慢。

不過,從 TensorFlow 1.0 過渡到 2.0 會是困難的,這為公司考慮采用 PyTorch 提供了機會。

未來將取決于誰能更好地回答下列問題。

  • 研究人員的偏好會對業(yè)界產生多大的影響?

現在這批博士生即將畢業(yè),他們將帶上 PyTorch 進入業(yè)界。這種偏好是否足夠強大,以至于公司會出于招聘目的選擇 PyTorch?創(chuàng)業(yè)的畢業(yè)生會為自己的公司選擇 PyTorch 嗎 ?

  • TensorFlow 的 eager 模式在可用性方面能趕上 PyTorch 嗎?

在線社區(qū)給我的印象是,TensorFlow Eager 深受性能 / 內存問題的困擾,而 Autograph 系列也有自己的問題。谷歌將花費大量的工程努力,但 TensorFlow 卻受歷史包袱拖累。

  • PyTorch 達到生產狀態(tài)的速度有多快?

PyTorch 仍有許多基本問題問題沒有解決 —— 沒有好的量化指標、不支持移動設備、服務性等等。在這些問題解決之前,PyTorch 不會成為許多公司的選擇。注:在本文發(fā)布的當天,PyTorch 就宣布了對量化和移動的支持。這兩種方法都還處于試驗階段,但是對于 PyTorch 來說已經取得了重大進展。

  • 谷歌在行業(yè)上的孤立會傷害它嗎?

谷歌推動 TensorFlow 的主要原因之一是幫助其迅速發(fā)展的云服務。由于谷歌試圖擁有整個 ML 垂直市場,這可能激勵競爭的公司 (微軟、亞馬遜、英偉達等) 支持唯一的替代機器學習框架,即 PyTorch。

機器學習框架的下一步:高階微分和代碼生成

下一步是什么

機器學習框架在很大程度上影響了ML研究,這一點或許沒有得到充分的認識。它們不僅使機器學習研究成為可能,它們還使研究人員能夠輕松探索的想法成為可能,或對這些想法加以限制。有多少新生的想法僅僅因為沒法簡單地在一個框架中表達而粉碎?PyTorch可能已經達到了本地研究的最低要求,但值得探討的是,其他框架提供了什么,以及它們可能帶來哪些研究機會。

高階微分:

PyTorch和Tensorflow的核心是自動微分框架。也就是說,它們允許對某個函數求導。然而,有許多方法可以實現自動微分,大多數現代ML框架選擇的特定實現稱為“反向模式自動微分”,更常見的說法是“反向傳播”。這個實現被證明對神經網絡求導非常有效。

但是,計算高階導數(Hessian/Hessian向量內積)的情況有所變化。有效地計算這些需要所謂的“前向模式自動微分”。如果沒有這種能力,計算Hessian向量內積可能會慢幾個數量級。

Jax是由Autograd的同一幫人構建的,具有正向和反向模式自動微分的特性。這使得計算高階導數的速度比PyTorch/TensorFlow快幾個數量級。

然而,Jax提供的不僅僅是高階導數。Jax開發(fā)人員將Jax視為組合任意函數轉換的框架,包括vmap(用于自動批處理)或pmap(用于自動并行處理)。

最初的autograd有一批忠實追隨者(盡管沒有GPU支持,ICML仍然有11篇論文還是使用了它),Jax很可能很快就會形成一個類似的忠實社區(qū),將它用于各種n階導數。

代碼生成

當運行PyTorch/TensorFlow模型時,大部分工作實際上并不是在框架中完成的,而是由第三方內核完成的。這些內核通常由硬件供應商提供,由高級框架可以利用的操作符庫組成。比如MKLDNN(用于CPU)或cuDNN(用于Nvidia GPU)。更高級的框架將它們的計算圖分解成多個塊,然后這些塊可以調用這些計算庫。這些庫代表了數千小時的工作,并且經常針對架構和應用程序進行優(yōu)化以獲得最佳性能。

然而,最近對非標準硬件、稀疏/量化張量和新運算符的興趣暴露了依賴這些運算符庫的一個主要缺陷:它們不靈活。如果你想在研究中使用一個新的運算符,比如膠囊網絡,你會怎么做?如果你想在ML框架不支持的新硬件加速器上運行模型,該怎么辦?現有的解決方案往往達不到要求。

每一個新的硬件結構、張量類別或運算符都大大增加了這個問題的難度。有很多工具 (Halide, TVM, PlaidML, Tensor Comprehensions, XLA, Taco, etc)可以處理,但是仍沒有一個正確的方法。

如果不投入更多的工作來解決這個問題,我們就會有將ML研究過度適合于現有工具的風險。

機器學習框架的未來

這些對于TensorFlow和PyTorch的未來來說是激動人心的時刻。它們的設計已經趨同到這樣一個地步,以至于任何一個框架都不會憑借其設計而獲得決定性的勝利。雙方都劃出了各自的領域——一方占據研究界,另一方占據工業(yè)界。

就我個人而言,在PyTorch和TensorFlow之間,我傾向于PyTorch。機器學習仍然是一個研究驅動的領域。工業(yè)界不能忽視研究成果,只要PyTorch主導研究,就會迫使公司轉向PyTorch。

然而,快速發(fā)展的不僅僅是框架。機器學習研究本身也處于快速的變化之中。不僅框架會改變——5年后使用的模型/硬件/范例都可能與我們今天使用的有很大的不同。也許隨著另一種計算模型占據主導地位,PyTorch和TensorFlow之爭將變得無關緊要。

我們大多數人從事機器學習工作不是為了賺錢,也不是為了協(xié)助公司的戰(zhàn)略計劃。我們從事機器學習是因為我們關心——關于推進機器學習研究,關于人工智能的民主化,或者僅僅是關于構建有趣的東西。不管你是喜歡TensorFlow還是PyTorch,我們都在努力讓機器學習軟件做到最好。

 

責任編輯:張燕妮 來源: 新智元
相關推薦

2019-10-11 12:47:54

機器學習人工智能計算機

2019-01-30 11:37:14

深度學習工具人工智能

2019-06-26 05:29:44

深度學習KerasPyTorch

2021-11-05 12:59:51

深度學習PytorchTenso

2022-01-06 10:04:17

深度學習編程人工智能

2020-07-03 15:03:47

深度學習編程人工智能

2019-08-02 09:26:24

深度學習框架排行榜

2022-11-25 07:35:57

PyTorchPython學習框架

2018-11-27 13:33:36

2019-12-30 09:41:59

機器學習人工智能計算機

2021-09-02 10:15:50

計算平臺MaxCompute 阿里云

2020-04-22 14:00:50

PyTorchTensorFlow深度學習

2019-09-26 05:16:24

深度學習數據科學神經網絡

2019-04-12 09:28:46

2022-03-14 13:59:49

PyTorchTensorFlowAI

2018-07-03 15:59:14

KerasPyTorch深度學習

2019-10-21 09:29:00

JavaScriptHTML數據庫

2019-10-11 23:18:15

機器學習TensorflowPyTorch

2021-12-01 14:36:16

數字化
點贊
收藏

51CTO技術棧公眾號