谁是深度学习框架一哥?2022 年,PyTorch 和 TensorFlow 再争霸

0e1fb69d9c83088676b173bd1159425b.png

来源:机器学习研究组订阅

用PyTorch还是TensorFlow,对于大部分深度学习从业者来说真是一个头疼的问题。最近Reddit上有个帖子从三个方面对比了两个框架,结果竟然是平手?

你用PyTorch还是用TensorFlow?

对于不同人群可能有不同的答案,科研人员可能更偏爱PyTorch,因其简单易用,能够快速验证idea来抢占先机发论文。

虽然TensorFlow的差评如海,甚至有用户专门注册一个GitHub账号开个issue来骂TensorFlow,但TensorFlow在工业界大哥的地位PyTorch仍然无法撼动。

b3affe17126417dcfb4a0f8bd387d4b2.png

所以,进入2022年,你决定用PyTorch还是TensorFlow?

旷日持久的甜咸之争

早在2015年11月9日,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)就开放了源代码,其前身是谷歌的神经网络算法库DistBelief。TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现。

到了2017年1月,由Facebook人工智能研究院(FAIR,现在是MAIR)基于Torch推出了PyTorch,主要提供两个高级功能:

  1. 具有强大的GPU加速的张量计算(如NumPy)

  2. 包含自动求导系统的深度神经网络

最近Reddit上关于TensorFlow和PyTorch的讨论又引起了网友的关注。

1a3ae37cba923681a45eb1f7e3554869.png

题主表示,两个框架和他们对应的两种生态系统发展的都是如此迅速,每个阵营都有自己的狂热支持者,也许是时候分析一下他们到底有什么不同了。

目前来说,PyTorch仍然是「研究型」框架,TensorFlow仍然是「工业型」框架,他们之间的争论主要可以归结为三个因素:模型可用性、模型部署、软件生态。

模型可用性

随着深度学习领域的逐年扩大,模型也变得越来越大,从头开始训练sota模型的成本太高,微调已经成为新主流。所以公开的sota模型采用什么框架对于后续的社区生态来说很重要。

在模型可用性方面,PyTorch 和 TensorFlow 分歧很大,PyTorch 和 TensorFlow 都有自己的官方模型存储库,但从业者可能希望利用多个来源的模型。

目前,PyTorch明显在研究领域已经赢麻了,大部分科研人员都在用,并且大多数出版论文和开源模型都在使用 PyTorch。

将过去几年八种顶级研究期刊的数据汇总以后可以看到,PyTorch越来越普遍,并且在短短几年内,论文中的使用率从大约 7% 增长到近 80%。

12808dc00d55c5cf8b843e627465c191.png

虽然2019 年发布的 TensorFlow 2 中解决了大部分TensorFlow残存的问题,但 PyTorch 的发展势头足以让它维持自己在研究领域的地位,至少从社区的角度来看是这样。

cdff3c022ba621eefc14b93cc41b3b4a.png

在Papers with Code网站上的论文中,大部分都使用的是PyTorch框架,并且还在逐渐上升,TensorFlow的市场份额在逐年下降。在过去的三个月里,总共创建了 4,500 个存储库中,其中60%使用 PyTorch 实现,只有11%使用 TensorFlow。

5311062ea216d5ba394943c63af2bece.png

虽然研究主流是PyTorch,但也有例外,Google、DeepMind显然都用TensorFlow来进行研究,OpenAI的一些旧的baseline也都是TensorFlow,直到2020年才全换到PyTorch。

模型部署

如果不能投入生产使用,那训练性能再好的模型都毫无意义。

所以,如何更有效率地完成模型部署至关重要,尤其是随着微服务业务模型的日益普及,高效的部署有可能决定以AI为核心竞争力的公司的成败问题。

TensorFlow 自成立以来一直是面向部署的应用程序的首选框架,TensorFlow Serving和TensorFlow Lite可让用户轻松地在云、服务器、移动设备和 IoT 设备上进行部署。

各大公司在招聘深度学习工程师时,大部分都要求掌握TensorFlow框架。

e78385f0ef7cf8a8a912167ba1b51ea0.png

从部署的角度来看,PyTorch 过去非常乏善可陈,但近年来它也一直致力于缩小这一差距,例如接连推出的TorchServe和PyTorch Live提供了本地部署工具,但仍然只针对移动端,许多部署工具还处于起步阶段。

所以部署便捷性上,TensorFlow完胜。

生态系统

