PyTorch橫掃頂會,TensorFlow退守業(yè)界:機(jī)器學(xué)習(xí)框架一年變天
TensorFlow 2.0正式發(fā)布沒幾天,PyTorch 1.3今天也上線了。
一個瘋狂強(qiáng)調(diào)“易用性”,一個整出了移動端部署。老將和新秀都卯足了勁。
畢竟,機(jī)器學(xué)習(xí)框架的世界,局勢變化過于迅猛,稍不注意就會被搶了地盤。
一年前,TensorFlow還是各大頂會論文選擇的主流框架,如今頂會幾乎成了PyTorch的天下。
CVPR 2019,只提到PyTorch的論文有280篇,只提到TensorFlow的論文有125篇,但這還不是懸殊最大的一場會議。
有網(wǎng)友 (@programmerChilli) 說,雖然知道大批研究者逃離TF擁抱PT:
但我絕對想不到漲幅能到這種地步。
那么,PyTorch的優(yōu)勢到底在哪里?
PyTorch一路凱歌,對TensorFlow經(jīng)營多年的格局又有怎樣的沖擊。
這一次,一位來自康奈爾大學(xué)的少年Horace He,用一份詳盡的調(diào)查報告,對現(xiàn)狀進(jìn)行了總結(jié),也為潛在入門者提供了方向:
PyTorch制霸學(xué)界
報告開頭就提到:目前的大背景是,大量研究人員從TensorFlow轉(zhuǎn)投PyTorch。
但大家未必知道,這勢頭來得多猛烈。來看2018年與2019年的各大頂會對比吧:
△ 被擋住的ICML是32.5%
表格列出了CVPR、NAACL、ACL、ICLR、ICML這五大頂會上,僅提到PyTorch/僅提到TensorFlow的論文數(shù)量。
2018年,PyTorch五項數(shù)據(jù)全部低于TensorFlow。
2019年,PyTorch五個數(shù)字全部超越TensorFlow。
PyTorch每項數(shù)據(jù)的增幅,都在192%到450%之間,漲勢十分兇猛。
其中,以自然語言處理(NLP) 的頂會NAACL (450%) 和ACL (290%) 最為顯著;在視覺頂會CVPR上也有大幅增長 (240%) 。
相比之下,TensorFlow有三項數(shù)據(jù)下滑。其中NAACL數(shù)據(jù)下降幅度達(dá)到了38.2%,而這里正是PyTorch飛躍式增長的地方。
此消彼長,PyTorch只用了一年,便把弱勢變成了壓倒性優(yōu)勢:
280:125 (CVPR) ,兩倍有余。
66:21 (ACL) ,三倍有余。
103:33 (NAACL) ,三倍有余。
在語言和視覺頂會上,PyTorch的主導(dǎo)地位最明顯。這跟上文提到的漲幅是吻合的。
如果還有人把PyTorch當(dāng)做一個新秀,試圖在TensorFlow主導(dǎo)的世界里,劃出一片自己的地盤,那么數(shù)據(jù)告訴他們,已經(jīng)不是這樣了。
雖然,看上去TensorFlow還有兩項數(shù)據(jù)在增長,但其實只有ICML的漲幅 (32.5%) ,還跟得上會議總錄取論文數(shù)的增長。
也就是說,在另外四場會議上,TensorFlow已經(jīng)開始衰退了。
為何研究人員愛PyTorch?
一是簡單。它和NumPy比較像,風(fēng)格很Python,能輕易和Python生態(tài)集成起來。
比如,你只要把一個pdb斷點扔進(jìn)PyTorch模型里,它直接就能用了。
相比之下,在TensorFlow模型里面debug的話,便會復(fù)雜得多了。
二是API好。比起TensorFlow的API,大多數(shù)研究人員更偏愛PyTorch的API。PyTorch設(shè)計得更科學(xué);而TensorFlow要在各種API之間切換,令人操作不便:
‘layers’ -> ‘slim’ -> ‘estimators’ -> ‘tf.keras’
三是性能。雖然PyTorch的動態(tài)圖 (Dynamic Graphs) 提供的優(yōu)化空間比較小,但許多用戶都反饋說PyTorch的速度不亞于TensorFlow,甚至比對方還快。
雖然,沒有嚴(yán)格測試數(shù)據(jù)表明到底誰更快,但至少TensorFlow并沒有明顯的優(yōu)勢。
這樣,再加上前兩點,足夠讓許多研究人員擁抱PyTorch了。
TensorFlow在研究領(lǐng)域會怎樣?
就算今后TensorFlow變得像PyTorch一樣友好,PyTorch的地盤也已經(jīng)很大了。
這就是說,PyTorch的代碼實現(xiàn)更容易找到,人們也更有動力發(fā)表PyTorch的代碼給大家用,跟別人合作的話隊友也可能會傾向PyTorch。
所以,遷回TensorFlow 2.0這件事,大概率不會進(jìn)展很快。
當(dāng)然,谷歌和DeepMind內(nèi)部研究還是會用TensorFlow。他們的研究成果,大概也給了一部分研究人員,繼續(xù)用TensorFlow的信心。
不過Horace He聽說,谷歌內(nèi)部也有許多研究人員,渴望逃離TensorFlow了。
另一方面,PyTorch主導(dǎo)地位越來越強(qiáng),谷歌研究人員可能和整個社區(qū)之間產(chǎn)生隔閡:他們很難在外部研究的基礎(chǔ)上搭建自己的應(yīng)用,外面的研究人員也很難借鑒谷歌的代碼。
最后,TensorFlow 2.0能不能挽回一些研究人員,還需要時間來觀察。Eager Execution一定是個吸引人的點,而Keras API就不一定了。
TensorFlow守住工業(yè)界
雖然在各個開發(fā)者社區(qū),“PyTorch真香”論聲勢浩大,現(xiàn)在又在頂會數(shù)據(jù)上實力壓倒TensorFlow,但其實,在工業(yè)界,TensorFlow仍具優(yōu)勢。

