PyTorch和TensorFlow比较 - thegradient


在2019年,机器学习框架之战还有两个主要竞争者:PyTorch和TensorFlow。我的分析表明,研究人员正在放弃TensorFlow并大量涌向PyTorch。

为什么研究人员喜欢PyTorch?

  • 简单。它类似于numpy,非常具有python风格,并且可以轻松地与Python生态系统的其余部分集成。
  • 很棒的API。与TensorFlow的API相比,大多数研究人员更喜欢PyTorch的API。部分原因是因为PyTorch的设计更好,部分原因是TensorFlow通过多次切换API(例如“图层”->“ slim”->“估算器”->“ tf.keras”)而变得残障。
  • 性能。尽管事实上PyTorch的动态图提供的优化机会很少,但有许多传闻称PyTorch的速度甚至于TensorFlow。目前尚不清楚这是否真的成立,但至少,TensorFlow在这一领域还没有获得决定性的优势。

PyTorch和TensorFlow用于生产
尽管PyTorch现在在研究中处于主导地位,但工业界表明TensorFlow仍然是主导框架。
研究人员关心他们能够以多快的速度进行研究,该研究通常是在相对较小的数据集(可以容纳在一台计算机上的数据集)上运行的,并且运行在<8个GPU上。通常,这不是由性能方面的考虑来决定的,而是由他们快速实施新想法的能力来解决的。
另一方面,工业界认为性能是重中之重。尽管将运行时间提高10%对研究人员而言毫无意义,但这可以直接为公司节省数百万美元的费用。
工业界行业有很多限制/要求。
  • 没有Python。一些公司将运行服务器,这些服务器的Python运行时开销太大。
  • 移动。您无法在移动二进制文件中嵌入Python解释器。
  • 服务。功能全面,例如无停机更新模型,在模型之间无缝切换,在预测时进行批处理等。

TensorFlow是专门针对这些要求而构建的,并为所有这些问题提供了解决方案:图形格式和执行引擎本来就不需要Python。TensorFlow Lite和TensorFlow Serving服务分别解决了移动和服务两个事项。
从历史上看,PyTorch未能满足这些考虑,因此大多数公司目前在生产中使用TensorFlow。

因此,我们得出了ML框架的当前状态。PyTorch拥有研究市场,并且正在尝试将这一成功扩展到工业领域。TensorFlow试图在不牺牲太多生产能力的情况下,在研究界中尽其所能。PyTorch对行业产生有意义的影响肯定需要很长时间-TensorFlow根深蒂固且行业发展缓慢。但是,从TensorFlow 1.0到2.0的过渡将很困难,并且为公司评估PyTorch提供了自然点。

未来?
未来谁获胜?将取决于谁能最好地回答以下问题。

  • 研究人员的偏好会在多大程度上影响行业?当前博士学位的毕业生开始毕业时,他们将带来PyTorch。这种偏好是否足够强大,以至于公司会出于招聘目的选择PyTorch?毕业生会创办基于PyTorch的创业公司吗?
  • TensorFlow的热切模式能否在可用性上赶上PyTorch?问题跟踪器和在线社区给我的印象是TensorFlow Eager严重遭受性能/内存 问题的困扰,而Autograph拥有自己的问题份额。谷歌将花费大量的工程精力,但是TensorFlow受到历史包bag的困扰。
  • PyTorch可以多快达到生产状态?PyTorch仍然有许多基本问题尚未解决-没有好的量化指标,移动性,服务性等。在这些问题解决之前,PyTorch甚至不会成为许多公司的选择。PyTorch能否为公司提供足够引人入胜的故事来做出改变?注意:在本文发布之日,PyTorch宣布支持量化和移动。两者都仍处于试验阶段,但代表了PyTorch在这方面的重大进展。
  • Google在行业中的孤立会伤害到它吗?Google推动TensorFlow的主要原因之一是帮助其迅速发展的云服务。由于Google试图拥有整个ML垂直市场,这激励了Google与之竞争的公司(微软,亚马逊,Nvidia)支持唯一的替代机器学习框架。

详情点击标题进入。