2022 年的 PyTorch 与 TensorFlow

你应该在 2022 年使用 PyTorch 还是 TensorFlow?本指南介绍了 PyTorch 与 TensorFlow 的主要优缺点,以及如何选择正确的框架。

PyTorch 和 TensorFlow 是当今最流行的两个深度学习框架。关于哪个框架更好的争论是一个长期存在的争论点,每个阵营都有自己的狂热支持者。

PyTorch 和 TensorFlow 在它们相对较短的生命周期中发展得如此迅速,以至于争论的格局不断发展。过时或不完整的信息很丰富,并进一步混淆了关于哪个框架在给定领域占上风的复杂讨论。

虽然 TensorFlow 以专注于行业的框架而著称,而 PyTorch 以专注于研究的框架而著称,但我们将看到这些概念部分源于过时的信息。到 2022 年,关于哪个框架占主导地位的讨论将更加微妙 - 现在让我们探索这些差异。

实际考虑PyTorch 与 TensorFlow - 模型可用性PyTorch 与 TensorFlow - 部署PyTorch 与 TensorFlow - 生态系统我应该使用 PyTorch 还是 TensorFlow?最后的话

实际考虑

PyTorch 和 TensorFlow 都拥有独特的开发故事和复杂的设计决策历史。此前,这使得比较两者成为关于它们当前特性和推测未来特性的复杂技术讨论。鉴于这两个框架自成立以来都呈指数级成熟,因此许多技术差异在这一点上已经不复存在。

幸运的是,对于我们这些不想让自己的眼睛瞪大的人来说,PyTorch 与 TensorFlow 的争论目前归结为三个实际考虑因素:

  1. **模型可用性:**** 随着深度学习领域逐年扩大,模型依次变得越来越大,从头开始训练最先进 (SOTA) 模型已不再可行。幸运的是,有许多公开可用的 SOTA 模型,在可能的情况下利用它们很重要。
  2. ***部署基础设施:*****如果不能投入使用,训练性能良好的模型就毫无意义。缩短部署时间至关重要,尤其是随着微服务业务模型的日益普及;高效的部署有可能使许多以机器学习为中心的企业成败。
  3. ***生态系统:*****深度学习不再局限于高度受控环境中的特定用例。AI 正在为一系列行业注入新的力量,因此一个位于更大生态系统中的框架很重要,可以促进移动、本地和服务器应用程序的开发。此外,专用机器学习硬件(例如 Google 的Edge TPU)的出现意味着成功的从业者需要使用可以与该硬件很好地集成的框架。

我们将依次探讨这三个实际考虑因素中的每一个,然后就在不同领域使用哪个框架提供我们的建议。

PyTorch 与 TensorFlow - 模型可用性

从头开始实施成功的深度学习模型可能是一项非常棘手的任务,尤其是对于 NLP 等工程和优化困难的应用程序。SOTA 模型日益复杂,使得训练和调优对于小型企业来说根本不切实际,几乎是不可能完成的任务。OpenAI 的 GPT-3 有超过 1750 亿个参数,GPT-4将有超过100 万亿个参数。初创公司和研究人员都没有自己的计算资源来利用和探索这些模型,因此获得用于迁移学习、微调或开箱即用推理的预训练模型是非常宝贵的。

在模型可用性方面,PyTorch 和 TensorFlow 分歧很大。PyTorch 和 TensorFlow 都有自己的官方模型存储库,我们将在下面的生态系统部分进行探讨,但从业者可能希望利用其他来源的模型。让我们对每个框架的模型可用性进行定量分析。

拥抱脸

HuggingFace只需几行代码就可以将经过训练和调整的 SOTA 模型整合到您的管道中。

