自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2022年了,PyTorch和TensorFlow你選哪個(gè)?

開(kāi)發(fā) 開(kāi)發(fā)工具
坊間傳聞:「TensorFlow 適合業(yè)界,PyTorch 適合學(xué)界」。都 2022 年了,還是這樣嗎?

快到 2022 了,你是選 PyTorch 還是 TensorFlow?之前有一種說(shuō)法:TensorFlow 適合業(yè)界,PyTorch 適合學(xué)界。這種說(shuō)法到 2022 年還成立嗎?在這篇文章中,作者從模型可用性、部署便捷度和生態(tài)系統(tǒng)三個(gè)方面對(duì)比了兩個(gè)框架的優(yōu)缺點(diǎn),并針對(duì)不同身份的讀者給出了不同的選擇建議。

模型可用性對(duì)比:PyTorch 勝出

在模型可用性方面,PyTorch 和 TensorFlow 表現(xiàn)出了明顯的區(qū)別。它們都有自己的官方模型庫(kù),但是對(duì)于從業(yè)者來(lái)說(shuō),這些庫(kù)里的模型可能還不夠。因此,我們有必要比較一下這兩個(gè)框架官方模型庫(kù)之外的模型來(lái)源是否豐富。

HuggingFace

HuggingFace 的存在使得深度學(xué)習(xí)從業(yè)者僅借助幾行代碼就能將訓(xùn)練、微調(diào)好的 SOTA 模型整合到其 pipeline 中。下圖顯示了兩個(gè)框架的 HuggingFace 模型可用情況。從圖中看出,HuggingFace 中大約有 85% 的模型只能在 PyTorch 上用,剩下的模型還有一半也可以在 PyTorch 上用。相比之下,只有 16% 的模型能在 TensorFlow 上用,只有 8% 是 TensorFlow 所獨(dú)有的。

如果把范圍縮小到 HuggingFace 上最受歡迎的 30 個(gè)模型,我們可以看到類(lèi)似的結(jié)果。在這 30 個(gè)模型中,能在 TensorFlow 上用的還不到 2/3,但能在 PyTorch 上用的卻達(dá)到了 100%,沒(méi)有哪個(gè)模型只能在 TensorFlow 上用。

研究論文

對(duì)于研究者來(lái)說(shuō),從最近發(fā)表的論文中獲取模型是非常重要的,它可以讓你專(zhuān)注于其他重要的工作。嘗試在不同的框架中重新創(chuàng)建新的模型會(huì)浪費(fèi)寶貴的時(shí)間。

考慮到 PyTorch 實(shí)際上是一個(gè)研究型框架,作者預(yù)期在 HuggingFace 上觀察到的趨勢(shì)會(huì)蔓延至整個(gè)社區(qū),結(jié)果不出所料。

如下圖所示,作者匯總了 8 個(gè)頂級(jí)研究期刊上的論文在過(guò)去幾年里的框架采用情況。結(jié)果顯示,PyTorch 的采用率增長(zhǎng)迅速,幾年時(shí)間就從原來(lái)的 7% 長(zhǎng)到了近 80%。

PyTorch 的這種增長(zhǎng)勢(shì)頭很大程度上是拜 TensorFlow 所賜。很多轉(zhuǎn)向 PyTorch 的研究者都表示 TensorFlow 1 太難用了。盡管 2019 年發(fā)布的 TensorFlow 2 改掉了一些問(wèn)題,但彼時(shí),PyTorch 的增長(zhǎng)勢(shì)頭已經(jīng)難以遏制。

如果看一下那些中途換框架的研究者的比例,我們也可以得出類(lèi)似的結(jié)論。如下圖所示,在 2018 年還在用 TensorFlow 的論文作者中,有 55% 的人在 2019 年轉(zhuǎn)向了 PyTorch,但 2018 年就在用 PyTorch 的人有 85% 都留了下來(lái)。

Papers with Code

