Pytorch OR TensorFlow
发布于 29天前 作者 andy 来自分享

近日,Facebook 在 PyTorch 开发者大会上给出一个数据:


仅在 2019 年上半年,ArXiv 论文中 PyTorch 的引用量增长了 194%;PyTorch 平台的贡献者数量比去年增长了 50% 以上,达到近 1200 人。


PyTorch 正在快速增长,尤其在学术圈中地位飙升,大有取代 “老大哥” TensorFlow,成为机器学习框架 No. 1 的势头。


不过,thegradient 利用多个数据来源,细致分析 2019 年机器学习框架现状,得出结论:PyTorch 主导了学术界,TensorFlow 主导了工业界


这一趋势也可能变化,因为就在昨天,微软、Uber 等宣布将使用 PyTorch 作为公司最重要的机器学习研究和产品工作负载的基础。

在 PyTorch 开发者大会上,Facebook 重磅发布了 PyTorch 1.3,推出一系列新特性,如支持无缝模型部署到移动设备,模型量化以在推理时获得更好的性能,以及前端改进,如命名张量 (name tensors) 等。此外,还推出了一大波工具和库,增加 Cloud TPU 和阿里云支持等。  

自2012年深度学习重新获得重视以来,许多机器学习框架便争相成为研究人员和行业从业人员的新宠。从早期的学术成果Caffe和Theano到庞大的产业支持的PyTorch和TensorFlow,在这么多选择中,到底最流行的是哪一个?


如果你只浏览Reddit,则可能会假设每个人都在用PyTorch。若从Francois Chollet的Twitter来判断,TensorFlow或Keras可能是主流,而PyTorch却停滞不前。


在2019年,机器学习框架之战还有两个主要竞争者:PyTorch和TensorFlow。分析表明,研究人员正在放弃TensorFlow并大量涌向PyTorch。同时,在行业中,Tensorflow当前是首选平台,但从长远来看可能并非如此。
在2018年,PyTorch还是少数。现在,PyTorch已是主流,CVPR使用PyTorch的占 69%,NAACL和ACL中占75%以上,而ICLR和ICML中占50%以上。虽然PyTorch在视觉和语言会议上的统治地位最强(PyTorch与TensorFlow相比是2:1和3:1),但在ICLR和ICML等常规机器学习会议上,PyTorch也比TensorFlow受欢迎。


虽然有人认为PyTorch仍然是一个新兴的框架,试图在TensorFlow主导的世界中开拓一席之地,但数据显示并非如此。除了ICML之外,在任何一次会议上,TensorFlow的增长都与论文的总体增长保持一致。在NAACL、ICLR和ACL,Tensorflow今年的论文数量实际上比去年少。


PyTorch不用担心自己的未来,需要担心的是TensorFlow。

为什么研究人员喜欢PyTorch?


  • 简单。它类似于numpy,非常具有python风格,并且可以轻松地与Python生态系统的其余部分集成。例如,只需在PyTorch模型中的任何地方插入一个pdb断点,它就可以工作了。在TensorFlow中,调试模型需要一个活动会话(active session),并且最终变得更加棘手。
  • 很棒的API。与TensorFlow的API相比,大多数研究人员更喜欢PyTorch的API。一个原因是PyTorch的设计更好,另一个原因是TensorFlow通过多次切换API(例如‘layers’ -> ‘slim’ -> ‘estimators’ -> ‘tf.keras’)把自己搞残了。
  • 性能。尽管事实上PyTorch的动态图提供的优化机会很少,但是有许多传闻称PyTorch的速度和TensorFlow一样快,甚至比TensorFlow还快。目前尚不清楚这是否真的成立,但至少,TensorFlow在这一领域还没有获得决定性的优势。

TensorFlow的研究前景如何?


即使TensorFlow在功能方面与PyTorch不相上下,但PyTorch已经覆盖了社区的大部分。这意味着PyTorch将更容易找到,作者将更有动力在PyTorch中发布代码(以便人们使用它),并且你的合作者很可能会更喜欢PyTorch。因此,如果真的发生的话,任何回到Tensorflow 2.0的迁移都可能很慢。


TensorFlow在Google / DeepMind中将始终拥有一定的受众群体,但不知道Google是否最终会放弃。即使是现在,Google想要招募的许多研究人员已经在不同层次上偏爱PyTorch,而且还听到有人抱怨说Google内部的许多研究人员都希望使用TensorFlow以外的框架。