比如,根據(jù)Medium博主Jeff Hale的統(tǒng)計結(jié)果,2019年,TensorFlow在線上招聘啟事中擁有1541個新增職位,而PyTorch有1437個。
從arXiv的論文數(shù)量來看,TensorFlow也仍然占據(jù)首位,只是領(lǐng)先優(yōu)勢在縮小。

一方面,TensorFlow的誕生早于PyTorch,工業(yè)界對新鮮事物的追逐,不像學(xué)術(shù)界那樣熱切,使用TensorFlow已成行業(yè)慣性。
并且,許多企業(yè)的代碼都是基于TensorFlow搭建的,想要遷移到PyTorch上,并非易事。
另一方面,相比于PyTorch,TensorFlow本身就是為工業(yè)界量身打造的。
相比于研究實驗,工業(yè)界會有更多的限制和要求,比如:
· 不用Python。Python在服務(wù)器上運行時開銷太大,有些公司承受不來。
· 可移動性。移動二進(jìn)制文件中沒法嵌入Python解釋器。
· 服務(wù)。無停機(jī)更新,模型間無縫切換,可預(yù)測時間的批處理,等等等等。
TensorFlow在這些方面顯然比PyTorch做得好得多。比如,訓(xùn)練好模型,然后使用TF Lite進(jìn)行部署,是目前最可靠的生產(chǎn)管道之一。
有網(wǎng)友舉了個例子:
TensorFlow能夠?qū)⒛P蛯?dǎo)出到coreml Android模型中,也能很容易地將其轉(zhuǎn)移到GCP(谷歌云端平臺)環(huán)境等任何形式的生產(chǎn)環(huán)境中。

相比之下,PyTorch的部署有些讓人頭禿:模型無法導(dǎo)出到非Python環(huán)境,無法優(yōu)化,無法在移動設(shè)備上運行(隨著PyTorch 1.3的發(fā)布,無法在移動端部署的問題已經(jīng)得到解決)。
況且,TensorFlow還有Keras這個好伙伴呢。
不過,也有網(wǎng)友認(rèn)為,PyTorch在工業(yè)界取得主導(dǎo)地位,只是時間問題。

畢竟在2018年的頂會上,TensorFlow還是主流呢。僅僅一年時間,王座就已易主。
△Medium博主Jeff Hale統(tǒng)計
“融合”趨勢
PyTorch勢頭猛烈,但TensorFlow也沒有坐以待斃。
一個有趣的現(xiàn)象是,現(xiàn)在,這兩個機(jī)器學(xué)習(xí)框架呈現(xiàn)出了“融合”的趨勢。
十一假期,TensorFlow 2.0正式登場,進(jìn)一步整合TensorFlow和Keras,增強(qiáng)易用性,官方表示,這是一個快速、可擴(kuò)展、可投入生產(chǎn)的靈活而強(qiáng)大的平臺。
Keras的作者François Chollet甚至說:“TensorFlow 2.0是一個來自未來的機(jī)器學(xué)習(xí)平臺,它改變了一切。”
在默認(rèn)的eager execution模式下,TensorFlow 2.0能提供PyTorch eager模式下的大部分有點,比如易用性、可調(diào)試性等。
并且,針對TensorFlow的API過于復(fù)雜這個問題,2.0版本也提供了更易用的API。模型的訓(xùn)練和serving都無縫集成在了基礎(chǔ)框架中。
PyTorch這邊,2018年底引入了JIT編譯器和“TorchScript”,增加圖形功能。
就在今天,PyTorch 1.3發(fā)布,新增移動端部署、量化和命名張量等功能。
機(jī)器學(xué)習(xí)框架未來的游戲規(guī)則會如何改變,還真令人期待呢。
FB谷歌雙料實習(xí)生
最后,介紹下這份詳細(xì)報告的作者:

Horace He,來自康奈爾大學(xué),是2016年入學(xué)的本科生。
自從上了大學(xué),他每個暑假都在大廠實習(xí):2017年是Facebook實習(xí)軟件工程師,2018年是谷歌的實習(xí)軟件工程師,2019年在Facebook做PyTorch實習(xí)生。
另外,少年還是VSCodeVim (標(biāo)星6.2k) 的主要貢獻(xiàn)者之一:
那么,TensorFlow和PyTorch,你會pick誰?