最后我們來(lái)看一下 Papers with Code 網(wǎng)站。在這一部分,作者繪制了使用 PyTorch、TensorFlow 或其他框架的論文隨時(shí)間變化的比例。從中可以看出,使用 PyTorch 的論文在穩(wěn)步增長(zhǎng):在本季度創(chuàng)建的 4500 個(gè)庫(kù)中,有 60% 是在 PyTorch 中實(shí)現(xiàn)的,只有 11% 是在 TensorFlow 中實(shí)現(xiàn)的。相比之下,TensorFlow 的使用率在穩(wěn)步下降,2019 年 TensorFlow 2 的發(fā)布也沒(méi)有扭轉(zhuǎn)這一趨勢(shì)。

小結(jié)

從以上數(shù)據(jù)可以明顯看出,PyTorch 目前在研究領(lǐng)域占據(jù)主導(dǎo)地位。雖然 TensorFlow 2 解決了研究者使用該框架進(jìn)行研究的一些痛點(diǎn),但 PyTorch 卻沒(méi)有給研究者回頭的理由。此外,TensorFlow 兩大版本之間的向后兼容性問(wèn)題只會(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í)基線(xiàn)庫(kù)都是在 TensorFlow 上部署的。基線(xiàn)提供了高質(zhì)量強(qiáng)化學(xué)習(xí)算法的實(shí)現(xiàn),因此 TensorFlow 可能還是強(qiáng)化學(xué)習(xí)從業(yè)者的最佳選擇。
  • JAX:谷歌還有另一個(gè)框架——JAX,它在研究社區(qū)中越來(lái)越受歡迎。與 PyTorch 和 TensorFlow 相比,JAX 的開(kāi)銷(xiāo)要小得多。但同時(shí),JAX 和前兩個(gè)框架差別也很大,因此遷移到 JAX 對(duì)于大多數(shù)人來(lái)說(shuō)可能并不是一個(gè)好選擇。目前,有越來(lái)越多的模型 / 論文已經(jīng)在用 JAX,但未來(lái)幾年的趨勢(shì)依然不甚明朗。

所以總體來(lái)看,在第一輪(模型可用性)的對(duì)比中,PyTorch 完勝。

部署便捷性對(duì)比:TensorFlow 勝出

從一開(kāi)始,TensorFlow 就是一個(gè)面向部署的首選框架,因?yàn)樗幸幌盗锌梢蕴岣叨说蕉松疃葘W(xué)習(xí)效率的工具,比如 TensorFlow Serving 和 TensorFlow Lite。

相比之下,PyTorch 在部署方面一度表現(xiàn)平平,但近年來(lái),它也在努力縮小這一差距。去年推出的 TorchServe 和前幾周推出的 PyTorch Live 為用戶(hù)提供了急需的本地部署工具。但二者之間的差距還有多大?我們來(lái)看進(jìn)一步的分析。

TensorFlow

TensorFlow 有靜態(tài)圖,可以?xún)?yōu)化推理性能。當(dāng)使用 TensorFlow 部署模型時(shí),你可以根據(jù)具體應(yīng)用選擇使用 TensorFlow Serving 或 TensorFlow Lite。

TensorFlow Serving:

TensorFlow Serving 用于在服務(wù)器上部署 TensorFlow 模型,無(wú)論是在內(nèi)部還是在云上,并在 TensorFlow Extended(TFX)端到端機(jī)器學(xué)習(xí)平臺(tái)中使用。Serving 使得用模型標(biāo)記(model tag)將模型序列化到定義良好的目錄中變得很容易,并且可以選擇在保持服務(wù)器架構(gòu)和 API 靜態(tài)的情況下使用哪個(gè)模型來(lái)進(jìn)行推理請(qǐng)求。

