誰是深度學習框架一哥?2022年,PyTorch和TensorFlow再爭霸

極市導讀
用PyTorch還是TensorFlow,對于大部分深度學習從業(yè)者來說真是一個頭疼的問題。最近Reddit上有個帖子從三個方面對比了兩個框架,結(jié)果竟然是平手?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

你用PyTorch還是用TensorFlow?
對于不同人群可能有不同的答案,科研人員可能更偏愛PyTorch,因其簡單易用,能夠快速驗證idea來搶占先機發(fā)論文。
雖然TensorFlow的差評如海,甚至有用戶專門注冊一個GitHub賬號開個issue來罵TensorFlow,但TensorFlow在工業(yè)界大哥的地位PyTorch仍然無法撼動。

所以,進入2022年,你決定用PyTorch還是TensorFlow?
曠日持久的甜咸之爭
曠日持久的甜咸之爭
早在2015年11月9日,TensorFlow依據(jù)阿帕奇授權(quán)協(xié)議(Apache 2.0 open source license)就開放了源代碼,其前身是谷歌的神經(jīng)網(wǎng)絡算法庫DistBelief。TensorFlow是一個基于數(shù)據(jù)流編程(dataflow programming)的符號數(shù)學系統(tǒng),被廣泛應用于各類機器學習(machine learning)算法的編程實現(xiàn)。
到了2017年1月,由Facebook人工智能研究院(FAIR,現(xiàn)在是MAIR)基于Torch推出了PyTorch,主要提供兩個高級功能:
具有強大的GPU加速的張量計算(如NumPy)
包含自動求導系統(tǒng)的深度神經(jīng)網(wǎng)絡
最近Reddit上關(guān)于TensorFlow和PyTorch的討論又引起了網(wǎng)友的關(guān)注。

題主表示,兩個框架和他們對應的兩種生態(tài)系統(tǒng)發(fā)展的都是如此迅速,每個陣營都有自己的狂熱支持者,也許是時候分析一下他們到底有什么不同了。
目前來說,PyTorch仍然是「研究型」框架,TensorFlow仍然是「工業(yè)型」框架,他們之間的爭論主要可以歸結(jié)為三個因素:模型可用性、模型部署、軟件生態(tài)。
模型可用性
模型可用性
隨著深度學習領(lǐng)域的逐年擴大,模型也變得越來越大,從頭開始訓練sota模型的成本太高,微調(diào)已經(jīng)成為新主流。所以公開的sota模型采用什么框架對于后續(xù)的社區(qū)生態(tài)來說很重要。
在模型可用性方面,PyTorch 和 TensorFlow 分歧很大,PyTorch 和 TensorFlow 都有自己的官方模型存儲庫,但從業(yè)者可能希望利用多個來源的模型。
目前,PyTorch明顯在研究領(lǐng)域已經(jīng)贏麻了,大部分科研人員都在用,并且大多數(shù)出版論文和開源模型都在使用 PyTorch。
將過去幾年八種頂級研究期刊的數(shù)據(jù)匯總以后可以看到,PyTorch越來越普遍,并且在短短幾年內(nèi),論文中的使用率從大約 7% 增長到近 80%。

雖然2019 年發(fā)布的 TensorFlow 2 中解決了大部分TensorFlow殘存的問題,但 PyTorch 的發(fā)展勢頭足以讓它維持自己在研究領(lǐng)域的地位,至少從社區(qū)的角度來看是這樣。

在Papers with Code網(wǎng)站上的論文中,大部分都使用的是PyTorch框架,并且還在逐漸上升,TensorFlow的市場份額在逐年下降。在過去的三個月里,總共創(chuàng)建了 4,500 個存儲庫中,其中60%使用 PyTorch 實現(xiàn),只有11%使用 TensorFlow。

雖然研究主流是PyTorch,但也有例外,Google、DeepMind顯然都用TensorFlow來進行研究,OpenAI的一些舊的baseline也都是TensorFlow,直到2020年才全換到PyTorch。
模型部署
模型部署
如果不能投入生產(chǎn)使用,那訓練性能再好的模型都毫無意義。
所以,如何更有效率地完成模型部署至關(guān)重要,尤其是隨著微服務業(yè)務模型的日益普及,高效的部署有可能決定以AI為核心競爭力的公司的成敗問題。
TensorFlow 自成立以來一直是面向部署的應用程序的首選框架,TensorFlow Serving和TensorFlow Lite可讓用戶輕松地在云、服務器、移動設(shè)備和 IoT 設(shè)備上進行部署。
各大公司在招聘深度學習工程師時,大部分都要求掌握TensorFlow框架。

