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

极市平台

共 4696字,需浏览 10分钟

 ·

2022-01-10 09:50

↑ 点击蓝字 关注极市平台

来源丨新智元
编辑丨极市平台

极市导读

 

用PyTorch还是TensorFlow,对于大部分深度学习从业者来说真是一个头疼的问题。最近Reddit上有个帖子从三个方面对比了两个框架,结果竟然是平手?>>加入极市CV技术交流群,走在计算机视觉的最前沿


你用PyTorch还是用TensorFlow?

 

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

 

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

 

 

所以,进入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的讨论又引起了网友的关注。

 

 

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

 

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

 

模型可用性


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

 

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

 

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

 

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

 

 

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

 

 

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

 

 

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

 

模型部署


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

 

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

 

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

 

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

 

 

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

 

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

 

生态系统


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

 

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

 

 

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

 

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

 

 

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

 

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

 

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

 

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

 

 

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

 

 

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

 

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

 

 

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,因为灵活性更重要。

 

 

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

 

 

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


参考资料:

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

如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注极市平台,获取最新CV干货

公众号后台回复“transformer”获取最新Transformer综述论文下载~


极市干货
课程/比赛:珠港澳人工智能算法大赛保姆级零基础人工智能教程
算法trick目标检测比赛中的tricks集锦从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述:一文弄懂各种loss function工业图像异常检测最新研究总结(2019-2020)


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~  
浏览 16
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报