Serving 可以幫用戶(hù)輕松地在 gRPC 服務(wù)器上部署模型,這些服務(wù)器運(yùn)行谷歌為高性能 RPC 打造的開(kāi)源框架。gRPC 的設(shè)計(jì)意圖是連接不同的微服務(wù)生態(tài)系統(tǒng),因此這些服務(wù)器非常適合模型部署。Serving 通過(guò) Vertex AI 和 Google Cloud 緊密地集成在一起,還和 Kubernetes 以及 Docker 進(jìn)行了集成。

TensorFlow Lite:

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 為開(kāi)發(fā)人員提供了廣泛的語(yǔ)言選項(xiàng)。

PyTorch

PyTorch 在簡(jiǎn)化部署方面有所投入。以前,PyTorch 用戶(hù)需要使用 Flask 或 Django 在模型之上構(gòu)建一個(gè) REST API,但現(xiàn)在他們有了 TorchServe 和 PyTorch Live 的本地部署選項(xiàng)。

TorchServe:

TorchServe 是 AWS 和 Facebook 合作的開(kāi)源部署框架,于 2020 年發(fā)布。它具有端點(diǎn)規(guī)范、模型歸檔和指標(biāo)觀測(cè)等基本功能,但仍然不如 TensorFlow。TorchServe 同時(shí)支持 REST 和 gRPC API。

PyTorch Live:

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 來(lái)創(chuàng)建帶有相關(guān) UI 的跨平臺(tái) iOS 和 Android AI 應(yīng)用。設(shè)備上的推理仍然由 PyTorch Mobile 執(zhí)行。Live 提供了示例項(xiàng)目來(lái)輔助入門(mén),并計(jì)劃在未來(lái)支持音頻和視頻輸入。

小結(jié)

目前,TensorFlow 依然在部署方面占有優(yōu)勢(shì)。Serving 和 TFLite 比 PyTorch 的同類(lèi)型工具要穩(wěn)健一些。而且,將 TFLite 與谷歌的 Coral 設(shè)備一起用于本地 AI 的能力是許多行業(yè)的必備條件。相比之下,PyTorch Live 只專(zhuān)注于移動(dòng)平臺(tái),而 TorchServe 仍處于起步階段。因此綜合來(lái)看,第二輪(部署便捷性)的勝出者是 TensorFlow。

如果你既想用 TensorFlow 的部署基礎(chǔ)設(shè)施,又想訪(fǎng)問(wèn)只能在 PyTorch 中使用的模型,作者推薦使用 ONNX 將模型從 PyTorch 移植到 TensorFlow。

生態(tài)系統(tǒng)對(duì)比:TensorFlow 勝出

2022 年,將 PyTorch 和 TensorFlow 分開(kāi)考慮,一個(gè)重要的因素是它們所處的生態(tài)系統(tǒng)不同。PyTorch 和 TensorFlow 都提供了易于部署、管理、分布式訓(xùn)練的工具,從建模的角度講都是能力很強(qiáng)的框架。相比之下,它們?cè)谏鷳B(tài)系統(tǒng)方面的差異更重要。

PyTorch

Hub:

PyTorch Hub 作為面向研究的官方平臺(tái),用于與預(yù)訓(xùn)練模型共享存儲(chǔ)庫(kù)。Hub 擁有廣泛類(lèi)別的模型,包括用于音頻、視覺(jué)、NLP 任務(wù)的模型,還有用于生成任務(wù)的 GAN 模型。

SpeechBrain:

SpeechBrain 是 PyTorch 的官方開(kāi)源語(yǔ)音工具包。SpeechBrain 能夠完成自動(dòng)語(yǔ)音識(shí)別(ASR)、說(shuō)話(huà)人識(shí)別、驗(yàn)證和分類(lèi)等任務(wù)。如果你不想構(gòu)建任何模型,而是想要一個(gè)具有情感分析、實(shí)體檢測(cè)等功能的即插即用工具,你可以選擇使用 AssemblyAI 的 Speech-to-Text API。

當(dāng)然,PyTorch 的工具頁(yè)面還有很多其他有用的庫(kù),包括為計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理量身定制的庫(kù),例如 fast.ai。

TorchElastic:

