Horace He 最近发表了一篇文章,文章总结了2019年机器学习框架的状况。该文章使用几个指标表明PyTorch正迅速成为研究领域的主要框架,而部署在商业/工业环境中的应用程序中,占据主导地位的则是TensorFlow。
康奈尔大学(Cornell University)的研究生Horace He统计了有关 PyTorch 或 TensorFlow 的论文数量,这些论文发表在一系列著名的机器学习方向的大会上,如:ECCV、NIPS、ACL、NAACL、ICML、CVPR、ICCV 和 EMNLP。总的来说,2019 年每个重要的大会上发表的大多数论文都是用 PyTorch 实现的。在视觉相关的会议上,用 PyTorch 与用 TensorFlow 的比例为 2:1,而在自然语言相关的会议上,这个比例为 3:1。在更通用的机器学习大会(如 ICLR 何 ICML)上,会议发表的论文中,PyTorch 被引用的次数更多。
他认为,与 TensorFlow 相比 ,PyTorch 取得进展的原因包括其简洁性、简单的用法和直观的 API,以及(至少)可以接受的性能。
另一方面,作者测量行业采用情况的指标表明,TensorFlow 仍然处于领先地位。所用的指标包括:招聘岗位、GitHub 受欢迎程度、媒体文章数量等等。他总结了学术界和工业界之间存在的差距有三倍的原因。首先,很多公司会尽可能地避免 Python 运行时的开销。其次,PyTorch 不支持移动“边缘”机器学习。巧合的是,Facebook 在 PyTorch 1.3 版本中刚刚加入对移动设备的支持,该版本发布于本月早些时候。再者,缺乏围绕服务相关的功能,这意味着 PyTorch 系统比用 TensorFlow 开发的等效系统更难产品化。
在过去的一年中,PyTorch 和 TensorFlow 在很多方面都变得更加趋于相同了。PyTorch 引入了“Torchscrip”和 JIT 编译器,而 TensorFlow 宣布将从 2.0 版本开始转向执行的“Eager模式 ”。Torchscript 本质上是 PyTorch 的图形化表示。从代码中获取图形意味着,我们可以在C++中部署模型并进行优化。TensorFlow 的 Eager 模式提供了一个命令式编程环境,可以立即评估操作,无需构建图形。在优缺点方面,它和 PyTorch 的 Eager 模式类似。它有助于调试,但是,模型无法导出到 Python 之外进行优化以及在移动设备上运行等等。
将来,这两个框架会比现在更加接近。新的竞争者可能会在代码生成或高阶导数(Higher Order Differentiation)等领域挑战它们。他认为一个潜在的竞争者是 JAX。构建它的人就是流行的Autograd项目的开发者,并且其具有正向和反向模式自动微分(auto-differentiation )的特性。这允使得高阶导数的计算速度“比 PyTorch/TensorFlow 能提供的要快几个数量级”。
可以通过 Horace He 的推特和他联系。他已经发布了文中用于生成数据集的代码和交互式图表。
原文链接:
PyTorch and TensorFlow: Which ML Framework is More Popular in Academia and Industry
评论