当我们比较 PyTorch 和 TensorFlow 的 HuggingFace 模型可用性时,结果令人震惊。下面我们看到了 HuggingFace 上可用模型总数的图表,这些模型是 PyTorch 或 TensorFlow 独有的,或可用于这两个框架。正如我们所看到的,可在 PyTorch 中专门使用的模型数量绝对让竞争对手大吃一惊。几乎 85% 的模型是 PyTorch独占的,即使是那些非独占的模型也有大约 50% 的机会在 PyTorch 中可用。相比之下,只有大约 16% 的模型可用于 TensorFlow,只有大约 8% 是 TensorFlow 独有的。

2022 年的 PyTorch 与 TensorFlow_第1张图片

如果我们将我们的权限范围缩小到 HuggingFace 上最流行30 个 模型,我们会看到类似的结果。前 30 个模型中甚至没有三分之二在 TensorFlow 中可用,而所有模型都在 PyTorch 中可用。有零点前30车型是TensorFlow排斥。

2022 年的 PyTorch 与 TensorFlow_第2张图片

调查报告

特别是对于研究从业者来说,从最近发表的论文中获取模型至关重要。尝试在不同的框架中重新创建您想要探索的新模型会浪费宝贵的时间,因此能够克隆存储库并立即开始试验意味着您可以专注于重要的工作。

鉴于 PyTorch 是事实上的研究框架,我们预计我们在 HuggingFace 上观察到的趋势将继续进入整个研究社区;我们的直觉是正确的。

我们将过去几年八种顶级研究期刊的数据汇总到下图,该图显示了使用 PyTorch 或 TensorFlow 的出版物的相对比例。如您所见,PyTorch 的采用非常迅速,并且在短短几年内,使用率从大约 7% 增长到近 80% 使用 PyTorch 或 TensorFlow 的论文。

2022 年的 PyTorch 与 TensorFlow_第3张图片数据源

这种快速采用的大部分原因是由于 TensorFlow 1 的困难在研究背景下加剧,导致研究人员寻找更新的替代品 PyTorch。虽然 TensorFlow 的许多问题在 2019 年发布的 TensorFlow 2 中得到了解决,但 PyTorch 的发展势头足以让它保持自己作为既定的以研究为中心的框架的地位,至少从社区的角度来看是这样。

如果我们查看迁移框架的研究人员的比例,我们可以看到相同的模式。当我们查看 2018 年和 2019 年使用 PyTorch 或 TensorFlow 的作者的出版物时,我们发现 2018 年使用 TensorFlow的大多数作者(55%)在 2019 年迁移到 PyTorch,而绝大多数使用 PyTorch 的作者2018 年继续使用 PyTorch 2019(85%)。这些数据在下面的桑基图中可视化,其中左侧对应 2018 年,右侧对应 2019 年。请注意,这些数据代表 2018 年每个框架的用户比例,而不是总数。

2022 年的 PyTorch 与 TensorFlow_第4张图片数据源

细心的读者会注意到,这些数据来自TensorFlow 2 发布之前,但正如我们将在下一节中看到的,这一事实与研究社区无关。

带代码的论文

最后,我们查看来自Papers with Code 的数据- 该网站的使命是创建包含机器学习论文、代码、数据集等的免费开放资源。我们绘制了使用 PyTorch、TensorFlow 或另一个框架,从 2017 年末到本季度按季度汇总数据。我们看到使用 PyTorch 的论文稳步增长——在本季度创建的 4,500 个存储库中,其中*60%在 PyTorch 中实现,只有11%*在 TensorFlow 中实现。

2022 年的 PyTorch 与 TensorFlow_第5张图片数据源

相反,我们看到 TensorFlow 的使用在稳步下降。即使是 2019 年发布的 TensorFlow 2,它解决了使用 TensorFlow 1 进行研究的许多问题,也不足以扭转这一趋势。我们看到TensorFlow 的受欢迎程度几乎单调下降,即使在 TensorFlow 2 发布之后也是如此。

模型可用性 - 最后的话

从上述数据可以明显看出,PyTorch 目前在研究领域占据主导地位。虽然 TensorFlow 2 使利用 TensorFlow 进行研究变得更加容易,但 PyTorch 却让研究人员没有理由回头再试一次 TensorFlow。此外,TensorFlow 1 中的旧研究和 TensorFlow 2 中的新研究之间的向后兼容性问题只会加剧这个问题。

