OpenAI全面使用Pytorch,TensorFlow与PyTorch相爱相杀

1月31日,OpenAI宣布会在未来的项目中使用PyTorch机器学习框架。该公司是由首席科学家马斯克和其他人共同创办的顶级AI研究公司,该公司曾开发AI项目5次击败Dota2世界冠军、利用机器人还原魔方等。

OpenAI选择Pytorch作为深度学习框架 OpenAI表示,他们将深度学习框架PyTorch作为统一的标准,让团队能够更好创建和共享模型。OpenAl选择PyTorch的主要原因是为了提高GPU的大规模研究效率,使用PyTorch也很容易执行新的研究思路,它可以将生成建模中的迭代时间从几周缩短到几天。而且Pytorch也有很多快速增长的开发者社区,很多大型研究机构Facebook等都在使用,推动了技术发展。OpenAI目前已计划将在PyTorch上提供开源的教育资源Spinning Up in Deep RL,这将更便于学习深度强化学习。该公司在一份声明中说:“展望未来,我们将主要使用PyTorch作为我们的深度学习框架,但有时在有特定技术原因时使用其他框架。”

PyTorch与tensorflow的相爱相杀 近几年来,PyTorch与tensorflow相爱相杀,OpenAI这一举动无疑于将Pytorch推向了浪尖。 在线搜索量 在谷歌趋势中,从2017年2月4日到2020年2月4日,PyTorch和TensorFlow在谷歌的搜索量逐渐逼近,差距正在缩小。 Google搜索兴趣(蓝色的是PyTorch,红色的是TensorFlow)

在线求职网站出现频次 根据数据科学家Jeff Hale对两个框架的调研,截止2020年1月26日,在LinkedIn等求职网站上,TensorFlow的平均出现频次是PyTorch的两倍,而在一年前,TensorFlow出现的次数是PyTorch的三倍。 TensorFlow和PyTorch在求职网站上的平均出现频次 两个框架出现频次的占百分比

顶会论文出现次数 从前PyTorch实习生Horace He PyTorch所做的调研发现,当前PyTorch在各大顶会论文中出现的次数处于领先地位。如下图所示,从2017年至2019年,在多个顶会论文中PyTorch出现次数在TensorFlow/PyTorch总出现次数的占比大于50%,意味着PyTorch出现的次数多于TensorFlow。

PyTorch出现次数在TensorFlow/PyTorch总出现次数的占比

为了更细节化比较,下图展示了2016年至2019年间,PyTorch和TensorFlow在NeurlPS会议论文的趋势发展,实线表示PyTorch,虚线表示TensorFlow。从2018年到2019年,PyTorch的论文数量不断逼近TensorFlow的论文数量,从一倍的 差距到相差甚少。在最近的NeurlPS会议上,PyTorch的论文数量为166,而TensorFlow的论文数量为74,前者是后者的两倍。可见PyTorch在学术界越来越受欢迎。 PyTorch和TensorFlow论文在NeurlPS会议的占比

TensorFlow虽仍处于领先地位,但PyTorch正一步步取得进展,逐渐缩小差距。在学术界,PyTorch因其可快速实现和验证想法的优点,已经超越了TensorFlow。 PyTorch PyTorch于2016年10月在Facebook上公开发布,是一个基于Torch的开源机器学习库。PyTorch使用Python作为开发语言,友好直观。PyTorch作为深度学习模型的功能:

  • 支持Python。PyTorch与python数据科学相结合,可以看作是加入GPU支持的numpy,实现强大的GPU加速。
  • 执行代码高效。用户无需等待编写完整的代码即可检查是否有效,因此可以高效运行部分代码并进行实时检查,可以轻松找到出错代码,避免浪费太多时间。
  • 动态计算图。PyTorch提供了一个框架,可以随时构建计算图,甚至可以在运行时更改它们,如果想要改变网络结构,通过一次反向求导技术,可以任意改变神经网络行为,使得任何疯狂想法获得最高速度和最佳灵敏度。 TensorFlow TensorFlow是由Google开发的一个著名深度学习库,以计算图的形式来表示整个计算过程。它具有强大的可视化功能,也可用于高级模型的开发。TensorFlow的功能:
  • 简单的内置高级API。通过使用直观的高级API(如Keras),该库可以构建和训练机器学习模型,使得模型迭代更加快速、易于调试。
  • 随时随地部署模型。无论使用哪种语言,都可以在本地、浏览器或移动设备中训练和部署模型。

PyTorch与TensorFlow之间的区别

  • 生产部署 工业界更注重生产部署,这对于TensorFlow来说无疑是赢家,我们可以使用TensorFlow框架直接在TensorFlow中部署模型,在现有的生态基础上进行算法组合和调优,能更快速给出方案、快速跑通程序来完成特定任务。而在PyTorch中,与最新的稳定版本1.0相比,虽然这些生产部署更易于处理,但是它并没有提供任何框架将模型直接部署到web上,必须要使用Flask或Django作为后端服务器。所以,对于目前的部署生态,TensorFlow比PyTorch更加老练。
  • 计算图构造 TensorFlow使用静态图,这意味着用户首先需要定义模型的计算图,之后不断运行机器学习模型,需要图经过编译然后在执行引擎上执行。然而PyTorch具有创建图的动态特性,每次都会重新构建新的计算图,并且可在运行中操作图,便于调试。 PyTorch与TensorFlow各有自己的特点,功能各有千秋,接下来其他公司将作何选择,让我们拭目以待。 参考链接: [1] https://openai.com/blog/openai-pytorch/ [2] https://hackr.io/blog/pytorch-vs-tensorflow [3] https://towardsdatascience.com/is-pytorch-catching-tensorflow-ca88f9128304