TorchElastic 是 AWS 和 Facebook 2020 年聯(lián)合發(fā)布的分布式訓(xùn)練工具,可管理工作進(jìn)程并協(xié)調(diào)重啟行為,以便用戶(hù)在計(jì)算節(jié)點(diǎn)集群上訓(xùn)練模型,這些節(jié)點(diǎn)可以動(dòng)態(tài)變化而不會(huì)影響訓(xùn)練。因此,TorchElastic 可防止因服務(wù)器維護(hù)或網(wǎng)絡(luò)問(wèn)題等導(dǎo)致的災(zāi)難性故障,不會(huì)丟失訓(xùn)練進(jìn)度。TorchElastic 具有與 Kubernetes 集成的特性,并已集成到 PyTorch 1.9+ 中。

TorchX:

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è)。

Lightning:

PyTorch Lightning 有時(shí)被稱(chēng)為 PyTorch 的 Keras。雖然這種類(lèi)比并不準(zhǔn)確,但 Lightning 的確是簡(jiǎn)化 PyTorch 中模型工程和訓(xùn)練過(guò)程的有用工具,自 2019 年首次發(fā)布以來(lái)已經(jīng)逐漸趨于成熟。Lightning 以面向?qū)ο蟮姆绞教幚斫_^(guò)程,定義了可重用和可跨項(xiàng)目使用的可共享組件。

TensorFlow

Hub:

TensorFlow Hub 是一個(gè)經(jīng)過(guò)訓(xùn)練的機(jī)器學(xué)習(xí)模型庫(kù),可以進(jìn)行微調(diào),讓用戶(hù)只需幾行代碼就能使用像 BERT 這樣的模型。Hub 包含適用于不同用例的 TensorFlow、TensorFlow Lite 和 TensorFlow.js 模型,可用于圖像、視頻、音頻和文本處理。

Model Garden:

如果現(xiàn)成的預(yù)訓(xùn)練模型不適用于用戶(hù)的應(yīng)用,那么 TensorFlow 的存儲(chǔ)庫(kù) Model Garden 可以提供 SOTA 模型的源代碼。對(duì)于想要深入了解模型工作原理,或根據(jù)自己的需要修改模型的用戶(hù),Model Garden 將非常有用。

Model Garden 包含谷歌維護(hù)的官方模型、研究人員維護(hù)的研究模型和社區(qū)維護(hù)的精選社區(qū)模型。TensorFlow 的長(zhǎng)期目標(biāo)是在 Hub 上提供來(lái)自 Model Garden 的模型的預(yù)訓(xùn)練版本,并使 Hub 上的預(yù)訓(xùn)練模型在 Model Garden 中具有可用的源代碼。

Extended(TFX):

TensorFlow Extended 是 TensorFlow 用于模型部署的端到端平臺(tái)。該平臺(tái)的功能強(qiáng)大,包括:加載、驗(yàn)證、分析和轉(zhuǎn)換數(shù)據(jù);訓(xùn)練和評(píng)估模型;使用 Serving 或 Lite 部署模型;跟蹤 artifact 及其依賴(lài)項(xiàng)。TFX 還可以與 Jupyter 或 Colab 一起使用,并且可以使用 Apache Airflow/Beam 或 Kubernetes 進(jìn)行編排。TFX 與 Google Cloud 緊密集成,可與 Vertex AI Pipelines 一起使用。

Vertex AI:

Vertex AI 是 Google Cloud 今年剛剛發(fā)布的統(tǒng)一機(jī)器學(xué)習(xí)平臺(tái),旨在統(tǒng)一 GCP、AI Platform 和 AutoML,成為一個(gè)平臺(tái)。Vertex AI 能夠以無(wú)服務(wù)器方式編排工作流,幫助用戶(hù)自動(dòng)化、監(jiān)控和管理機(jī)器學(xué)習(xí)系統(tǒng)。Vertex AI 還可以存儲(chǔ)工作流的 artifact,讓用戶(hù)可以跟蹤依賴(lài)項(xiàng)和模型的訓(xùn)練數(shù)據(jù)、超參數(shù)和源代碼。