此外,PyTorch的统治地位可能会开始将Google研究人员与其他研究群体隔离开来。他们不仅很难在外部研究的基础上进行构建,而且外部研究人员也不太可能在Google发布的代码基础上进行构建。

PyTorch和TensorFlow用于生产


尽管PyTorch现在在研究领域占据主导地位,但纵观业界,TensorFlow仍然是主导框架。例如,根据2018年至2019年的招聘网站数据,TensorFlow有1541个新职位,PyTorch有1437个新职位。TensorFlow的Medium文章有3230篇,PyTorch则有1200篇;TensorFlow有13700颗GitHub新星,PyTorch有7200颗,等等。


因此,如果PyTorch在学界中如此流行,为什么它没有在业界获得同样的成功呢?一个显而易见的第一个答案就是(inertia)。Tensorflow比PyTorch早几年问世,业界采用新技术的速度比研究人员慢。另一个原因是TensorFlow在生产方面比PyTorch更好。但是,这是什么意思?


要回答这个问题,我们需要知道研究人员和行业的需求有何不同。


研究人员在意他们能够以多快的速度进行研究,该研究通常是在相对较小的数据集(可以放在一台机器上的数据集)上运行的,并且运行在<8个GPU上。通常,研究人员考虑的是速度而非性能,即哪个能让他们快速实践新想法。相反,业界认为性能是重中之重。尽管将运行速度提高10%对研究人员来说毫无意义,但这可以直接为公司节省数百万美元的费用。


另一个区别是部署。研究人员将在自己的计算机或专用于运行研究工作的服务器群集上进行实验。相反,业界有很多限制/要求:


  • 无Python。一些公司会运行服务器,而高昂的Python运行开销无法承受。
  • 移动。无法在mobile binary中嵌入Python interpreter。
  • 服务。一个全面的功能,如不停机更新模型,无缝切换模型,在预测时间批处理,等等。


TensorFlow是专门针对这些需求而构建的,并为所有这些问题提供了解决方案:图形格式和执行引擎本来就不需要Python,TensorFlow Lite和TensorFlow Serving服务分别考虑了移动和服务。


从历史上看,PyTorch未能满足这些考虑,因此大多数公司目前在生产中使用TensorFlow。
Tensorflow Eager
在 API 级别,TensorFlow eager 模式与 PyTorch 的 eager 模式本质上是相同的。eager 模式为 TensorFlow 提供了 PyTorch 的大部分优势 (易用性、可调试性等)。
PyTorch占领研究界,TensorFlow统治工业界


至此,我们得出了机器学习框架当前的现状:


  • PyTorch 占领了研究界,并试图将其在研究领域的成功推广到工业界。

  • TensorFlow 试图在不牺牲太多生产能力的情况下,遏制其在研究领域的损失。


当然,PyTorch 要在业界产生有意义的影响还需要很长一段时间 ——TensorFlow 太根深蒂固了,而行业变化缓慢。


不过,从 TensorFlow 1.0 过渡到 2.0 会是困难的,这为公司考虑采用 PyTorch 提供了机会。


未来将取决于谁能更好地回答下列问题。


  • 研究人员的偏好会对业界产生多大的影响?


现在这批博士生即将毕业,他们将带上 PyTorch 进入业界。这种偏好是否足够强大,以至于公司会出于招聘目的选择 PyTorch?创业的毕业生会为自己的公司选择 PyTorch 吗 ?


  • TensorFlow 的 eager 模式在可用性方面能赶上 PyTorch 吗?


在线社区给我的印象是,TensorFlow Eager 深受性能 / 内存问题的困扰,而 Autograph 系列也有自己的问题。谷歌将花费大量的工程努力,但 TensorFlow 却受历史包袱拖累。


  • PyTorch 达到生产状态的速度有多快?


PyTorch 仍有许多基本问题问题没有解决 —— 没有好的量化指标、不支持移动设备、服务性等等。在这些问题解决之前,PyTorch 不会成为许多公司的选择。
  • 谷歌在行业上的孤立会伤害它吗?

谷歌推动 TensorFlow 的主要原因之一是帮助其迅速发展的云服务。由于谷歌试图拥有整个 ML 垂直市场,这可能激励竞争的公司 (微软、亚马逊、英伟达等) 支持唯一的替代机器学习框架,即 PyTorch。
读者朋友,你正在用的是 PyTorch 还是 TensorFlow?欢迎来评论,选出你最看好的机器学习框架~
回到顶部