2019 年机器学习框架之争:PyTorch 和 TensorFlow 谁更有胜算?
作者头像
  • 光耀科技
  • 2019-11-21 08:47:37 8

对于机器学习的研究者和从业人员来说,熟练掌握一种机器学习框架是必不可少的一项技能。随着深度学习技术的快速发展,机器学习框架市场也逐渐成熟,目前仍然活跃的主要框架是PyTorch和TensorFlow。本文将从学术界和工业界的视角出发,深入探讨2019年机器学习框架的发展趋势。

自2012年深度学习再度引起广泛关注以来,各种机器学习框架层出不穷,成为研究者和从业者的宠儿。从早期流行的Caffe和Theano,到后来被广泛认可的PyTorch和TensorFlow,这些框架的选择让很多人难以抉择。

如果你仅凭Reddit上的信息判断,可能会认为PyTorch正逐渐成为主流;而根据Twitter上的数据,Keras和TensorFlow可能是更受青睐的框架,PyTorch的热度似乎有所下降。然而,2019年机器学习框架的竞争已经缩减为PyTorch和TensorFlow两大阵营。

一、PyTorch在研究领域的主导地位

通过数据分析可以看出,近年来在各类学术会议上,仅使用PyTorch的论文数量以及使用PyTorch和TensorFlow的论文总数的比例均呈上升趋势。特别是在CVPR、NAACL、ACL、ICLR和ICML等重要会议上,大多数论文都选择了PyTorch。

这些图表的交互版本可以在这里查看:链接

以下是关于PyTorch和TensorFlow使用情况的原始统计数据:

[图表1]

[图表2]

数据显示,截至2019年,PyTorch已经成为主流选择,69%的CVPR论文、75%以上的NAACL和ACL论文,以及50%以上的ICLR和ICML论文都使用了PyTorch。在视觉和语言相关的会议上,PyTorch的使用频率显著高于TensorFlow。

虽然有些人认为PyTorch仍处于起步阶段,但在实际数据面前,这一观点并不成立。TensorFlow在大多数学术会议上的论文数量增长速度并未超过整体论文数量的增长速度。特别是在NAACL、ICLR和ACL上,使用TensorFlow的论文数量反而有所减少。

1. 为什么研究者偏爱PyTorch?

  • 简洁性:PyTorch的使用方式与numpy相似,具备很强的Python风格,易于与其他Python生态系统组件集成。相比之下,TensorFlow需要一个运行中的会话才能进行调试,这使得调试过程变得复杂。

  • 友好的API:大多数研究者更喜欢PyTorch提供的API,因为其设计更为合理,且无需频繁更换API版本,这使得PyTorch的易用性更高。

  • 优秀的性能:尽管PyTorch的动态图限制了优化机会,但已有报道证明其性能与TensorFlow相当甚至更快。

2. TensorFlow在研究领域的前景

即使TensorFlow在性能上与PyTorch相当,但PyTorch已占据了研究社区的大部分用户。这意味着寻找PyTorch版本的算法实现更加容易,研究人员也更倾向于发布PyTorch版本的代码,这反过来促使更多人使用PyTorch。因此,如果将代码移植回TensorFlow 2.0平台,可能需要很长时间。

TensorFlow在Google/DeepMind之外仍有一批固定用户,但越来越多的Google研究员已经更倾向于使用PyTorch。同时,PyTorch的主导地位可能导致Google的研究人员与外部研究社区的联系减少。

TensorFlow 2.0能否挽回部分研究者,还需进一步观察。虽然其动态图模式具有吸引力,但Keras API可能不如预期。

二、工业界的应用

尽管PyTorch在学术界占主导地位,但在工业界,TensorFlow仍然是首选框架。据数据显示,2018年至2019年间,涉及TensorFlow的新职位发布数量为1541个,而涉及PyTorch的数量为1437个。此外,关于TensorFlow的文章数量也远超PyTorch。

为什么PyTorch在学术界如此受欢迎,但在工业界尚未取得同等的成功?主要原因是惯性和技术需求的不同。TensorFlow比PyTorch更早推出,并且工业界采用新技术的速度较慢。此外,TensorFlow更适合生产环境,因为它支持非Python环境、移动设备部署和服务需求。

三、架构趋同

近期,PyTorch引入了即时编译器和“TorchScript”,而TensorFlow宣布在TensorFlow 2.0中默认采用动态图模式。这些措施旨在解决各自框架的弱点。

1. PyTorch TorchScript

PyTorch的即时编译器可以将程序转换为“TorchScript”。这使得可以在不依赖Python的情况下部署模型,或者进行优化。

2. TensorFlow动态图

TensorFlow 2.0默认采用动态图模式,这为模型提供了更高的易用性和可调试性。然而,这也带来了局限性,如无法在非Python环境中部署。

四、机器学习框架的现状

这些因素造就了当前机器学习框架市场的格局。PyTorch在学术界占据主导地位,并试图扩展到工业界。而TensorFlow则在不牺牲生产效率的情况下,试图保持其在研究领域的市场份额。PyTorch在工业界产生重大影响的道路还很长,因为TensorFlow已经在工业界根深蒂固,且工业界变革速度较慢。

未来哪种框架能最终胜出,取决于以下几个因素:

  • 研究人员的倾向是否会影响工业界?
  • TensorFlow的动态图模式能否在易用性方面赶上PyTorch?
  • PyTorch能否在生产环境中快速普及?
  • Google在行业中的孤立是否会削弱TensorFlow的地位?

五、机器学习框架的未来发展

我们尚未充分认识到机器学习框架对研究的影响。它们不仅使研究得以进行,还限制了一些思路的实现。目前看来,PyTorch可能已经达到了研究的局部最优解,但还需要进一步探索其他框架提供的特性。

1. 高阶微分

PyTorch和TensorFlow的核心是自动微分框架。然而,计算高阶导数时,PyTorch和TensorFlow的方法效率较低。Jax框架提供了更高效率的解决方案,同时还可以进行各种函数变换。

2. 代码生成

当前机器学习框架依赖于第三方内核库,这些库可能不够灵活。随着新型硬件和算子的出现,需要更灵活的解决方案来应对这些问题。

六、机器学习框架的未来

对于TensorFlow和PyTorch而言,它们的设计逐渐趋同,不太可能依靠设计获得决定性的胜利。与此同时,这两种框架各有其主导领域——PyTorch在学术界占据主导,而TensorFlow在工业界更受欢迎。

总体来看,我认为PyTorch在未来更有胜算。机器学习仍是一个研究驱动的领域,只要PyTorch在研究领域占据主导地位,工业界就不得不转向PyTorch。

但值得注意的是,机器学习框架和技术本身都在快速变化。五年后使用的模型、硬件和范式可能与现在大相径庭。也许随着另一种计算模型的兴起,PyTorch和TensorFlow之间的竞争也将烟消云散。

无论你更喜欢TensorFlow还是PyTorch,我们共同的目标都是推动机器学习研究,促进人工智能的普及,创造一些令人惊叹的技术。

    本文来源:图灵汇
责任编辑: : 光耀科技
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
胜算TensorFlow框架机器PyTorch学习2019
    下一篇