Coral:

盡管有各種各樣的 SaaS 公司依賴(lài)基于云的人工智能,但許多行業(yè)對(duì)本地人工智能的需求也在不斷增長(zhǎng),Google Coral 就是為了滿(mǎn)足這一需求而創(chuàng)建的。Coral 是一個(gè)完整的工具包,可以使用本地 AI 構(gòu)建產(chǎn)品。Coral 于 2020 年發(fā)布,解決了部署部分 TFLite 中提到的實(shí)現(xiàn)板載 AI 的問(wèn)題,克服了隱私和效率等方面的困難。

Coral 提供了一系列用于原型設(shè)計(jì)、生產(chǎn)和傳感的硬件產(chǎn)品,其中一些本質(zhì)上是增強(qiáng)型的樹(shù)莓派,專(zhuān)為 AI 應(yīng)用程序創(chuàng)建,能夠利用 Edge TPU 在低功耗設(shè)備上進(jìn)行高性能推理。Coral 還提供用于圖像分割、姿態(tài)估計(jì)、語(yǔ)音識(shí)別等任務(wù)的預(yù)編譯模型,為希望創(chuàng)建本地 AI 系統(tǒng)的開(kāi)發(fā)人員提供支持。創(chuàng)建模型的基本步驟如下面的流程圖所示。

 

TensorFlow.js:

TensorFlow.js 是一個(gè)用于機(jī)器學(xué)習(xí)的 JavaScript 庫(kù),允許用戶(hù)使用 Node.js 在瀏覽器和服務(wù)器端訓(xùn)練和部署模型。

Cloud:

TensorFlow Cloud 是一個(gè)可以將本地環(huán)境連接到 Google Cloud 的庫(kù),它的 API 旨在彌補(bǔ)本地機(jī)器上模型構(gòu)建和調(diào)試與 GCP 上分布式訓(xùn)練和超參數(shù)調(diào)整之間的差距,而無(wú)需使用 Cloud Console。

Colab:

Google Colab 是一個(gè)基于云的 notebook 環(huán)境,與 Jupyter 非常相似。Colab 易于連接到 Google Cloud 進(jìn)行 GPU 或 TPU 訓(xùn)練,并且 Colab 還可以和 PyTorch 一起使用。

Playground:

Playground 是一個(gè)小而精致的可視化工具,用于幫助用戶(hù)理解神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)。要戶(hù)可以更改 Playground 內(nèi)置神經(jīng)網(wǎng)絡(luò)的層數(shù)和大小,以實(shí)時(shí)查看神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)特征的,用戶(hù)還可以看到改變學(xué)習(xí)率和正則化強(qiáng)度等超參數(shù)如何影響不同數(shù)據(jù)集的學(xué)習(xí)過(guò)程。Playground 允許實(shí)時(shí)播放學(xué)習(xí)過(guò)程,以高度直觀的方式查看輸入在訓(xùn)練過(guò)程中是如何轉(zhuǎn)換的。Playground 還提供了一個(gè)開(kāi)源的小型神經(jīng)網(wǎng)絡(luò)庫(kù),是它自身的構(gòu)建基礎(chǔ),用戶(hù)能夠查看其源代碼的具體細(xì)節(jié)。

Datasets:

谷歌研究院的 Datasets 是谷歌定期發(fā)布的數(shù)據(jù)集的整合資源。谷歌還提供了數(shù)據(jù)集搜索以訪(fǎng)問(wèn)更廣泛的數(shù)據(jù)集資源。當(dāng)然,PyTorch 用戶(hù)也可以利用這些數(shù)據(jù)集。

小結(jié)

