點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)
視覺/圖像重磅干貨,第一時(shí)間送達(dá)
坊間傳聞:「TensorFlow 適合業(yè)界,PyTorch 適合學(xué)界」。都 2022 年了,還是這樣嗎?
快到 2022 了,你是選 PyTorch 還是 TensorFlow?之前有一種說法:TensorFlow 適合業(yè)界,PyTorch 適合學(xué)界。這種說法到 2022 年還成立嗎?在這篇文章中,作者從模型可用性、部署便捷度和生態(tài)系統(tǒng)三個(gè)方面對(duì)比了兩個(gè)框架的優(yōu)缺點(diǎn),并針對(duì)不同身份的讀者給出了不同的選擇建議。在模型可用性方面,PyTorch 和 TensorFlow 表現(xiàn)出了明顯的區(qū)別。它們都有自己的官方模型庫,但是對(duì)于從業(yè)者來說,這些庫里的模型可能還不夠。因此,我們有必要比較一下這兩個(gè)框架官方模型庫之外的模型來源是否豐富。HuggingFace 的存在使得深度學(xué)習(xí)從業(yè)者僅借助幾行代碼就能將訓(xùn)練、微調(diào)好的 SOTA 模型整合到其 pipeline 中。下圖顯示了兩個(gè)框架的 HuggingFace 模型可用情況。從圖中看出,HuggingFace 中大約有 85% 的模型只能在 PyTorch 上用,剩下的模型還有一半也可以在 PyTorch 上用。相比之下,只有 16% 的模型能在 TensorFlow 上用,只有 8% 是 TensorFlow 所獨(dú)有的。
如果把范圍縮小到 HuggingFace 上最受歡迎的 30 個(gè)模型,我們可以看到類似的結(jié)果。在這 30 個(gè)模型中,能在 TensorFlow 上用的還不到 2/3,但能在 PyTorch 上用的卻達(dá)到了 100%,沒有哪個(gè)模型只能在 TensorFlow 上用。
對(duì)于研究者來說,從最近發(fā)表的論文中獲取模型是非常重要的,它可以讓你專注于其他重要的工作。嘗試在不同的框架中重新創(chuàng)建新的模型會(huì)浪費(fèi)寶貴的時(shí)間。考慮到 PyTorch 實(shí)際上是一個(gè)研究型框架,作者預(yù)期在 HuggingFace 上觀察到的趨勢(shì)會(huì)蔓延至整個(gè)社區(qū),結(jié)果不出所料。如下圖所示,作者匯總了 8 個(gè)頂級(jí)研究期刊上的論文在過去幾年里的框架采用情況。結(jié)果顯示,PyTorch 的采用率增長(zhǎng)迅速,幾年時(shí)間就從原來的 7% 長(zhǎng)到了近 80%。
PyTorch 的這種增長(zhǎng)勢(shì)頭很大程度上是拜 TensorFlow 所賜。很多轉(zhuǎn)向 PyTorch 的研究者都表示 TensorFlow 1 太難用了。盡管 2019 年發(fā)布的 TensorFlow 2 改掉了一些問題,但彼時(shí),PyTorch 的增長(zhǎng)勢(shì)頭已經(jīng)難以遏制。如果看一下那些中途換框架的研究者的比例,我們也可以得出類似的結(jié)論。如下圖所示,在 2018 年還在用 TensorFlow 的論文作者中,有 55% 的人在 2019 年轉(zhuǎn)向了 PyTorch,但 2018 年就在用 PyTorch 的人有 85% 都留了下來。
最后我們來看一下 Papers with Code 網(wǎng)站。在這一部分,作者繪制了使用 PyTorch、TensorFlow 或其他框架的論文隨時(shí)間變化的比例。從中可以看出,使用 PyTorch 的論文在穩(wěn)步增長(zhǎng):在本季度創(chuàng)建的 4500 個(gè)庫中,有 60% 是在 PyTorch 中實(shí)現(xiàn)的,只有 11% 是在 TensorFlow 中實(shí)現(xiàn)的。相比之下,TensorFlow 的使用率在穩(wěn)步下降,2019 年 TensorFlow 2 的發(fā)布也沒有扭轉(zhuǎn)這一趨勢(shì)。
從以上數(shù)據(jù)可以明顯看出,PyTorch 目前在研究領(lǐng)域占據(jù)主導(dǎo)地位。雖然 TensorFlow 2 解決了研究者使用該框架進(jìn)行研究的一些痛點(diǎn),但 PyTorch 卻沒有給研究者回頭的理由。此外,TensorFlow 兩大版本之間的向后兼容性問題只會(huì)讓這種趨勢(shì)愈演愈烈。當(dāng)然,這里還有幾個(gè)例外需要注意:Google AI:谷歌發(fā)布的論文自然會(huì)用 TensorFlow。鑒于在論文方面谷歌比 Facebook 更高產(chǎn),一些研究者可能會(huì)發(fā)現(xiàn)掌握 TensorFlow 還是很有用的。DeepMind:DeepMind 也用 TensorFlow,而且也比 Facebook 高產(chǎn)。他們創(chuàng)建了一個(gè)名叫 Sonnet 的 TensorFlow 高級(jí) API,用于研究目的。有人管這個(gè) API 叫「科研版 Keras」,那些考慮用 TensorFlow 做研究的人可能會(huì)用到它。此外,DeepMind 的 Acme 框架可能對(duì)于強(qiáng)化學(xué)習(xí)研究者很有用。OpenAI:OpenAI 在 2020 年宣布了全面擁抱 PyTorch 的決定。但他們之前的強(qiáng)化學(xué)習(xí)基線庫都是在 TensorFlow 上部署的。基線提供了高質(zhì)量強(qiáng)化學(xué)習(xí)算法的實(shí)現(xiàn),因此 TensorFlow 可能還是強(qiáng)化學(xué)習(xí)從業(yè)者的最佳選擇。JAX:谷歌還有另一個(gè)框架——JAX,它在研究社區(qū)中越來越受歡迎。與 PyTorch 和 TensorFlow 相比,JAX 的開銷要小得多。但同時(shí),JAX 和前兩個(gè)框架差別也很大,因此遷移到 JAX 對(duì)于大多數(shù)人來說可能并不是一個(gè)好選擇。目前,有越來越多的模型 / 論文已經(jīng)在用 JAX,但未來幾年的趨勢(shì)依然不甚明朗。所以總體來看,在第一輪(模型可用性)的對(duì)比中,PyTorch 完勝。部署便捷性對(duì)比:TensorFlow 勝出從一開始,TensorFlow 就是一個(gè)面向部署的首選框架,因?yàn)樗幸幌盗锌梢蕴岣叨说蕉松疃葘W(xué)習(xí)效率的工具,比如 TensorFlow Serving 和 TensorFlow Lite。相比之下,PyTorch 在部署方面一度表現(xiàn)平平,但近年來,它也在努力縮小這一差距。去年推出的 TorchServe 和前幾周推出的 PyTorch Live 為用戶提供了急需的本地部署工具。但二者之間的差距還有多大?我們來看進(jìn)一步的分析。TensorFlow 有靜態(tài)圖,可以優(yōu)化推理性能。當(dāng)使用 TensorFlow 部署模型時(shí),你可以根據(jù)具體應(yīng)用選擇使用 TensorFlow Serving 或 TensorFlow Lite。TensorFlow Serving 用于在服務(wù)器上部署 TensorFlow 模型,無論是在內(nèi)部還是在云上,并在 TensorFlow Extended(TFX)端到端機(jī)器學(xué)習(xí)平臺(tái)中使用。Serving 使得用模型標(biāo)記(model tag)將模型序列化到定義良好的目錄中變得很容易,并且可以選擇在保持服務(wù)器架構(gòu)和 API 靜態(tài)的情況下使用哪個(gè)模型來進(jìn)行推理請(qǐng)求。Serving 可以幫用戶輕松地在 gRPC ?服務(wù)器上部署模型,這些服務(wù)器運(yùn)行谷歌為高性能 RPC 打造的開源框架。gRPC 的設(shè)計(jì)意圖是連接不同的微服務(wù)生態(tài)系統(tǒng),因此這些服務(wù)器非常適合模型部署。Serving 通過 Vertex AI 和 Google Cloud 緊密地集成在一起,還和 Kubernetes 以及 Docker 進(jìn)行了集成。TensorFlow Lite 用于在移動(dòng)或物聯(lián)網(wǎng) / 嵌入式設(shè)備上部署 TensorFlow 模型。TFLite 對(duì)這些設(shè)備上的模型進(jìn)行了壓縮和優(yōu)化,并解決了設(shè)備上的 AI 的 5 個(gè)約束——延遲、連接、隱私、大小和功耗。可以使用相同的 pipeline 同時(shí)導(dǎo)出基于標(biāo)準(zhǔn) Keras 的 SavedModels(和 Serving 一起使用)和 TFLite 模型,這樣就能比較模型的質(zhì)量。TFLite 可用于 Android、iOS、微控制器和嵌入式 Linux。TensorFlow 針對(duì) Python、Java、C++、JavaScript 和 Swift 的 API 為開發(fā)人員提供了廣泛的語言選項(xiàng)。PyTorch 在簡(jiǎn)化部署方面有所投入。以前,PyTorch 用戶需要使用 Flask 或 Django 在模型之上構(gòu)建一個(gè) REST API,但現(xiàn)在他們有了 TorchServe 和 PyTorch Live 的本地部署選項(xiàng)。TorchServe 是 AWS 和 Facebook 合作的開源部署框架,于 2020 年發(fā)布。它具有端點(diǎn)規(guī)范、模型歸檔和指標(biāo)觀測(cè)等基本功能,但仍然不如 TensorFlow。TorchServe 同時(shí)支持 REST 和 gRPC API。PyTorch 于 2019 年首次發(fā)布 PyTorch Mobile,旨在為部署優(yōu)化的機(jī)器學(xué)習(xí)模型創(chuàng)建端到端工作流,適用于 Android、iOS 和 Linux。PyTorch Live 于 12 月初發(fā)布,以移動(dòng)平臺(tái)為基礎(chǔ)。它使用 JavaScript 和 React Native 來創(chuàng)建帶有相關(guān) UI 的跨平臺(tái) iOS 和 Android AI 應(yīng)用。設(shè)備上的推理仍然由 PyTorch Mobile 執(zhí)行。Live 提供了示例項(xiàng)目來輔助入門,并計(jì)劃在未來支持音頻和視頻輸入。目前,TensorFlow 依然在部署方面占有優(yōu)勢(shì)。Serving 和 TFLite 比 PyTorch 的同類型工具要穩(wěn)健一些。而且,將 TFLite 與谷歌的 Coral 設(shè)備一起用于本地 AI 的能力是許多行業(yè)的必備條件。相比之下,PyTorch Live 只專注于移動(dòng)平臺(tái),而 TorchServe 仍處于起步階段。因此綜合來看,第二輪(部署便捷性)的勝出者是 TensorFlow。如果你既想用 TensorFlow 的部署基礎(chǔ)設(shè)施,又想訪問只能在 PyTorch 中使用的模型,作者推薦使用 ONNX 將模型從 PyTorch 移植到 TensorFlow。生態(tài)系統(tǒng)對(duì)比:TensorFlow 勝出2022 年,將 PyTorch 和 TensorFlow 分開考慮,一個(gè)重要的因素是它們所處的生態(tài)系統(tǒng)不同。PyTorch 和 TensorFlow 都提供了易于部署、管理、分布式訓(xùn)練的工具,從建模的角度講都是能力很強(qiáng)的框架。相比之下,它們?cè)谏鷳B(tài)系統(tǒng)方面的差異更重要。PyTorch Hub 作為面向研究的官方平臺(tái),用于與預(yù)訓(xùn)練模型共享存儲(chǔ)庫。Hub 擁有廣泛類別的模型,包括用于音頻、視覺、NLP 任務(wù)的模型,還有用于生成任務(wù)的 GAN 模型。SpeechBrain 是 PyTorch 的官方開源語音工具包。SpeechBrain 能夠完成自動(dòng)語音識(shí)別(ASR)、說話人識(shí)別、驗(yàn)證和分類等任務(wù)。如果你不想構(gòu)建任何模型,而是想要一個(gè)具有情感分析、實(shí)體檢測(cè)等功能的即插即用工具,你可以選擇使用 AssemblyAI 的 Speech-to-Text API。當(dāng)然,PyTorch 的工具頁面還有很多其他有用的庫,包括為計(jì)算機(jī)視覺和自然語言處理量身定制的庫,例如 fast.ai。TorchElastic 是 AWS 和 Facebook 2020 年聯(lián)合發(fā)布的分布式訓(xùn)練工具,可管理工作進(jìn)程并協(xié)調(diào)重啟行為,以便用戶在計(jì)算節(jié)點(diǎn)集群上訓(xùn)練模型,這些節(jié)點(diǎn)可以動(dòng)態(tài)變化而不會(huì)影響訓(xùn)練。因此,TorchElastic 可防止因服務(wù)器維護(hù)或網(wǎng)絡(luò)問題等導(dǎo)致的災(zāi)難性故障,不會(huì)丟失訓(xùn)練進(jìn)度。TorchElastic 具有與 Kubernetes 集成的特性,并已集成到 PyTorch 1.9+ 中。TorchX 是一個(gè)用于快速構(gòu)建和部署機(jī)器學(xué)習(xí)應(yīng)用程序的 SDK。TorchX 包括 Training Session Manager API,可在支持的調(diào)度程序上啟動(dòng)分布式 PyTorch 應(yīng)用程序。TorchX 負(fù)責(zé)啟動(dòng)分布式作業(yè),同時(shí)原生支持由 TorchElastic 局部管理的作業(yè)。PyTorch Lightning 有時(shí)被稱為 PyTorch 的 Keras。雖然這種類比并不準(zhǔn)確,但 Lightning 的確是簡(jiǎn)化 PyTorch 中模型工程和訓(xùn)練過程的有用工具,自 2019 年首次發(fā)布以來已經(jīng)逐漸趨于成熟。Lightning 以面向?qū)ο蟮姆绞教幚斫_^程,定義了可重用和可跨項(xiàng)目使用的可共享組件。TensorFlow Hub 是一個(gè)經(jīng)過訓(xùn)練的機(jī)器學(xué)習(xí)模型庫,可以進(jìn)行微調(diào),讓用戶只需幾行代碼就能使用像 BERT 這樣的模型。Hub 包含適用于不同用例的 TensorFlow、TensorFlow Lite 和 TensorFlow.js 模型,可用于圖像、視頻、音頻和文本處理。如果現(xiàn)成的預(yù)訓(xùn)練模型不適用于用戶的應(yīng)用,那么 TensorFlow 的存儲(chǔ)庫 Model Garden 可以提供 SOTA 模型的源代碼。對(duì)于想要深入了解模型工作原理,或根據(jù)自己的需要修改模型的用戶,Model Garden 將非常有用。Model Garden 包含谷歌維護(hù)的官方模型、研究人員維護(hù)的研究模型和社區(qū)維護(hù)的精選社區(qū)模型。TensorFlow 的長(zhǎng)期目標(biāo)是在 Hub 上提供來自 Model Garden 的模型的預(yù)訓(xùn)練版本,并使 Hub 上的預(yù)訓(xùn)練模型在 Model Garden 中具有可用的源代碼。TensorFlow Extended 是 TensorFlow 用于模型部署的端到端平臺(tái)。該平臺(tái)的功能強(qiáng)大,包括:加載、驗(yàn)證、分析和轉(zhuǎn)換數(shù)據(jù);訓(xùn)練和評(píng)估模型;使用 Serving 或 Lite 部署模型;跟蹤 artifact 及其依賴項(xiàng)。TFX 還可以與 Jupyter 或 Colab 一起使用,并且可以使用 Apache Airflow/Beam 或 Kubernetes 進(jìn)行編排。TFX 與 Google Cloud 緊密集成,可與 Vertex AI Pipelines 一起使用。Vertex AI 是 Google Cloud 今年剛剛發(fā)布的統(tǒng)一機(jī)器學(xué)習(xí)平臺(tái),旨在統(tǒng)一 GCP、AI Platform 和 AutoML,成為一個(gè)平臺(tái)。Vertex AI 能夠以無服務(wù)器方式編排工作流,幫助用戶自動(dòng)化、監(jiān)控和管理機(jī)器學(xué)習(xí)系統(tǒng)。Vertex AI 還可以存儲(chǔ)工作流的 artifact,讓用戶可以跟蹤依賴項(xiàng)和模型的訓(xùn)練數(shù)據(jù)、超參數(shù)和源代碼。盡管有各種各樣的 SaaS 公司依賴基于云的人工智能,但許多行業(yè)對(duì)本地人工智能的需求也在不斷增長(zhǎng),Google Coral 就是為了滿足這一需求而創(chuàng)建的。Coral 是一個(gè)完整的工具包,可以使用本地 AI 構(gòu)建產(chǎn)品。Coral 于 2020 年發(fā)布,解決了部署部分 TFLite 中提到的實(shí)現(xiàn)板載 AI 的問題,克服了隱私和效率等方面的困難。Coral 提供了一系列用于原型設(shè)計(jì)、生產(chǎn)和傳感的硬件產(chǎn)品,其中一些本質(zhì)上是增強(qiáng)型的樹莓派,專為 AI 應(yīng)用程序創(chuàng)建,能夠利用 Edge TPU 在低功耗設(shè)備上進(jìn)行高性能推理。Coral 還提供用于圖像分割、姿態(tài)估計(jì)、語音識(shí)別等任務(wù)的預(yù)編譯模型,為希望創(chuàng)建本地 AI 系統(tǒng)的開發(fā)人員提供支持。創(chuàng)建模型的基本步驟如下面的流程圖所示。
TensorFlow.js 是一個(gè)用于機(jī)器學(xué)習(xí)的 JavaScript 庫,允許用戶使用 Node.js 在瀏覽器和服務(wù)器端訓(xùn)練和部署模型。TensorFlow Cloud 是一個(gè)可以將本地環(huán)境連接到 Google Cloud 的庫,它的 API 旨在彌補(bǔ)本地機(jī)器上模型構(gòu)建和調(diào)試與 GCP 上分布式訓(xùn)練和超參數(shù)調(diào)整之間的差距,而無需使用 Cloud Console。Google Colab 是一個(gè)基于云的 notebook 環(huán)境,與 Jupyter 非常相似。Colab 易于連接到 Google Cloud 進(jìn)行 GPU 或 TPU 訓(xùn)練,并且 Colab 還可以和 PyTorch 一起使用。Playground 是一個(gè)小而精致的可視化工具,用于幫助用戶理解神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)。要戶可以更改 Playground 內(nèi)置神經(jīng)網(wǎng)絡(luò)的層數(shù)和大小,以實(shí)時(shí)查看神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)特征的,用戶還可以看到改變學(xué)習(xí)率和正則化強(qiáng)度等超參數(shù)如何影響不同數(shù)據(jù)集的學(xué)習(xí)過程。Playground 允許實(shí)時(shí)播放學(xué)習(xí)過程,以高度直觀的方式查看輸入在訓(xùn)練過程中是如何轉(zhuǎn)換的。Playground 還提供了一個(gè)開源的小型神經(jīng)網(wǎng)絡(luò)庫,是它自身的構(gòu)建基礎(chǔ),用戶能夠查看其源代碼的具體細(xì)節(jié)。谷歌研究院的 Datasets 是谷歌定期發(fā)布的數(shù)據(jù)集的整合資源。谷歌還提供了數(shù)據(jù)集搜索以訪問更廣泛的數(shù)據(jù)集資源。當(dāng)然,PyTorch 用戶也可以利用這些數(shù)據(jù)集。總的來說,盡管 PyTorch 和 TensorFlow 有很多相似和共享的資源,但在生態(tài)系統(tǒng)方面,終究是 TensorFlow 更勝一籌。谷歌投入巨資確保深度學(xué)習(xí)的每個(gè)相關(guān)領(lǐng)域都有完善的產(chǎn)品。與 Google Cloud 和 TFX 的緊密集成使端到端的開發(fā)過程變得輕而易舉,而將模型移植到 Google Coral 設(shè)備的便利性讓 TensorFlow 在某些行業(yè)取得了壓倒性的勝利。我應(yīng)該選 PyTorch 還是 TensorFlow?正如期望的那樣,PyTorch 與 TensorFlow 還沒有決出明確的勝負(fù)。只能說,某一個(gè)框架在特定用例方面是優(yōu)于另一個(gè)框架的。為了幫助讀者做出選擇,作者匯總了一些建議。在下面的流程圖中,每個(gè)圖表都針對(duì)不同的興趣領(lǐng)域量身定制。
如果在工業(yè)界執(zhí)行深度學(xué)習(xí)工程任務(wù),你很可能會(huì)使用 TensorFlow,并且應(yīng)該堅(jiān)持使用它。對(duì)于需要將模型投入生產(chǎn)的人來說,TensorFlow 強(qiáng)大的部署框架和端到端的 TensorFlow Extended 平臺(tái)是很珍貴的。能在 gRPC 服務(wù)器上進(jìn)行輕松部署以及模型監(jiān)控和工件跟蹤是行業(yè)應(yīng)用的關(guān)鍵。鑒于 PyTorch 最近發(fā)布了 TorchServe,如果你需要訪問僅在 PyTorch 中可用的 SOTA 模型,那也可以考慮使用 PyTorch。在這種情況下,請(qǐng)考慮使用 ONNX 在 TensorFlow 的部署工作流中部署轉(zhuǎn)換后的 PyTorch 模型。如果你正在構(gòu)建移動(dòng)應(yīng)用,鑒于 PyTorch 最近發(fā)布了 PyTorch Live,可以考慮使用 PyTorch。如果你需要音頻或視頻輸入,在這種情況下還是應(yīng)該使用 TensorFlow。如果你正在構(gòu)建使用 AI 的嵌入式系統(tǒng)或 IoT 設(shè)備,鑒于 TFLite + Coral 生態(tài)系統(tǒng),你仍然應(yīng)該使用 TensorFlow。總之,在工業(yè)界,如果必須選擇一種框架,請(qǐng)選擇 TensorFlow。
如果是一名研究人員,你大概率會(huì)使用 PyTorch,你應(yīng)該堅(jiān)持使用它,大多數(shù) SOTA 模型都適用于 PyTorch。當(dāng)然,這條規(guī)則有幾個(gè)值得注意的例外,最值得注意的是:強(qiáng)化學(xué)習(xí)領(lǐng)域的一些研究應(yīng)該考慮使用 TensorFlow。TensorFlow 有一個(gè)用于強(qiáng)化學(xué)習(xí)的原生 Agents 庫,并且 DeepMind 的 Acme 框架是在 TensorFlow 中實(shí)現(xiàn)的。OpenAI 的 baseline 模型存儲(chǔ)庫也是在 TensorFlow 中實(shí)現(xiàn)的,盡管 OpenAI 的 Gym 在 TensorFlow 或 PyTorch 中都能使用。如果你打算使用 TensorFlow 進(jìn)行研究,還應(yīng)該查看 DeepMind 的 Sonnet 以獲得更高級(jí)別的抽象。如果不想使用 TensorFlow,比如你正在做 TPU 訓(xùn)練,那么應(yīng)該考慮探索谷歌的 JAX。JAX 本身不是神經(jīng)網(wǎng)絡(luò)框架,而是更接近于具有自動(dòng)微分能力的 GPU/TPU 的 NumPy 實(shí)現(xiàn)。DeepMind 的 Haiku,被稱為「Sonnet for JAX」,是一個(gè)建立在 JAX 之上的神經(jīng)網(wǎng)絡(luò)庫,如果你正在考慮 JAX,那么 Haiku 值得你去探索。如果你不進(jìn)行 TPU 訓(xùn)練,那最好是堅(jiān)持使用 PyTorch。無論選擇哪種框架,你都應(yīng)該在 2022 年密切關(guān)注 JAX。總之,在學(xué)術(shù)界,如果需要選擇一個(gè)框架,請(qǐng)選擇 PyTorch。
如果你是一位教授,在深度學(xué)習(xí)課程中使用哪種框架取決于每一門課程的目標(biāo)。如果課程的重點(diǎn)是培養(yǎng)具備行業(yè)技能的深度學(xué)習(xí)工程師,讓他們可以勝任整個(gè)端到端深度學(xué)習(xí)任務(wù),而不僅僅是掌握深度學(xué)習(xí)理論,那么你應(yīng)該使用 TensorFlow。在這種情況下,接觸 TensorFlow 生態(tài)系統(tǒng)及其工具以及端到端的實(shí)踐項(xiàng)目將非常有價(jià)值。如果課程的重點(diǎn)是深度學(xué)習(xí)理論和理解深度學(xué)習(xí)模型的底層原理,那么應(yīng)該使用 PyTorch。如果你正在教授讓學(xué)生為深度學(xué)習(xí)研究做好準(zhǔn)備的高級(jí)本科課程或早期研究生課程,那你更應(yīng)該選 PyTorch。理想情況下,學(xué)生應(yīng)該接觸每個(gè)框架,盡管單個(gè)學(xué)期的時(shí)間有限,但花一些時(shí)間來了解框架之間的差異可能很有價(jià)值。如果課程是機(jī)器學(xué)習(xí)大型課程的一部分,其中有許多課程專門針對(duì)不同的主題,最好堅(jiān)持使用最適合課程材料的框架,而不是嘗試同時(shí)接觸兩者。如果我正在嘗試尋求職業(yè)的轉(zhuǎn)變?cè)撛趺崔k?
如果想在職業(yè)生涯中尋求一些轉(zhuǎn)變,PyTorch 或 TensorFlow 都是不錯(cuò)的選擇。在這種情況下,你可以做的最重要的事情是證明自己可以帶來額外價(jià)值,因此擁有復(fù)合項(xiàng)目經(jīng)驗(yàn)至關(guān)重要。將深度學(xué)習(xí)應(yīng)用于創(chuàng)造性用例來打破常規(guī),或者通過端到端的項(xiàng)目表明自己已做好迎接行業(yè)的準(zhǔn)備,都能讓自己處于不敗之地。因此,建議使用可以讓你工作更輕松的任何框架,這比熟悉特定框架的 API 重要得多。話雖如此,如果你對(duì)框架完全不熟悉,請(qǐng)使用 TensorFlow,因?yàn)樗鞘走x的行業(yè)框架。下圖中匯總了各種職業(yè)網(wǎng)站的每個(gè)框架職位的發(fā)布數(shù)量,TensorFlow 遠(yuǎn)遠(yuǎn)超過了 PyTorch。
總之,如果你有使用 PyTorch 的特定原因,例如為 OpenAI 工作,或者使用 TensorFlow 對(duì)你來說非常不直觀,那么請(qǐng)隨意。但一般的建議是專注于 TensorFlow。
如果你是個(gè)深度學(xué)習(xí)愛好者,那么你使用的框架將取決于你的目標(biāo)。如果將深度學(xué)習(xí)模型作為某個(gè)較大項(xiàng)目的一部分來實(shí)施,那么 TensorFlow 可能是你想要使用的,尤其是在部署到物聯(lián)網(wǎng) / 嵌入式設(shè)備時(shí)。鑒于 PyTorch Live 已經(jīng)發(fā)布,你可以將 PyTorch 用于移動(dòng)應(yīng)用,但目前 TensorFlow + TFLite 仍然是首選方法。如果你的目標(biāo)是為了使用深度學(xué)習(xí)而學(xué)習(xí),那使用哪種框架取決于你的背景。一般來說,PyTorch 可能是更好的選擇,特別是如果你一直習(xí)慣使用 Python 工作。
如果你是一個(gè)對(duì)深度學(xué)習(xí)感興趣并且只是想入門的初學(xué)者,建議使用 Keras。利用其高級(jí)組件,你可以輕松地開始了解深度學(xué)習(xí)的基礎(chǔ)知識(shí)。不過,一旦準(zhǔn)備更深入地了解深度學(xué)習(xí)的具體細(xì)節(jié),你會(huì)面臨幾個(gè)選擇:如果你不想安裝新框架,并且擔(dān)心能否適應(yīng)新的 API,那可以嘗試從 Keras 「下降」到 TensorFlow。如果 TensorFlow 令你困惑,請(qǐng)嘗試轉(zhuǎn)向 PyTorch。如果你想要一個(gè)更像 Python 的框架,那么遷移到 PyTorch 可能是你最好的選擇。在這種情況下,必須安裝新框架并可能重寫自定義腳本。此外,如果 PyTorch 對(duì)你來說有點(diǎn)麻煩,你可以使用 PyTorch Lightning 劃分你的代碼并擺脫一些樣板。如果你是一個(gè)完完全全的初學(xué)者,可以考慮觀看一些 TensorFlow 和 PyTorch 的 YouTube 教程,以確定哪個(gè)框架對(duì)自己來說更直觀。PyTorch 與 TensorFlow 之爭(zhēng)是一場(chǎng)微妙的辯論,格局一直在不斷變化。至少在 2022 年,PyTorch 和 TensorFlow 都已經(jīng)是非常成熟的框架,二者的核心深度學(xué)習(xí)功能重疊明顯。今天,考慮每個(gè)框架的實(shí)際因素,比如它們的模型可用性、部署時(shí)間和相關(guān)的生態(tài)系統(tǒng),都比只討論它們的技術(shù)差異更有意義。選擇任一框架都不會(huì)出錯(cuò),因?yàn)樗鼈兌加型陚涞奈臋n、學(xué)習(xí)資源和活躍的社區(qū)。希望你能選到最適合的那一個(gè)框架。原文鏈接:https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2022/本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。