目前,PyTorch 是研究领域的明显赢家,仅仅是因为它已被社区广泛采用,并且大多数出版物/可用模型都使用 PyTorch。

有几个值得注意的例外/注意事项:

  • ***Google AI:*****显然,Google 发表的研究主要使用 TensorFlow。鉴于谷歌比 Facebook 多产(2020 年在 NeurIPS 或 ICML 上发表的文章数量为 292 比 92),一些研究人员可能会发现使用 TensorFlow 或至少精通 TensorFlow 很有用。Google Brain 还将 JAX 与Flax(Google 的 JAX 神经网络库)结合使用。

  • **DeepMind:**** DeepMind 在 2016 年标准化了 TensorFlow 的使用,尽管他们在 2020 年宣布他们正在使用 JAX 来加速他们的研究。在此公告中,他们还概述了他们的 JAX 生态系统,其中最著名的是Haiku,这是他们基于 JAX 的神经网络库。

    DeepMind比 Facebook 多产(2020 年在 NeurIPS 或 ICML 上发表的文章数量为 110 比 92)。DeepMind 创建了Sonnet,它是 TensorFlow 的高级 API,专为研究量身定制,有时也称为“Keras 的研究版本”,这可能对考虑使用 TensorFlow 进行研究的人有用。此外,Deepmind 的Acme 框架对于强化学习从业者来说可能是必不可少的。

  • ***OpenAI:*****另一方面,OpenAI在2020年内部对PyTorch的使用进行了标准化;但是,对于那些从事强化学习的人来说,他们的旧基线存储库是在 TensorFlow 中实现的。Baselines 提供了强化学习算法的高质量实现,因此 TensorFlow 可能是强化学习从业者的最佳选择。

  • JAX: Google 有另一个名为JAX 的框架,它在研究社区中越来越受欢迎。从某种意义上说,与 PyTorch 或 TensorFlow 相比,JAX 的开销要少得多;但它的基本理念与 PyTorch 和 TensorFlow 都不同,因此迁移到 JAX 对大多数人来说可能不是一个好的选择。越来越多的模型/论文使用 JAX,但目前尚不清楚未来几年它在研究社区中相对于 PyTorch 和 TensorFlow 的流行程度。

如果 TensorFlow 想要重新确立自己作为主导研究框架的地位,那么它还有一段漫长而艰巨的旅程,如果不是不可能的话。

PyTorch 与 TensorFlow 辩论的第一轮由 PyTorch发起

PyTorch 与 TensorFlow - 部署

虽然从推理的角度来看,使用 SOTA 模型获得尖端结果是深度学习应用程序的圣杯,但这种理想在行业环境中并不总是实用甚至不可能实现。如果有一个费力且容易出错的过程来使他们的情报可操作,那么访问 SOTA 模型就毫无意义。因此,除了考虑哪个框架可以让您访问最出色的模型之外,重要的是要考虑每个框架中的端到端深度学习过程。

TensorFlow 自成立以来一直是面向部署的应用程序的首选框架,这是有充分理由的。TensorFlow 拥有一系列相关工具,可让端到端深度学习过程变得简单高效。对于具体部署,TensorFlow ServingTensorFlow Lite可让您轻松地在云、服务器、移动设备和 IoT 设备上进行部署。

从部署的角度来看,PyTorch 过去非常乏善可陈,但近年来它一直致力于缩小这一差距。去年推出的TorchServe几周前推出的PyTorch Live提供了急需的本地部署工具,但 PyTorch 是否缩小了部署差距,使其在行业环境中值得使用?让我们来看看。

TensorFlow

TensorFlow 使用静态图提供可扩展的生产,这些图针对推理性能进行了优化。使用 TensorFlow 部署模型时,您可以根据应用程序使用 TensorFlow Serving 或 TensorFlow Lite。

TensorFlow 服务:

