0
雷鋒網(wǎng) AI 科技評(píng)論按:對(duì)于機(jī)器學(xué)習(xí)科研工作者和工業(yè)界從業(yè)人員來(lái)說(shuō),熟練掌握一種機(jī)器學(xué)習(xí)框架是必備技能之一。隨著深度學(xué)習(xí)技術(shù)發(fā)展的突飛猛進(jìn),機(jī)器學(xué)習(xí)框架市場(chǎng)也漸漸度過(guò)了初期野蠻生長(zhǎng)的階段。大浪淘沙,目前仍然活躍的機(jī)器學(xué)習(xí)框架主要是 PyTorch 和 TensorFlow。本文從學(xué)術(shù)界和工業(yè)界兩個(gè)方面深度盤(pán)點(diǎn)了 2019 年機(jī)器學(xué)習(xí)框架的發(fā)展趨勢(shì)。
自 2012 年深度學(xué)習(xí)再度成為萬(wàn)眾矚目的技術(shù)以來(lái),各種機(jī)器學(xué)習(xí)框架爭(zhēng)相成為研究人員和從業(yè)者的新寵,可謂「你方唱罷我登場(chǎng)」。從早期在學(xué)術(shù)界廣為使用的 Caffe 和 Theano,到業(yè)界推崇的 PyTorch 和 TensorFlow,各種各樣可供選擇的學(xué)習(xí)框架使得人們很難確定「誰(shuí)才是真正最主流的框架」。
如果你僅僅通過(guò)瀏覽 Reddit 來(lái)做出判斷,你可能會(huì)認(rèn)為每個(gè)人都在轉(zhuǎn)而使用 PyTorch;而如果你根據(jù) Francois Chollet 推特中的內(nèi)容做出判斷,你會(huì)發(fā)現(xiàn) TensorFlow 或 Keras 可能是主流的框架,而 PyTorch 的勢(shì)頭正在衰減。
回顧 2019 年,機(jī)器學(xué)習(xí)框架之爭(zhēng)中還剩下兩個(gè)競(jìng)爭(zhēng)者:PyTorch 和 TensorFlow。我的分析表明,研究人員正在放棄 TensorFlow 并紛紛轉(zhuǎn)向使用 PyTorch。然而與此同時(shí),在工業(yè)界,TensorFlow 目前則是首選的平臺(tái),但這種情況可能不會(huì)持續(xù)太久。
讓我們用數(shù)據(jù)說(shuō)話!下圖顯示了在近些年的研究頂會(huì)中,僅僅使用了 PyTorch 框架進(jìn)行研究的論文數(shù)和使用了 TensorFlow 或 PyTorch 的論文總數(shù)的比例。如圖所示,每條曲線(代表不同的會(huì)議)都向上傾斜(意味著 PyTorch 的占比越來(lái)越高),而且在 2019 年的每個(gè)主要的會(huì)議中,大多數(shù)的論文都采用 PyTorch 實(shí)現(xiàn)。
會(huì)議的圖例
數(shù)據(jù)收集過(guò)程的細(xì)節(jié)
這些圖表的交互式版本鏈接如下:https://chillee.github.io/pytorch-vs-tensorflow/
如果你需要更多的證據(jù)來(lái)說(shuō)明 PyTorch 在研究社區(qū)中獲得關(guān)注的速度有多快,請(qǐng)看下面關(guān)于 PyTorch 和 TensorFlow 使用情況的原始統(tǒng)計(jì)圖。
在 2018 年,PyTorch 在深度學(xué)習(xí)框架中的占比還很小。而現(xiàn)在,PyTorch 已成占據(jù)壓倒性比重的多數(shù)。據(jù)統(tǒng)計(jì),69% 的 CVPR 論文、75% 以上的 NAACL 和 ACL 論文,以及 50% 以上的 ICLR 和 ICML 論文都選擇使用 PyTorch。PyTorch 在視覺(jué)和語(yǔ)言類(lèi)的會(huì)議上(分別以 2:1 和 3:1 的比例超過(guò)了 TensorFlow)被使用的頻繁度最為明顯,而且 PyTorch 在 ICLR 和 ICML 等通用機(jī)器學(xué)習(xí)會(huì)議上也比 TensorFlow 更受歡迎。
雖然有些人認(rèn)為 PyTorch 仍然是一個(gè)處于萌芽期的框架,試圖在 Tensorflow 主導(dǎo)的世界中開(kāi)辟出一片市場(chǎng),但真實(shí)的數(shù)據(jù)卻說(shuō)明事實(shí)并非如此。除了在 ICML 上,其它學(xué)術(shù)會(huì)議中使用 TensorFlow 的論文的增長(zhǎng)率甚至還趕不上整體論文數(shù)量的增長(zhǎng)率。在 NAACL、ICLR 和 ACL 上,今年使用 TensorFlow 的論文數(shù)量實(shí)際上比去年還少。
需要擔(dān)心未來(lái)發(fā)展的并不是 Pytorch,而是 TensorFlow。
1、為什么研究人員青睞 PyTorch?
簡(jiǎn)潔性。PyTorch 與 numpy 很相似,具有很強(qiáng)的 python 風(fēng)格,并且很容易與 Python 生態(tài)系統(tǒng)中的其它組件實(shí)現(xiàn)集成。例如,你可以簡(jiǎn)單地在 PyTorch 模型中的任何地方添加「PDB」斷點(diǎn),然后就可以進(jìn)行調(diào)試。在 TensorFlow 框架中,想要進(jìn)行程序調(diào)試就需要一個(gè)運(yùn)行中的會(huì)話,這使得調(diào)試難以進(jìn)行。
易用的應(yīng)用程序接口(API)。相較于 TensorFlow 的 API,大多數(shù)研究人員更喜歡 PyTorch 提供的 API。這在一定程度上是由于 PyTorch 的設(shè)計(jì)更好,另一方面是因?yàn)?TensorFlow 需要多次切換 API(例如,「layers」->「slim」->「estimators」->「tf.keras」)從而限制了自己的易用性。
卓越的性能。盡管 PyTorch 的動(dòng)態(tài)圖留給我們優(yōu)化的機(jī)會(huì)很少,但是已經(jīng)有很多有趣的報(bào)道說(shuō)明 PyTorch 的運(yùn)行速度和 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)。目前尚不清楚這種說(shuō)法是否屬實(shí),但至少,TensorFlow 在這個(gè)方面并沒(méi)有獲得絕對(duì)的優(yōu)勢(shì)。
2、TensorFlow 在研究領(lǐng)域的前景如何?
即使 TensorFlow 在功能方面與 PyTorch 的水平差不多,但是 PyTorch 已經(jīng)擁有了研究社區(qū)中的大多數(shù)用戶。這意味著我們更容易找到 PyTorch 版本的算法實(shí)現(xiàn),而作者也會(huì)更有動(dòng)力發(fā)布 PyTorch版本的代碼(這樣人們就會(huì)使用它),而你的合作者們很可能也更喜歡 PyTorch。因此,如果將代碼移植回 TensorFlow 2.0 平臺(tái),這將會(huì)是一個(gè)很漫長(zhǎng)的過(guò)程(如果真的這么做了)。
TensorFlow 在 Google/DeepMind 內(nèi)部總會(huì)有一批固定的用戶,但我不知道 Google 最終是否會(huì)放開(kāi)這一點(diǎn)。即使是現(xiàn)在,很多 Google 想要招募的研究人員已經(jīng)在不同程度上更加青睞 PyTorch 了。我也聽(tīng)到了一些抱怨,很多 Google 內(nèi)部的研究人員希望使用 TensorFlow 以外的框架。
此外,PyTorch 的統(tǒng)治地位可能會(huì)開(kāi)始切斷 Google 研究人員與其它研究社區(qū)之間的聯(lián)系。不僅 Google的研究人員將更加難以在他人研究的基礎(chǔ)上構(gòu)建自己的工作,而且外部的研究人員也不太可能基于 Google 發(fā)布的代碼開(kāi)展工作。
TensorFlow 2.0 是否能夠?yàn)?TensorFlow 挽回一部分研究人員用戶還有待觀察。盡管它的動(dòng)態(tài)圖模式(TensorFlow 2.0 的動(dòng)態(tài)圖模式)一定很吸引人,但是 Keras 的 API 就并非如此了。
雖然 PyTorch 現(xiàn)在在研究領(lǐng)域占據(jù)主導(dǎo)地位,但是我們快速分析一下工業(yè)界的情況就會(huì)發(fā)現(xiàn),在工業(yè)界 TensorFlow 仍然是主流的框架。例如,2018 年到 2019 年的數(shù)據(jù)(參考鏈接:https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a)顯示,在公開(kāi)招聘網(wǎng)站上,涉及 TensorFlow 的新招聘信息有 1541 個(gè),而涉及 PyTorch 的新招聘信息則是 1437 個(gè);知名科技媒體「Medium」上有 3230 篇關(guān)于 TensorFlow 的新文章,而關(guān)于 PyTorch 的新文章只有 1200 篇;在 GitHub 上,用 TensorFlow 編寫(xiě)的項(xiàng)目獲得了 13,700 顆星,而用 PyTorch 編寫(xiě)的項(xiàng)目只獲得了 7,200 顆星。
那么,既然 PyTorch 在研究人員中是如此受歡迎,為什么它在工業(yè)界還沒(méi)有取得同樣的成功呢?第一個(gè)顯而易見(jiàn)的答案就是:慣性。TensorFlow 比 PyTorch 早誕生數(shù)年,而且工業(yè)界采用新技術(shù)的速度比研究人員要慢一些。另一個(gè)原因是:TensorFlow 比 PyTorch 更適用于生產(chǎn)環(huán)境。但這意味著什么呢?
要想回答這個(gè)問(wèn)題,我們需要知道研究人員和工業(yè)界的需求有何不同。
研究人員關(guān)心的是他們?cè)谘芯恐械乃俣扔卸嗫?,這通常是在相對(duì)較小的數(shù)據(jù)集(可以在一臺(tái)機(jī)器上運(yùn)行的數(shù)據(jù)集)上、使用少于 8 個(gè) GPU 進(jìn)行的。最大的限制因素往往不是出于性能的考慮,而是他們快速實(shí)現(xiàn)新思路的能力。相反,工業(yè)界認(rèn)為性能是需要最優(yōu)先考慮的。雖然運(yùn)行時(shí)的速度提升 10% 對(duì)于研究人員來(lái)說(shuō)基本沒(méi)有意義,但這可以直接為公司節(jié)約數(shù)百萬(wàn)美元的成本。
另一個(gè)區(qū)別是部署。研究人員將在他們自己的機(jī)器或某個(gè)專(zhuān)門(mén)用于運(yùn)行研究工作的服務(wù)器集群上進(jìn)行實(shí)驗(yàn)。另一方面,工業(yè)界在部署方面則有一連串的限制/要求:
不能使用 Python。對(duì)于一些公司運(yùn)行的服務(wù)器來(lái)說(shuō),Python 運(yùn)行時(shí)的計(jì)算開(kāi)銷(xiāo)太大了。
移動(dòng)性。你不能在移動(dòng)端的二進(jìn)制文件中嵌入 Python 解釋器。
服務(wù)性。需要滿足各種需求,例如在不停機(jī)的狀態(tài)下更新模型、在模型之間無(wú)縫切換、在推理時(shí)進(jìn)行批處理,等等。
TensorFlow 是專(zhuān)門(mén)圍繞這些需求構(gòu)建的,并為所有這些問(wèn)題提供了解決方案:計(jì)算圖的版式和執(zhí)行引擎本身并不需要 Python,并且通過(guò) TensorFlow Lite 和 TensorFlow Serving 分別處理移動(dòng)端和服務(wù)器端的問(wèn)題。
在此前,Pytorch 還不能夠很好地滿足上述需求,因此大多數(shù)公司目前在生產(chǎn)環(huán)境下都選擇使用 TensorFlow。
在臨近 2018 年末的時(shí)候,業(yè)內(nèi)發(fā)生的兩件「爆炸性」事件打破了這種局面:
1. PyTorch 引入了即時(shí)(JIT,Just In Time)編譯器和「TorchScript」,從而引入了基于圖的特性。
2. TensorFlow 宣布它們將在 TensorFlow 2.0 版本中默認(rèn)轉(zhuǎn)而采用動(dòng)態(tài)圖模式。
顯然,這些舉措都旨在解決它們各自的弱點(diǎn)。那么,這些特性到底代表什么?它們能夠?yàn)榭蚣軒?lái)什么呢?
1、PyTorch TorchScript
PyTorch JIT可以將 PyTorch程序轉(zhuǎn)換為一種名為「TorchScript」的中間表征(IR)。Torchscript 是PyTorch的「圖」表征。你可以通過(guò)使用跟蹤或腳模式將常規(guī) PyTorch 模型轉(zhuǎn)換為 TorchScript。跟蹤接受一個(gè)函數(shù)和一個(gè)輸入,記錄用該輸入執(zhí)行的操作,并構(gòu)造中間表征。雖然跟蹤操作很直接,但是它也存在一些缺點(diǎn)。例如,它不能捕獲未執(zhí)行的控制流(例如,如果它執(zhí)行了true情況下的程序塊,它就不能捕獲false 情況下的程序塊。
Script模式接受一個(gè)函數(shù)/類(lèi)作為輸入,重新解釋 Python 代碼并直接輸出 TorchScript 中間表征。這使得它能夠支持任意代碼,但它實(shí)際上需要重新解釋 Python。
一旦你的 PyTorch 模型處于其中間表征狀態(tài),我們就獲得了圖模式的所有好處。我們可以在不依賴 Python 的情況下,在 C++ 環(huán)境中部署 PyTorch 模型,或者對(duì)其進(jìn)行優(yōu)化。
2、Tensorflow 動(dòng)態(tài)圖
在 API 的層次上,TensorFlow 的動(dòng)態(tài)圖模式基本上與最初由 Chainer 推崇的 PyTorch 的動(dòng)態(tài)圖模式相同。這為 TensorFlow 帶來(lái)了PyTorch 動(dòng)態(tài)圖模式的大部分優(yōu)勢(shì)(易用性、可調(diào)試性,等等)。
然而,這也給 TensorFlow 帶來(lái)了相同的缺點(diǎn):TensorFlow 動(dòng)態(tài)圖模型不能被導(dǎo)出到非 python 環(huán)境中,也不能進(jìn)行優(yōu)化,不能在移動(dòng)設(shè)備上運(yùn)行,等等。
這使得 TensorFlow與 PyTorch 旗鼓相當(dāng),它們的解決方式本質(zhì)上是相同的——你可以跟蹤代碼(tf.function)或重新解釋 Python 代碼(Autograph,將 print()函數(shù)和其它 Python 代碼轉(zhuǎn)化為純 TensorFlow計(jì)算圖代碼)。
圖注:TensorFlow 通過(guò) autograph 和追蹤(tracing)生成計(jì)算圖
因此,TensorFlow 的動(dòng)態(tài)圖模式并不能真正做到「兩全其美」。盡管你可以用「tf.function」注釋將動(dòng)態(tài)圖代碼轉(zhuǎn)換為靜態(tài)圖,但這永遠(yuǎn)不會(huì)是一個(gè)無(wú)縫轉(zhuǎn)換的過(guò)程(PyTorch 的 TorchScript 也有類(lèi)似問(wèn)題)。跟蹤根本上是有限的,而重新解釋 Python 代碼實(shí)際上需要重寫(xiě)大量的 Python 編譯器。當(dāng)然,通過(guò)限制深度學(xué)習(xí)中用到的 Python 子集可以極大地簡(jiǎn)化這一范圍。
在默認(rèn)情況下啟用動(dòng)態(tài)圖模式時(shí),TensorFlow 使用戶不得不做出選擇:
(1)為了易用性使用動(dòng)態(tài)圖執(zhí)行,而為了進(jìn)行部署需要重寫(xiě)函數(shù);
(2)完全不使用動(dòng)態(tài)圖執(zhí)行。
盡管 PyTorch 也面臨相同的問(wèn)題,但相較于 TensorFlow 的「默認(rèn)采用動(dòng)態(tài)圖」的做法, PyTorch 的 TorchScript 所具備的「選擇性加入」的特性似乎讓用戶更愿意接受。
以上原因造就了機(jī)器學(xué)習(xí)框架領(lǐng)域當(dāng)今的局面。PyTorch 擁有研究人員的市場(chǎng),并試圖將這種成功延伸至工業(yè)界。而 TensorFlow 則試圖在不犧牲過(guò)多的生產(chǎn)能力的情況下,阻止其在研究社區(qū)中所占市場(chǎng)份額的流失。PyTorch 想要在工業(yè)界產(chǎn)生巨大的影響肯定還有很長(zhǎng)的路要走,畢竟 TensorFlow 在工業(yè)界已經(jīng)根深蒂固,而且工業(yè)界革新的速度也相對(duì)較慢。然而,從 TensorFlow 1.0 過(guò)渡到 2.0 將是一個(gè)艱難的過(guò)程,這也讓公司自然而然地會(huì)評(píng)估是否采用 PyTorch。
在未來(lái),哪種框架能夠「笑到最后」取決于以下問(wèn)題:
研究人員的傾向會(huì)對(duì)工業(yè)界產(chǎn)生多大的影響?隨著當(dāng)下的博士生紛紛畢業(yè),他們將會(huì)把使用 PyTorch 的習(xí)慣延續(xù)新的崗位上去。這種傾向是否足夠令公司選擇招聘使用 PyTorch 的雇員呢?畢業(yè)生們會(huì)基于 Pytorch 技術(shù)創(chuàng)業(yè)嗎?
TensorFlow 的動(dòng)態(tài)圖模式能否在易用性方面追趕上 PyTorch?我從對(duì)該問(wèn)題緊密追蹤的人以及在線社區(qū)哪里感受到的情況是,TensorFlow 的動(dòng)態(tài)圖嚴(yán)重受到「性能/內(nèi)存」問(wèn)題的困擾,而且「Autograph」自身也存在許多問(wèn)題。Google 將為此付出大量的工程努力,但是 TensorFlow 還是會(huì)受到許多「歷史遺留問(wèn)題」的困擾。
PyTorch 能多快在生產(chǎn)環(huán)境中被大規(guī)模采用?PyTorch 還有許多基本問(wèn)題有待解決,比如沒(méi)有好的量化方式、不能滿足移動(dòng)性和服務(wù)性需求。對(duì)于大多數(shù)公司來(lái)說(shuō),在這些問(wèn)題被妥善解決之前,它們甚至都不會(huì)考慮使用 PyTorch。PyTorch 是否能足夠令公司信服,改變使用的機(jī)器學(xué)習(xí)框架呢?(注:近日,PyTorch 宣布了支持量化和移動(dòng)性功能,這兩種功能尚處于試驗(yàn)階段,但代表了 PyTorch 在這方面取得了重大進(jìn)展。)
Google 在業(yè)內(nèi)被孤立會(huì)讓 TensorFlow 受挫嗎?Google 推動(dòng) TensorFlow 的主要原因之一是幫助其迅速發(fā)展的云服務(wù)。由于 Google 正在試圖占領(lǐng)整個(gè)機(jī)器學(xué)習(xí)垂直市場(chǎng),這刺激其它競(jìng)爭(zhēng)公司(微軟、亞馬遜、英偉達(dá))紛紛轉(zhuǎn)向唯一的機(jī)器學(xué)習(xí)框架備選方案——PyTorch。
我們還沒(méi)有充分認(rèn)識(shí)到機(jī)器學(xué)習(xí)框架對(duì)機(jī)器學(xué)習(xí)的研究產(chǎn)生了多大的影響。它們不僅使機(jī)器學(xué)習(xí)研究可以進(jìn)行下去,還將一些研究的思路進(jìn)行了限制,使這些思路切實(shí)可行,讓研究人員能夠很容易地對(duì)這些思路進(jìn)行探索。事實(shí)上,有多少新奇的想法僅僅因?yàn)椴荒茉谀撤N框架中用一種簡(jiǎn)單的方式表達(dá)出來(lái)而破滅?目前看來(lái),PyTorch 可能已經(jīng)能夠達(dá)到研究的「局部最小值」,但是我們?nèi)匀恍枰纯雌渌目蚣芴峁┝四男┨匦裕€存在哪些研究的機(jī)會(huì)。
1、高階微分
PyTorch 和 Tensorflow 的核心是自動(dòng)微分框架。也就是說(shuō),這些框架使我們可以對(duì)某些函數(shù)進(jìn)行求導(dǎo)。然而,盡管有許多方法可以實(shí)現(xiàn)自動(dòng)微分,但大多數(shù)現(xiàn)代機(jī)器學(xué)習(xí)框架采用的都是「逆向模式自動(dòng)微分」(通常又被稱為「反向傳播」)算法。事實(shí)證明,這種方法對(duì)于對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行求導(dǎo)是極為高效的。
然而,在計(jì)算高階導(dǎo)數(shù)(Hessian/Hessian 向量積)時(shí),情況就不一樣了。想要高效地計(jì)算這些值需要用到「前向模式自動(dòng)微分」。不使用這個(gè)功能的話,對(duì) Hessian 向量積的計(jì)算速度會(huì)慢幾個(gè)量級(jí)。
接下來(lái)我們將介紹「Jax」。Jax 是由開(kāi)發(fā)原始「Autograd」的人員開(kāi)發(fā)的,它同時(shí)具備「前向傳播」和「逆向傳播」自動(dòng)微分。這使得我們對(duì)于高階導(dǎo)數(shù)的計(jì)算相較于 PyTorch/TensorFlow 可以提供的方法快了幾個(gè)數(shù)量級(jí)。
然而,Jax 并不僅僅只提供了計(jì)算高階導(dǎo)數(shù)的方法。Jax 的開(kāi)發(fā)者將其視為一種組成任意函數(shù)變換的框架,包括「vmap」(針對(duì)自動(dòng)化批處理)或「pmap」(針對(duì)自動(dòng)化并行計(jì)算)。
原始的 Autograd 擁有其忠實(shí)的擁躉(盡管沒(méi)有 GPU 的支持,仍然有 11 篇 ICML 上發(fā)表的論文采用了它),Jax 可能很快就會(huì)擁有一個(gè)類(lèi)似的忠實(shí)用戶社區(qū),使用它來(lái)求解任何類(lèi)型的 n 階導(dǎo)數(shù)。
2、代碼生成
當(dāng)你運(yùn)行一個(gè) PyTorch/TensorFlow 模型時(shí),大部分工作實(shí)際上并不是在框架本身中完成的,而是由第三方內(nèi)核完成的。這些內(nèi)核通常由硬件供應(yīng)商提供,由高級(jí)框架可以利用的算子庫(kù)組成,例如,MKLDNN(用于 CPU)或 cuDNN(用于英偉達(dá) GPU)。高級(jí)框架將計(jì)算圖分解成塊,它可以調(diào)用上面提到的計(jì)算庫(kù)。構(gòu)建這些庫(kù)需要數(shù)千個(gè)人時(shí)的工作量,并針對(duì)架構(gòu)和應(yīng)用程序進(jìn)行了優(yōu)化以獲得最佳性能。
然而,最近研究人員對(duì)于「非標(biāo)準(zhǔn)硬件」、「稀疏/量子化張量」和「新運(yùn)算符」的關(guān)注暴露了依賴這些運(yùn)算符庫(kù)的一個(gè)缺陷:它們并不靈活。
如果你想在研究中使用像膠囊網(wǎng)絡(luò)這樣的新算子,你該怎么做?如果你想在機(jī)器學(xué)習(xí)框架目前還不支持的新型硬件加速器上運(yùn)行你的模型,你又該怎么做?現(xiàn)有的解決方案往往還不夠完善。正如論文「Machine Learning Systems are Stuck in a Rut」(論文地址:https://dl.acm.org/citation.cfm?id=3321441)所提到的,現(xiàn)有的膠囊網(wǎng)絡(luò)在 GPU 上的實(shí)現(xiàn)比最優(yōu)的實(shí)現(xiàn)慢了兩個(gè)數(shù)量級(jí)。
每種新的硬件架構(gòu)、張量或算子的類(lèi)別,都大大提高了該問(wèn)題的難度。目前已經(jīng)有許多處理工具(如 Halide、TVM、PlaidML、TensorComprehensions、XLA、Taco 等)可以處理各種問(wèn)題,但是真正正確的處理方法還有待探索。
如果不能進(jìn)一步解決這個(gè)問(wèn)題,我們就會(huì)有一定風(fēng)險(xiǎn)將我們的機(jī)器學(xué)習(xí)研究與我們擁有的研究工具「過(guò)度擬合」。
這對(duì)于 TensorFlow 和 PyTorch 的未來(lái)而言是激動(dòng)人心的時(shí)刻:它們的設(shè)計(jì)逐漸趨同,它們都不太可能憑借其設(shè)計(jì)獲得決定性的勝利。與此同時(shí),這兩種機(jī)器學(xué)習(xí)框架都有其各自主導(dǎo)的領(lǐng)域——PyTorch 在學(xué)術(shù)界占據(jù)主導(dǎo),而 TensorFlow 在工業(yè)界則更受歡迎。
就我個(gè)人而言,在 PyTorch 和 TensorFlow 之間,我認(rèn)為 PyTorch 更有勝算。機(jī)器學(xué)習(xí)仍然是一個(gè)由研究驅(qū)動(dòng)的領(lǐng)域。工業(yè)界不能忽視科學(xué)研究的成果,只要 PyTorch 在研究領(lǐng)域占據(jù)主導(dǎo)地位,就會(huì)迫使公司轉(zhuǎn)而使用 PyTorch.
然而,不僅機(jī)器學(xué)習(xí)框架迭代得非??欤瑱C(jī)器學(xué)習(xí)研究本身也處于一場(chǎng)巨大的變革之中。發(fā)生變化的不僅僅是機(jī)器學(xué)習(xí)框架,5 年后使用的模型、硬件、范式與我們現(xiàn)在使用的可能有非常大的區(qū)別。也許,隨著另一種計(jì)算模型占據(jù)主導(dǎo)地位,PyTorch 與 TensorFlow 之間的機(jī)器學(xué)習(xí)框架之爭(zhēng)也將煙消云散。
置身于這些錯(cuò)綜復(fù)雜的利益沖突、以及投入在機(jī)器學(xué)習(xí)領(lǐng)域的大量資金中,退一步,也許海闊天空。大多數(shù)從事機(jī)器學(xué)習(xí)軟件的工作不是為了賺錢(qián),也不是為了協(xié)助公司的戰(zhàn)略計(jì)劃,而是想要推進(jìn)機(jī)器學(xué)習(xí)的研究,關(guān)心人工智能民主化,也或許他們只是想創(chuàng)造一些很酷的東西。我們大多數(shù)人并不是為了賺錢(qián)或協(xié)助我們企業(yè)的戰(zhàn)略而從事機(jī)器學(xué)習(xí)軟件事業(yè),我們從是機(jī)器學(xué)習(xí)工作的原因只是因?yàn)椤覀冴P(guān)心機(jī)器學(xué)習(xí)研究的發(fā)展,使人工智能走進(jìn)千家萬(wàn)戶,或者僅僅只是因?yàn)槲覀兿騽?chuàng)造一些很酷的東西。無(wú)論你更喜歡 TensorFlow 還是 PyTorch,我們都懷著一個(gè)共同的目的:盡力做出做棒的機(jī)器學(xué)習(xí)軟件!
雷鋒網(wǎng) AI 科技評(píng)論編譯。雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。