總的來(lái)說(shuō),盡管 PyTorch 和 TensorFlow 有很多相似和共享的資源,但在生態(tài)系統(tǒng)方面,終究是 TensorFlow 更勝一籌。谷歌投入巨資確保深度學(xué)習(xí)的每個(gè)相關(guān)領(lǐng)域都有完善的產(chǎn)品。與 Google Cloud 和 TFX 的緊密集成使端到端的開(kāi)發(fā)過(guò)程變得輕而易舉,而將模型移植到 Google Coral 設(shè)備的便利性讓 TensorFlow 在某些行業(yè)取得了壓倒性的勝利。

我應(yīng)該選 PyTorch 還是 TensorFlow?

正如期望的那樣,PyTorch 與 TensorFlow 還沒(méi)有決出明確的勝負(fù)。只能說(shuō),某一個(gè)框架在特定用例方面是優(yōu)于另一個(gè)框架的。為了幫助讀者做出選擇,作者匯總了一些建議。在下面的流程圖中,每個(gè)圖表都針對(duì)不同的興趣領(lǐng)域量身定制。

如果我在業(yè)界怎么辦?

如果在工業(yè)界執(zhí)行深度學(xué)習(xí)工程任務(wù),你很可能會(huì)使用 TensorFlow,并且應(yīng)該堅(jiān)持使用它。對(duì)于需要將模型投入生產(chǎn)的人來(lái)說(shuō),TensorFlow 強(qiáng)大的部署框架和端到端的 TensorFlow Extended 平臺(tái)是很珍貴的。能在 gRPC 服務(wù)器上進(jìn)行輕松部署以及模型監(jiān)控和工件跟蹤是行業(yè)應(yīng)用的關(guān)鍵。

鑒于 PyTorch 最近發(fā)布了 TorchServe,如果你需要訪(fǎng)問(wèn)僅在 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 庫(kù),并且 DeepMind 的 Acme 框架是在 TensorFlow 中實(shí)現(xiàn)的。OpenAI 的 baseline 模型存儲(chǔ)庫(kù)也是在 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,被稱(chēng)為「Sonnet for JAX」,是一個(gè)建立在 JAX 之上的神經(jīng)網(wǎng)絡(luò)庫(kù),如果你正在考慮 JAX,那么 Haiku 值得你去探索。如果你不進(jìn)行 TPU 訓(xùn)練,那最好是堅(jiān)持使用 PyTorch。

無(wú)論選擇哪種框架,你都應(yīng)該在 2022 年密切關(guān)注 JAX。

總之,在學(xué)術(shù)界,如果需要選擇一個(gè)框架,請(qǐng)選擇 PyTorch。

如果我是一名教授怎么辦?

如果你是一位教授,在深度學(xué)習(xí)課程中使用哪種框架取決于每一門(mén)課程的目標(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í)間來(lái)了解框架之間的差異可能很有價(jià)值。如果課程是機(jī)器學(xué)習(xí)大型課程的一部分,其中有許多課程專(zhuān)門(mén)針對(duì)不同的主題,最好堅(jiān)持使用最適合課程材料的框架,而不是嘗試同時(shí)接觸兩者。

如果我正在嘗試尋求職業(yè)的轉(zhuǎn)變?cè)撛趺崔k?

如果想在職業(yè)生涯中尋求一些轉(zhuǎn)變,PyTorch 或 TensorFlow 都是不錯(cuò)的選擇。在這種情況下,你可以做的最重要的事情是證明自己可以帶來(lái)額外價(jià)值,因此擁有復(fù)合項(xiàng)目經(jīng)驗(yàn)至關(guān)重要。將深度學(xué)習(xí)應(yīng)用于創(chuàng)造性用例來(lái)打破常規(guī),或者通過(guò)端到端的項(xiàng)目表明自己已做好迎接行業(yè)的準(zhǔn)備,都能讓自己處于不敗之地。

因此,建議使用可以讓你工作更輕松的任何框架,這比熟悉特定框架的 API 重要得多。話(huà)雖如此,如果你對(duì)框架完全不熟悉,請(qǐng)使用 TensorFlow,因?yàn)樗鞘走x的行業(yè)框架。下圖中匯總了各種職業(yè)網(wǎng)站的每個(gè)框架職位的發(fā)布數(shù)量,TensorFlow 遠(yuǎn)遠(yuǎn)超過(guò)了 PyTorch。