TensorFlow Serving用于在服务器上部署 TensorFlow 模型,无论是在内部还是在云端,并且在TensorFlow Extended (TFX) 端到端机器学习平台中使用。Serving 可以轻松地将模型序列化到具有模型标签的明确定义的目录中,并选择使用哪个模型来发出推理请求,同时保持服务器架构和 API 静态。

Serving 允许您在专门的 gRPC 服务器上轻松部署模型,这些服务器运行 Google 的高性能RPC开源框架。gRPC 旨在连接多样化的微服务生态系统,因此这些服务器非常适合模型部署。整体服务通过Vertex AI与Google Cloud紧密集成,并与Kubernetes和Docker集成。

TensorFlow精简版:

TensorFlow Lite (TFLite) 用于在移动或物联网/嵌入式设备上部署 TensorFlow 模型。TFLite压缩和优化模型为这些设备,并为更广泛的地址5点的限制设备上的人工智能-延迟连接性私密性大小, 和功耗。使用相同的管道同时导出基于标准SavedModelsKeras(与 Serving 一起使用)和 TFLite 模型,因此可以比较模型质量。

TFLite 可用于 Android 和 iOS,以及微控制器(带有Bazel或CMake 的ARM )和嵌入式 Linux(例如Coral设备)。TensorFlow 的 Python、Java、C++、JavaScript 和 Swift API(截至今年已归档)为开发人员提供了广泛的语言选择。

PyTorch

PyTorch 已经投资于使部署更容易,以前在这个领域是出了名的乏善可陈。以前,PyTorch 用户需要使用 Flask 或 Django 在模型之上构建 REST API,但现在他们拥有TorchServePyTorch Live形式的本机部署选项。

PyTorch服务

TorchServe是 AWS 和 Facebook(现为 Meta)合作的开源部署框架,于 2020 年发布。它具有端点规范、模型归档和观察指标等基本功能;但它仍然不如 TensorFlow 替代方案。TorchServe 支持 REST 和 gRPC API。

PyTorch 直播

PyTorch于 2019 年首次发布PyTorch Mobile,旨在创建端到端工作流,用于为 Android、iOS 和 Linux 部署优化的机器学习模型。

PyTorch Live于 12 月初发布,以构建在 Mobile 之上。它使用 JavaScript 和 React Native 创建具有相关 UI 的跨平台 iOS 和 Android 人工智能驱动的应用程序。设备上的推理仍然由 PyTorch Mobile 执行。Live 附带示例项目以供引导,并计划在未来支持音频和视频输入

部署 - 最后的话

目前,TensorFlow 在部署方面仍然获胜。Serving 和 TFLite 只是比 PyTorch 的竞争对手更健壮,并且将 TFLite 用于本地 AI 与谷歌的 Coral 设备结合使用的能力是许多行业的必备条件。相比之下,PyTorch Live 只专注于移动端,TorchServe 还处于起步阶段。看看未来几年部署领域如何变化会很有趣,但现在PyTorch 与 TensorFlow 辩论的第 2 轮将转向TensorFlow

关于模型可用性和部署问题的最后说明:对于那些想要使用 TensorFlow 部署基础设施但想要访问仅在 PyTorch 中可用的模型的人,请考虑使用ONNX将模型从 PyTorch 移植到 TensorFlow

PyTorch 与 TensorFlow - 生态系统

2022 年将 PyTorch 和 TensorFlow 分开的最后一个重要考虑因素是它们所处的生态系统。PyTorch 和 TensorFlow 从建模的角度来看都是有能力的框架,在这一点上它们的技术差异不如围绕它们的生态系统重要,它们提供了易于部署、管理、分布式训练等的工具。让我们来看看每个框架的生态系统现在。

PyTorch

中心

