為什么適用于Python的TensorFlow正在緩慢消亡
?科技領(lǐng)域一直存在著一種「教派之爭」。無論是關(guān)于不同操作系統(tǒng)、云服務(wù)提供商還是深度學(xué)習(xí)框架的利弊之爭,只要喝上幾杯啤酒,事實就會被拋到一邊,人們就開始就像爭奪圣杯一樣,為他們支持的技術(shù)而戰(zhàn)。
關(guān)于 IDE 的討論似乎沒有盡頭,有些人喜歡 VisualStudio,有些人喜歡 IntelliJ,還有一些人更偏愛普通的舊編輯器,如 Vim。總有人說,愛用的文本編輯器往往會反映出用戶的性格,這聽起來似乎有點荒唐。
在 AI 技術(shù)興起后,深度學(xué)習(xí)框架 PyTorch 和 TensorFlow 兩大陣營似乎也爆發(fā)了類似的「戰(zhàn)爭」。這兩個陣營背后都有大量的支持者,并且他們都有充足的理由來說明為什么他們所喜歡的框架是最好的。
話雖如此,但數(shù)據(jù)顯示出一個再明顯不過的事實。TensorFlow 是目前應(yīng)用最廣泛的深度學(xué)習(xí)框架。它每個月在 StackOverflow 上收到的問題幾乎是 PyTorch 的兩倍。
但另一方面,PyTorch 最近的發(fā)展勢頭很好,TensorFlow 的用戶一直沒有增長。在這篇文章發(fā)表之前,PyTorch 一直在穩(wěn)步獲得關(guān)注。
為了完整起見,下圖還展示了與 TensorFlow 幾乎同時發(fā)布的 Keras。顯然,Keras 近年來的表現(xiàn)不盡人意,簡單來說是因為 Keras 有點簡單,對于大多數(shù)深度學(xué)習(xí)從業(yè)者的需求來說太慢了。
PyTorch 的熱度仍在增長,而 TensorFlow 的增長已經(jīng)停滯
圖表來自 StackOverflow trends
TensorFlow 的 StackOverflow 流量可能不會快速下降,但它仍然是在下降。所以人們有充分的理由認(rèn)為,這種下降趨勢在未來幾年將會更加明顯,特別是在 Python 領(lǐng)域。
PyTorch 是更 python 化的框架
谷歌主導(dǎo)開發(fā)的 TensorFlow 是 2015 年底出現(xiàn)在深度學(xué)習(xí)派對上的首批框架之一。然而就像任何軟件一樣,第一個版本使用起來總是相當(dāng)麻煩。
這也正是 Meta(Facebook)開始研發(fā) PyTorch 的原因,作為一種與 TensorFlow 功能相似,但操作起來更加便捷的技術(shù)。
TensorFlow 的研發(fā)團隊很快就注意到了這一點,并在 TensorFlow 2.0 大版本更新中采用了許多 PyTorch 上最受歡迎的特性。
一個好的經(jīng)驗法則是用戶可以在 TensorFlow 中做任何 PyTorch 能做的事情。它將花費兩倍的精力來編寫代碼。即使在今天,它也不是那么直觀,而且感覺很不 python。
另一方面,對于喜歡使用 Python 的用戶來說,PyTorch 的使用體驗非常自然。
許多公司和學(xué)術(shù)機構(gòu)不具備構(gòu)建大型模型所需的強大計算能力。然而在機器學(xué)習(xí)方面,規(guī)模才是王道;模型越大,性能越好。
在 HuggingFace 的幫助下,工程師可以使用大型、經(jīng)過訓(xùn)練的和調(diào)優(yōu)的模型,只需幾行代碼就可以將它們合并到他們的工作流程管道中。然而,這些模型中的 85% 只能與 PyTorch 一起使用,這令人驚訝。只有大約 8% 的 HuggingFace 模型是 TensorFlow 獨有的。其余部分可共用于兩個框架。
這意味著如今的很多用戶如果打算使用大模型,那么他們最好遠離 TensorFlow,不然就需要投入大量的計算資源來訓(xùn)練模型。
PyTorch 更適合學(xué)生和研究使用
PyTorch 在學(xué)術(shù)界更受歡迎。這么說并非沒有依據(jù):四分之三的研究論文使用的是 PyTorch。甚至在那些一開始使用 TensorFlow 的研究人員中 —— 記住,在深度學(xué)習(xí)方面它出現(xiàn)的更早 —— 大多數(shù)人現(xiàn)在也已經(jīng)轉(zhuǎn)向使用 PyTorch 了。
這種令人驚訝的趨勢會持續(xù)下去,盡管谷歌在 AI 研究中有著舉足輕重的地位,并且一直主要使用 TensorFlow。
更順理成章的是,研究影響教學(xué),決定著學(xué)生將會學(xué)到什么。一個使用 PyTorch 發(fā)表了大部分論文的教授將更傾向于在講座中使用它。他們不僅可以更輕松地講授和回答有關(guān) PyTorch 的問題,也可能對 PyTorch 的成功抱有更強烈的信念。
因此,大學(xué)生對 PyTorch 的了解可能比 TensorFlow 多得多。而且,考慮到今天的大學(xué)生就是明天的打工人,那么這一趨勢的走向就可想而知……
PyTorch 的生態(tài)系統(tǒng)發(fā)展得更快
到頭來,只有當(dāng)參與到生態(tài)系統(tǒng)中時,軟件框架才重要。PyTorch 和 TensorFlow 都有相當(dāng)發(fā)達的生態(tài)系統(tǒng),包括除了 HuggingFace 之外的訓(xùn)練模型的存儲庫、數(shù)據(jù)管理系統(tǒng)、故障預(yù)防機制等等。
值得一提的是,到目前為止,TensorFlow 的生態(tài)系統(tǒng)仍然比 PyTorch 稍微發(fā)達一點。但請記住,PyTorch 是后來才出現(xiàn)的,并且僅僅在過去幾年中就有了相當(dāng)多的用戶增長量。因此,PyTorch 的生態(tài)系統(tǒng)可能會未來的某一天超過 TensorFlow。
TensorFlow 的基礎(chǔ)設(shè)施部署更好
盡管 TensorFlow 代碼編寫起來很麻煩,但一旦編寫完成,它的部署要比 PyTorch 容易得多。TensorFlow services 和 TensorFlow Lite 等工具部署到云、服務(wù)器、移動和物聯(lián)網(wǎng)設(shè)備的過程頃刻間能完成。
另一方面,在部署發(fā)布工具方面,PyTorch 一直是出了名的慢。話雖如此,它最近一直在加速縮小與 TensorFlow 的差距。
目前還很難預(yù)測,但 PyTorch 很有可能在未來幾年趕上甚至超過 TensorFlow 的基礎(chǔ)設(shè)施部署。
TensorFlow 代碼可能還會存在一段時間,因為在部署后切換框架的成本很高。然而,可想而知,新的深度學(xué)習(xí)應(yīng)用程序?qū)⒃絹碓蕉嗟厥褂?PyTorch 進行編寫和部署。
TensorFlow 并不全是 Python
TensorFlow 并沒有銷聲匿跡。只是不像以前那么炙手可熱了。
核心原因在于,許多使用 Python 進行機器學(xué)習(xí)的人正在轉(zhuǎn)向 PyTorch。
需要注意的是,Python 并不是機器學(xué)習(xí)的唯一語言。它是機器學(xué)習(xí)的代表性編程語言,這也是 TensorFlow 開發(fā)人員將支持集中在 Python 上的唯一原因。
現(xiàn)在,TensorFlow 也可以與 JavaScript、Java 和 C++ 一起使用。社區(qū)也開始開發(fā)支持其他語言,如 Julia、Rust、Scala 和 Haskell 等。
另一方面,PyTorch 極度以 Python 為中心 —— 這就是為什么它給人的感覺如此 Python 化。即使它有一個 C++ API,但它對其他語言的支持程度還不及 TensorFlow 的一半。
可以想象,PyTorch 將在 Python 中取代 TensorFlow。另一方面,TensorFlow 憑借其卓越的生態(tài)系統(tǒng)、部署功能以及對其他語言的支持,仍將是深度學(xué)習(xí)領(lǐng)域的一員大將。
對 Python 的喜愛程度決定了下一個項目是選擇 TensorFlow 還是 PyTorch。
原文鏈接:https://thenextweb.com/news/why-tensorflow-for-python-is-dying-a-slow-death