目前深度学习已不再局限于高度受控环境中的特定用例,也就是说,AI可能应用在任何环境,移动端、手机端、网页端都有可能,因此一个具有更大生态系统的框架就显得很重要,它可以促进移动、本地和服务器应用程序的开发。

此外,专用机器学习硬件,例如 Google 的Edge TPU的出现则意味着从业者需要使用可以与该硬件很好地集成的框架。

e94c6f80de4c2d3eb22868e3af829056.png

PyTorch和TensorFlow的相关生态都做得很好。

PyTorch的Hub除了HuggingFace,还有官方的PyTorch Hub,包括用于音频、视觉和 NLP 的模型。它还有一些生成模型,包括用于生成名人面孔的高质量图像的GAN。

75027d47d25f29de874c9fcfc9086e21.png

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

PyTorch Lightning有时被称为 PyTorch 的 Keras,可以简化 PyTorch 中模型工程和训练过程,自 2019 年首次发布以来,已经逐渐成熟。Lightning 以面向对象的方式处理建模过程,定义了一些可重用和可跨项目使用的共享组件。

还有分布式训练工具TorchElastic,可管理工作进程并协调重启行为,以便用户可以在计算节点集群上训练模型,这些节点可以动态变化而不会影响训练,还可防止因服务器维护事件或网络问题等问题而导致的宕机,并且不会因此丢失训练进度。

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

0305343384708945fb1d1a228f405f8a.png

在TensorFlow阵营,TensorFlow Hub是一个经过训练的机器学习模型库,可以进行微调,用户只需几行代码就可以使用像 BERT 这样的模型,Hub中包含适用于不同用例的 TensorFlow、TensorFlow Lite 和 TensorFlow.js 模型,模型可用于图像、视频、音频和文本问题。

443c5ddebc10e7c7ca10edadc32be1c5.png

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

MediaPipe是用于构建多模式、跨平台应用机器学习管道的框架,可用于人脸检测、多手跟踪、对象检测等。该项目是开源的,并绑定了多种语言,包括 Python、C++ 和 JavaScript。

ee73a033f145ecb88eb605f2a89070a3.png

TensorFlow.js是一个用于机器学习的 JavaScript 库,允许您使用 Node.js 在浏览器和服务器端训练和部署模型。

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

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

三项对此完,这两个框架可以说是神仙打架了,各有优劣。

但评论区也有网友表示,我一只脚踏入工业界,但另一只脚还在学术界,不过我在教课的时候还是选择PyTorch,因为TF太不可靠了,接口总是变,尤其是从TF1迁移到TF2的时候。

并且在公司也同样使用PyTorch,因为灵活性更重要。

6e5d4d0f047467fc3dd2403e41853a52.png

如果看完上面的讨论,你还不知道怎么选择适合自己的框架,那英雄联盟中的一位英雄台词或许能对这场甜咸之争带来终极答案。

98f505189eff1168c1c8b45df0af10eb.png

要问我更喜欢什么工具,未免太幼稚了,但我的锤子是我最喜欢的。

参考资料:

https://www.reddit.com/r/MachineLearning/comments/rga91a/d_are_you_using_PyTorch_or_TensorFlow_going_into/

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

4f6b67baf03cea0e63cf18bb1f8de4ef.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习不可信?大脑建模先驱有话说

来源:ScienceAI编辑:萝卜皮在过去的 20 年里,深度学习通过一系列有用的商业应用主导了人工智能的研究和应用。但在耀眼的背后是一些根深蒂固的问题,威胁着技术的提升。例如,典型的深度学习程序无法在一项以上的任务上表…

python模块补充

collections模块 collections模块namedtupe方法。又称具名元组。 from collections import namedtuple point namedtuple(空间坐标, x y z) # x y z可以写成列表形式,元组等可迭代对象 res point(3, 4, 5) print(res) # 空间坐标(x3, y4, z5) print(poin…

《力学》课时二质点运动学(二)

视频链接 1.角位移/角速度/角加速度

ListObject 多条件去重