除了像 HuggingFace 这样的平台,还有官方的PyTorch Hub——一个以研究为导向的平台,用于与预训练模型共享存储库。Hub 拥有广泛的模型,包括用于音频、视觉和 NLP 的模型。它还具有生成模型,包括用于生成名人面孔的高质量图像的GAN。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzKZVxVQ-1640186524702)(https://lh4.googleusercontent.com/Q_STziz6TIpPtb2lxgLA3G7v9ugxDcX_5D5ZnLBl0ZroHrzfBKy-FXP4KNnUsYrGJn4M8fg32JQWgsX-opK5rNqX0dOxrLffKYib7wKnCAP7wiV2PoCQSH1G9362BHXfkwEMlyjN)]图片来源

语音脑

SpeechBrain是 PyTorch 的官方开源语音工具包。SpeechBrain 支持 ASR、说话人识别、验证和分类等!如果您不想构建任何模型,而是想要一个具有自动章节、情感分析、实体检测等功能的即插即用工具,请查看 AssemblyAI 自己的Speech-to-Text API。

生态系统工具

查看 PyTorch 的工具页面,了解其他可能有用的库,例如为计算机视觉或自然语言处理量身定制的库。这包括fast.ai——一个使用现代最佳实践生成神经网络的流行库。

PyTorch弹性

TorchElastic于 2020 年发布,是 AWS 和 Facebook 合作的结果。它是一种分布式训练工具,可管理工作进程并协调重启行为,以便您可以在计算节点集群上训练模型,这些节点可以动态变化而不会影响训练。因此,TorchElastic 可防止因服务器维护事件或网络问题等问题而导致的灾难性故障,因此您不会丢失训练进度。TorchElastic 具有与 Kubernetes 的集成功能,并已合并到 PyTorch 1.9+ 中。

PyTorchX

TorchX是一个用于快速构建和部署机器学习应用程序的 SDK。TorchX 包括 Training Session Manager API,可将分布式 PyTorch 应用程序启动到受支持的调度程序上。它负责启动分布式作业,同时原生支持由 TorchElastic本地管理的作业。

闪电

PyTorch 闪电有时被称为 PyTorch 的 Keras。虽然这种比较有点误导,但 Lightning 是简化 PyTorch 中模型工程和训练过程的有用工具,自 2019 年首次发布以来,它已经显着成熟。Lightning 以面向对象的方式处理建模过程,定义了可重用和可跨项目使用的可共享组件。有关 Lightning 的更多信息以及其工作流程与普通 PyTorch 的比较,您可以查看本教程。

TensorFlow

中心

TensorFlow Hub是一个经过训练的机器学习模型库,可以进行微调,让您只需几行代码就可以使用像 BERT 这样的模型。Hub 包含适用于不同用例的 TensorFlow、TensorFlow Lite 和 TensorFlow.js 模型,模型可用于图像、视频、音频和文本问题域。开始使用教程这里,或看到的型号列表在这里。

模型花园

如果现成的预训练模型不适用于您的应用程序,那么 TensorFlow 的模型花园是一个存储库,可提供 SOTA 模型的源代码。如果您想深入了解模型的工作原理,或根据自己的需要修改它们,这将很有用 - 除了转移学习和微调之外,序列化的预训练模型无法实现这一点。

模型花园包含 Google 维护的官方模型、研究人员维护的研究模型和社区维护的精选社区模型的目录。TensorFlow 的长期目标是在 Hub 上提供来自 Model Garden 的模型的预训练版本,并使 Hub 上的预训练模型在 Model Garden 中具有可用的源代码。

扩展 (TFX)

TensorFlow Extended是 TensorFlow 用于模型部署的端到端平台。您可以加载、验证、分析和转换数据;训练和评估模型;使用 Serving 或 Lite 部署模型;然后跟踪工件及其依赖项。TFX 可以与 Jupyter 或 Colab 一起使用,并且可以使用 Apache Airflow / Beam或 Kubernetes 进行编排。TFX 与Google Cloud紧密集成,可与 Vertex AI Pipelines 一起使用。

顶点人工智能

Vertex AI是 Google Cloud 的统一机器学习平台。它于今年发布,旨在将GCP、AI Platform和AutoML上的服务统一为一个平台。Vertex AI 可以通过以无服务器方式编排工作流,帮助您自动化、监控和管理机器学习系统。Vertex AI 还可以存储工作流的工件,让您可以跟踪依赖项和模型的训练数据、超参数和源代码。

媒体管道

MediaPipe是用于构建多模式、跨平台应用机器学习管道的框架,可用于人脸检测、多手跟踪、对象检测等。该项目是开源的,并绑定了多种语言,包括 Python、C++ 和 JavaScript。可以在此处找到有关 MediaPipe 及其即用型解决方案入门的更多信息。

珊瑚

虽然有各种各样的 SaaS 公司依赖基于云的人工智能,但许多行业对本地人工智能的需求不断增长。Google Coral就是为了满足这一需求而创建的,它是一个完整的工具包,可以使用本地 AI 构建产品。Coral 于 2020 年发布,解决了部署部分 TFLite 部分中提到的实现板载 AI 的困难,包括隐私和效率。

Coral 提供一系列用于原型设计、生产和传感的硬件产品,其中一些本质上是更强大的 Raspberry Pi,专为 AI 应用程序创建。他们的产品利用Edge TPU在低功耗设备上进行高性能推理。Coral 还提供用于图像分割、姿势估计、语音识别等的预编译模型,为希望创建自己的本地 AI 系统的开发人员提供支架。创建模型的基本步骤可以在下面的流程图中看到。

2022 年的 PyTorch 与 TensorFlow_第6张图片图片来源

TensorFlow.js

TensorFlow.js是一个用于机器学习的 JavaScript 库,允许您使用 Node.js 在浏览器和服务器端训练和部署模型。它们提供了有关如何导入 Python 模型的示例和信息的文档、准备开箱即用的预训练模型以及带有相关代码的现场演示。

TensorFlow Cloud是一个库,可让您将本地环境连接到 Google Cloud。提供的 API 旨在弥补从本地机器上的模型构建和调试到 GCP 上的分布式训练和超参数调整之间的差距,而无需使用 Cloud Console。

科拉布

Google Colab是一个基于云的笔记本环境,与 Jupyter 非常相似。将 Colab 连接到 Google Cloud 进行 GPU 或 TPU 训练很容易。请注意,PyTorch 也可以与 Colab 一起使用。

操场

Playground是一个小而精致的教育工具,用于理解神经网络的基础知识。它在干净的 UI 中提供了一个简单的密集网络。您可以更改网络中的层数及其大小,以实时查看特征是如何学习的。您还可以看到改变学习率和正则化强度等超参数如何影响不同数据集的学习过程。Playground 允许您实时播放学习过程,以高度直观的方式查看输入在训练过程中是如何转换的。Playground 甚至带有一个开源的小型神经网络库,它是在它的基础上构建的,因此您可以了解网络的具体细节。

数据集

谷歌研究的数据集是谷歌定期发布数据集的数据集资源。谷歌还有一个数据集搜索,用于访问更广泛的数据集数据库。PyTorch 用户当然也可以利用这些数据集。

生态系统 - 最后的话

这一轮是三轮中最接近的,但最终 TensorFlow 拥有卓越的生态系统。谷歌投入巨资确保端到端深度学习工作流的每个相关领域都有可用的产品,尽管这些产品的完善程度在这一领域各不相同。尽管如此,与 Google Cloud 和 TFX 的紧密集成使端到端的开发过程变得高效和有条理,而且将模型移植到 Google Coral 设备的便利性让 TensorFlow 在某些行业取得了压倒性的胜利。

第3轮在PyTorch VS TensorFlow辩论去TensorFlow

我应该使用 PyTorch 还是 TensorFlow?

正如您可能期望的那样,PyTorch 与 TensorFlow 的争论没有一个正确的答案——只能说一个框架在特定用例方面优于另一个框架是明智的。为了帮助您决定哪种框架最适合您,我们将我们的建议汇总到下面的流程图中,每个图表都针对不同的兴趣领域量身定制。

如果我在工业界怎么办?

2022 年的 PyTorch 与 TensorFlow_第7张图片

如果您在行业环境中执行深度学习工程,您可能会使用 TensorFlow,并且应该坚持使用它。TensorFlow 强大的部署框架和端到端的 TensorFlow Extended 平台对于需要生产模型的人来说是无价的。在 gRPC 服务器上轻松部署以及模型监控和工件跟踪是行业使用的关键工具。随着最近发布的 TorchServe,如果您有充分的理由,例如需要访问仅在 PyTorch 中可用的 SOTA 模型,您可以考虑使用 PyTorch。在这种情况下,请考虑使用 ONNX 在 TensorFlow 的部署工作流中部署转换后的 PyTorch 模型。

如果您正在构建移动应用程序,鉴于最近发布的 PyTorch Live,您可以考虑使用 PyTorch,除非您需要音频或视频输入,在这种情况下您应该使用 TensorFlow。如果您正在构建利用 AI 的嵌入式系统或 IoT 设备,鉴于 TFLite + Coral 管道,您仍然应该使用 TensorFlow。

底线:如果您必须选择一种框架,请选择TensorFlow

如果我是研究员怎么办?

2022 年的 PyTorch 与 TensorFlow_第8张图片

如果你是一名研究人员,你几乎肯定会使用 PyTorch,现在你应该坚持使用它。PyTorch 是事实上的研究框架,因此大多数 SOTA 模型都适用于/适用于 PyTorch。

这条规则有几个值得注意的例外,最值得注意的是强化学习中的那些应该考虑使用 TensorFlow。TensorFlow 有一个用于强化学习的原生Agents库,并且 Deepmind 的Acme框架是在 TensorFlow 中实现的。OpenAI 的基线模型存储库也在 TensorFlow 中实现,尽管 OpenAI 的Gym可以与 TensorFlow 或 PyTorch 一起使用。如果您打算使用 TensorFlow 进行研究,您还应该查看 Deepmind 的Sonnet以获得更高级别的抽象。

如果你不想使用 TensorFlow,如果你正在做 TPU 训练,你应该考虑探索谷歌的 JAX。它本身不是神经网络框架,而是更接近于具有自动分化能力的 G/TPU 的 NumPy 实现。Deepmind 的Haiku,他们称之为“Sonnet for JAX”,是一个建立在 JAX 之上的神经网络库,如果您正在考虑 JAX,那么值得探索。或者,您可以查看 Google 的Flax。如果您不进行 TPU 训练,现在最好坚持使用 PyTorch。

无论您选择哪种框架,都应该在 2022 年密切关注 JAX,尤其是随着其社区的发展和更多的出版物开始使用它。

底线:如果您需要选择一个框架,请选择PyTorch

如果我是教授呢?

2022 年的 PyTorch 与 TensorFlow_第9张图片

如果您是教授,深度学习课程使用哪种框架取决于课程的目标。如果您的课程的重点是培养具备行业准备的深度学习工程师,他们可以在整个端到端深度学习过程中胜任,而不仅仅是深度学习理论,那么您应该使用 TensorFlow。在这种情况下,接触 TensorFlow 生态系统及其工具以及端到端的实践项目将非常有启发性和价值。

如果您课程的重点是深度学习理论和理解深度学习模型的底层原理,那么您应该使用 PyTorch。如果您正在教授旨在为学生进行深度学习研究做好准备的高级本科课程或早期研究生课程,则尤其如此。

理想情况下,学生应该接触每个框架,尽管单个学期的时间有限,但花一些时间来了解框架之间的差异可能很有价值。如果该课程是机器学习大型课程的一部分,其中有许多课程专门针对不同的主题,最好坚持使用最适合课程材料的框架,而不是尝试同时接触两者。

如果我正在寻找职业变化怎么办?

2022 年的 PyTorch 与 TensorFlow_第10张图片

如果您想改变职业,PyTorch 或 TensorFlow 都是不错的选择。在这种情况下,您可以做的最重要的事情是证明您可以带来外部价值,因此拥有项目组合至关重要。通过将深度学习应用于创造性用例来超越常规,或者通过端到端的项目表明您已做好行业准备,将使您处于良好的位置。

因此,使用您可以更轻松地工作的任何框架。使用对您来说更直观的框架将使您能够有效地构建您的投资组合,这比熟悉特定框架的 API 重要得多。话虽如此,如果您完全与框架无关,请使用 TensorFlow,因为它是首选的行业框架。我们为下图中的每个框架汇总了来自各种职业网站的职位发布数量,TensorFlow 大大击败了 PyTorch。

2022 年的 PyTorch 与 TensorFlow_第11张图片LinkedIn 和 ZipRecruiter 数据对应于在美国发布的所有职位,而 Indeed 数据对应于在美国 11 个主要城市 100 英里范围内发布的职位

底线:如果您有使用 PyTorch 的特定原因,例如为 OpenAI 或 TensorFlow 工作的目标对您来说非常不直观,那么请随意使用它;但我们的建议是专注于TensorFlow

如果我是业余爱好者怎么办?

2022 年的 PyTorch 与 TensorFlow_第12张图片

如果您是对深度学习感兴趣的爱好者,那么您使用的框架将取决于您的目标。如果您将深度学习模型作为某个较大项目的一部分来实施,那么 TensorFlow 可能是您想要使用的,尤其是在您部署到物联网/嵌入式设备时。鉴于 PyTorch Live 的发布,您可以将 PyTorch 用于移动应用程序,但目前 TensorFlow + TFLite 仍然是首选方法。

如果您的目标是为了深度学习而学习深度学习,那么在这种情况下哪种框架最好取决于您的背景。一般来说,PyTorch 在这里可能是更好的选择,特别是如果您习惯于使用 Python 工作。如果您是刚刚开始学习深度学习的初学者,请参阅下一节。

如果我是一个完全初学者怎么办?

2022 年的 PyTorch 与 TensorFlow_第13张图片

如果您是一个对深度学习感兴趣并且只是想入门的初学者,我们建议您使用Keras。使用其高级组件,您可以轻松开始了解深度学习的基础知识。一旦您准备好开始更彻底地了解深度学习的具体细节,您有几个选择:

如果您不想安装新框架,并且担心您的能力将如何转化为新 API,那么您可以尝试从 Keras “下降”到 TensorFlow。根据您的背景,TensorFlow 可能会令人困惑,在这种情况下,请尝试转向 PyTorch。

如果你想要一个更像 Python 的框架,那么迁移到 PyTorch 可能是你最好的选择。在这种情况下,请注意您必须安装新框架并可能重写自定义脚本。此外,如果 PyTorch 对您来说似乎有点麻烦,您可以使用PyTorch Lightning划分您的代码并摆脱一些样板。

如果您是一个完整的初学者,可以考虑在 TensorFlow 和 PyTorch 中观看一些YouTube 教程,以确定哪个框架对您来说更直观。

最后的话

如您所见,PyTorch 与 TensorFlow 的辩论是一场微妙的辩论,其格局在不断变化,过时的信息使得理解这一格局更加困难。2022 年,PyTorch 和 TensorFlow 都是非常成熟的框架,它们的核心深度学习功能重叠明显。今天,每个框架的实际考虑因素,比如它们的模型可用性、部署时间和相关的生态系统,取代了它们的技术差异。

选择任一框架都不会出错,因为两者都有良好的文档、许多学习资源和活跃的社区。虽然 PyTorch在被研究社区爆炸性采用后已成为事实上的研究框架,并且 TensorFlow 仍然是传统的行业框架,但在这两个领域肯定都有各自的用例。

希望我们的建议能帮助您驾驭复杂的 PyTorch 与 TensorFlow 格局!如需更多有用信息,请查看我们博客上的其他内容!

Ref: https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2022/#final-words

你可能感兴趣的:(PyTorch,tensorflow,pytorch,深度学习)