總之,如果你有使用 PyTorch 的特定原因,例如為 OpenAI 工作,或者使用 TensorFlow 對(duì)你來(lái)說(shuō)非常不直觀,那么請(qǐng)隨意。但一般的建議是專(zhuān)注于 TensorFlow。

如果我是業(yè)余愛(ài)好者,怎么選?

如果你是個(gè)深度學(xué)習(xí)愛(ài)好者,那么你使用的框架將取決于你的目標(biāo)。如果將深度學(xué)習(xí)模型作為某個(gè)較大項(xiàng)目的一部分來(lái)實(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í),那使用哪種框架取決于你的背景。一般來(lái)說(shuō),PyTorch 可能是更好的選擇,特別是如果你一直習(xí)慣使用 Python 工作。

如果我是個(gè)初學(xué)者,怎么選?

如果你是一個(gè)對(duì)深度學(xué)習(xí)感興趣并且只是想入門(mén)的初學(xué)者,建議使用 Keras。利用其高級(jí)組件,你可以輕松地開(kāi)始了解深度學(xué)習(xí)的基礎(chǔ)知識(shí)。不過(guò),一旦準(zhǔn)備更深入地了解深度學(xué)習(xí)的具體細(xì)節(jié),你會(huì)面臨幾個(gè)選擇:

如果你不想安裝新框架,并且擔(dān)心能否適應(yīng)新的 API,那可以嘗試從 Keras 「下降」到 TensorFlow。如果 TensorFlow 令你困惑,請(qǐng)嘗試轉(zhuǎn)向 PyTorch。

如果你想要一個(gè)更像 Python 的框架,那么遷移到 PyTorch 可能是你最好的選擇。在這種情況下,必須安裝新框架并可能重寫(xiě)自定義腳本。此外,如果 PyTorch 對(duì)你來(lái)說(shuō)有點(diǎn)麻煩,你可以使用 PyTorch Lightning 劃分你的代碼并擺脫一些樣板。

如果你是一個(gè)完完全全的初學(xué)者,可以考慮觀看一些 TensorFlow 和 PyTorch 的 YouTube 教程,以確定哪個(gè)框架對(duì)自己來(lái)說(shuō)更直觀。

寫(xiě)在最后

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/

【本文是51CTO專(zhuān)欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】  

戳這里,看該作者更多好文 

 

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2021-05-24 15:28:55

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2017-03-02 14:52:46

2022-05-23 09:56:04

前端ReactJSFlutter

2021-07-01 16:45:17

PyTorchTensorflow 機(jī)器學(xué)習(xí)

2022-01-06 10:04:17

深度學(xué)習(xí)編程人工智能

2021-07-27 06:49:11

數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)

2017-03-16 15:38:39

設(shè)計(jì)策略開(kāi)發(fā)技術(shù)測(cè)試

2019-03-10 22:22:06

PyTorchKeras深度學(xué)習(xí)

2010-07-14 11:16:16

vSphereHyper-VXenServer

2017-03-01 20:18:04

2019-09-01 19:19:04

TensorFlowPyTorch深度學(xué)習(xí)

2021-01-24 23:06:15

存儲(chǔ)瀏覽器工具

2022-03-14 13:59:49

PyTorchTensorFlowAI

2022-09-21 10:40:57

TensorFlowPyTorchJAX

2024-04-10 08:01:40

2021-12-14 18:20:23

Github技巧前端

2020-10-15 11:22:34

PyTorchTensorFlow機(jī)器學(xué)習(xí)

2019-10-21 13:40:20

代碼開(kāi)發(fā)工具

2017-10-11 06:04:04

2023-10-05 08:58:23

DNS服務(wù)運(yùn)營(yíng)商
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)