上一篇将到根据某一条件去重List<Object> 对象链表。本文章根据多条件去重List<Object>去重 1 private List<StaingMD0010> getSecondProductWork(List<StaingMD0010> list) {2 for (int i 0; i < list.size(); i) {3 for (int j 0; …

More than Moore的探索

来源&#xff1a;内容由半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;编译&#xff1a;porsche众所周知&#xff0c;现代电子学于1947年12月16日在新泽西州 Murray Hill的贝尔实验室诞生&#xff0c;在那里物理学家Walter Brattain 首次成功使用一种临时制作的半…

用scikit-learn学习主成分分析(PCA)

在主成分分析&#xff08;PCA&#xff09;原理总结中&#xff0c;我们对主成分分析(以下简称PCA)的原理做了总结&#xff0c;下面我们就总结下如何使用scikit-learn工具来进行PCA降维。 一、scikit-learn PCA类介绍 在scikit-learn中&#xff0c;与PCA相关的类都在sklearn.deco…

开始即结束,Meta元宇宙OS要黄?

来源&#xff1a;七月在线实验室出师未捷身先死&#xff0c;Meta元宇宙操作系统要凉凉了&#xff1f;团队解散&#xff0c;负责人跳槽&#xff01;副总裁亲自发推「辟谣」&#xff0c;但……Facebook进军元宇宙决心&#xff0c;如今要泡汤了&#xff1f;发布元宇宙产品不过瘾&a…

3.1_ 1_ 内存的基础知识

3.1_ 1_ 内存的基础知识 文章目录1.知识总览2.什么是内存&#xff0c;有什么作用进程的运行原理-指令逻辑地址vs物理地址从写程序到程序运行装入模块装入内存装入的三种方式--绝对装入装入的三种方式一静态重定位装入的三种方式- -动态重定位进程运行的基本原理链接的三种方式知…

为什么说黎曼猜想是最重要的数学猜想?

来源&#xff1a;卢老师网站: www.changhai.org作者: 卢昌海老师, 科学人黎曼猜想是一位名叫黎曼 (Bernhard Riemann) 的数学家提出的。黎曼是一位英年早逝的德国数学家&#xff0c; 出生于 1826 年&#xff0c; 去世于 1866 年&#xff0c; 享年还不到 40 岁。黎曼的一生虽然短…

【广搜】Keyboarding

题目描述 给定一个r行c列的在电视上的“虚拟键盘”&#xff0c;通过“上&#xff0c;下&#xff0c;左&#xff0c;右&#xff0c;选择”共5个控制键&#xff0c;你可以移动电视屏幕上的光标来打印文本。一开始&#xff0c;光标在键盘的左上角&#xff0c;每次按方向键&#xf…

3.1_ _2_ 内存管理的概念

知识总览 内存空间的分配和回收 内存空间的扩展 地址转换 内存保护 知识回顾

Yann LeCun:发现智能原理是AI的终极问题 | 独家对话

来源&#xff1a;智源社区对话整理&#xff1a;李梦佳 周致毅导读&#xff1a;在《科学之路&#xff1a;人&#xff0c;机器与未来》一书中&#xff0c;图灵奖得主&#xff0c;卷积网络之父杨立昆&#xff08;Yann LeCun&#xff09;提出&#xff0c;在科学史上&#xff0c;技术…

4.1.2电路交换、报文交换与分组交换

1.网络的掌中宝 2.为什么要进行数据交换 3.数据交换方式 3.1 电话交换 3.2报文交换 3.3分组交换 3.4 报文交换和分组交换 3.5三种数据交换比较总结

leetcode-187-重复的DNA序列

题目描述&#xff1a; 方法一&#xff1a; class Solution:def findRepeatedDnaSequences(self, s: str) -> List[str]:n 10d {}for i in range(len(s)-9):if s[i:i10] in d:d[s[i:i10]] Trueelse:d[s[i:i10]] Falsereturn [i for i in d if d[i]] 方法二&#xff1a; c…

机器人视觉三维成像技术全解析

来源&#xff1a;卢荣胜,史艳琼,胡海兵. 机器人视觉三维成像技术综述[J]链接&#xff1a;http://www.opticsjournal.net/Articles/Abstract/lop/57/4/040001.cshtml原题&#xff1a;机器人视觉三维成像技术综述摘要本文针对智能制造领域机器人视觉感知中的三维视觉成像技术进行…

4.1.3数据报与虚电路

4.1.3数据报与虚电路 文章目录4.1.3数据报与虚电路1.三种数据交换方式比较总结2.数据报方式&虚电路方式3.几种传输单元名词解析4.数据报5.虚电路数据报&虚电路 对比总结1.三种数据交换方式比较总结 2.数据报方式&虚电路方式 3.几种传输单元名词解析 4.数据报 5.虚电…

MIT物理学家观察超冷原子形成量子龙卷风晶体

来源&#xff1a;诸平科学网博客链接地址&#xff1a;https://blog.sciencenet.cn/blog-212210-1319857.htmlJust like the formation of weather patterns on Earth, here a spinning fluid of quantum particles breaks up into a crystal formed from swirling, tornado-lik…