從部署的角度來看,PyTorch 過去非常乏善可陳,但近年來它也一直致力于縮小這一差距,例如接連推出的TorchServe和PyTorch Live提供了本地部署工具,但仍然只針對移動端,許多部署工具還處于起步階段。
所以部署便捷性上,TensorFlow完勝。
生態(tài)系統(tǒng)
生態(tài)系統(tǒng)
目前深度學習已不再局限于高度受控環(huán)境中的特定用例,也就是說,AI可能應用在任何環(huán)境,移動端、手機端、網(wǎng)頁端都有可能,因此一個具有更大生態(tài)系統(tǒng)的框架就顯得很重要,它可以促進移動、本地和服務器應用程序的開發(fā)。
此外,專用機器學習硬件,例如 Google 的Edge TPU的出現(xiàn)則意味著從業(yè)者需要使用可以與該硬件很好地集成的框架。

PyTorch和TensorFlow的相關(guān)生態(tài)都做得很好。
PyTorch的Hub除了HuggingFace,還有官方的PyTorch Hub,包括用于音頻、視覺和 NLP 的模型。它還有一些生成模型,包括用于生成名人面孔的高質(zhì)量圖像的GAN。

SpeechBrain是 PyTorch 的官方開源語音工具包,支持 ASR、說話人識別、驗證和分類等。如果您不想構(gòu)建任何模型,而是想要一個具有自動章節(jié)、情感分析、實體檢測等功能的即插即用工具,也是十分方便!
PyTorch Lightning有時被稱為 PyTorch 的 Keras,可以簡化 PyTorch 中模型工程和訓練過程,自 2019 年首次發(fā)布以來,已經(jīng)逐漸成熟。Lightning 以面向?qū)ο蟮姆绞教幚斫_^程,定義了一些可重用和可跨項目使用的共享組件。
還有分布式訓練工具TorchElastic,可管理工作進程并協(xié)調(diào)重啟行為,以便用戶可以在計算節(jié)點集群上訓練模型,這些節(jié)點可以動態(tài)變化而不會影響訓練,還可防止因服務器維護事件或網(wǎng)絡問題等問題而導致的宕機,并且不會因此丟失訓練進度。
TorchX是一個用于快速構(gòu)建和部署機器學習應用程序的 SDK。TorchX 包括 Training Session Manager API,可將分布式 PyTorch 應用程序啟動到受支持的調(diào)度程序上。它負責啟動分布式作業(yè),同時原生支持由 TorchElastic本地管理的作業(yè)。

在TensorFlow陣營,TensorFlow Hub是一個經(jīng)過訓練的機器學習模型庫,可以進行微調(diào),用戶只需幾行代碼就可以使用像 BERT 這樣的模型,Hub中包含適用于不同用例的 TensorFlow、TensorFlow Lite 和 TensorFlow.js 模型,模型可用于圖像、視頻、音頻和文本問題。

TensorFlow Extended是 TensorFlow 用于模型部署的端到端平臺,用戶可以加載、驗證、分析和轉(zhuǎn)換數(shù)據(jù);訓練和評估模型;使用 Serving 或 Lite 部署模型;然后跟蹤工件及其依賴項。TFX 可以與 Jupyter 或 Colab 一起使用,并且可以使用 Apache Airflow / Beam或 Kubernetes 進行編排。TFX 與Google Cloud緊密集成,可與 Vertex AI Pipelines 一起使用。
MediaPipe是用于構(gòu)建多模式、跨平臺應用機器學習管道的框架,可用于人臉檢測、多手跟蹤、對象檢測等。該項目是開源的,并綁定了多種語言,包括 Python、C++ 和 JavaScript。

TensorFlow.js是一個用于機器學習的 JavaScript 庫,允許您使用 Node.js 在瀏覽器和服務器端訓練和部署模型。
TensorFlow Cloud可讓用戶將本地環(huán)境連接到 Google Cloud。提供的 API 能夠彌補從本地機器上的模型構(gòu)建和調(diào)試到 GCP 上的分布式訓練和超參數(shù)調(diào)整之間的差距,而無需使用 Cloud Console。
Google Colab是一個基于云的筆記本環(huán)境,與 Jupyter 非常相似。將 Colab 連接到 Google Cloud 進行 GPU 或 TPU 訓練很容易,并且PyTorch 也可以與 Colab 一起使用。
三項對此完,這兩個框架可以說是神仙打架了,各有優(yōu)劣。
但評論區(qū)也有網(wǎng)友表示,我一只腳踏入工業(yè)界,但另一只腳還在學術(shù)界,不過我在教課的時候還是選擇PyTorch,因為TF太不可靠了,接口總是變,尤其是從TF1遷移到TF2的時候。
并且在公司也同樣使用PyTorch,因為靈活性更重要。

如果看完上面的討論,你還不知道怎么選擇適合自己的框架,那英雄聯(lián)盟中的一位英雄臺詞或許能對這場甜咸之爭帶來終極答案。

要問我更喜歡什么工具,未免太幼稚了,但我的錘子是我最喜歡的。
參考資料:
https://www.reddit.com/r/MachineLearning/comments/rga91a/d_are_you_using_PyTorch_or_TensorFlow_going_into/
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復“transformer”獲取最新Transformer綜述論文下載~

# CV技術(shù)社群邀請函 #

備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳)
即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

