不久前,OpenAI宣布会在未来的项目中使用PyTorch机器学习框架。OpenAI是由马斯克和其他人共同创办的顶级AI研究公司,曾开发AI项目5次击败Dota2世界冠军、利用机器人还原魔方等。OpenAI选择Pytorch作为深度学习框架,表示他们将深度学习框架PyTorch作为统一的标准,让团队能够更好创建和共享模型。
OpenAI选择PyTorch的主要原因是为了提高GPU的大规模研究效率,使用PyTorch也很容易执行新的研究思路,它可以将生成建模中的迭代时间从几周缩短到几天。而且Pytorch也有很多快速增长的开发者社区,很多大型研究机构Facebook等都在使用,推动了技术发展。
OpenAI目前已计划将在PyTorch上提供开源的教育资源Spinning Up in Deep RL,这将更便于深度强化学习。该公司在一份声明中说:「展望未来,我们将主要使用PyTorch作为我们的深度学习框架,但有时在有特定技术原因时也会使用其他框架。」近几年来,PyTorch与Tensorflow相爱相杀,OpenAI这一举动无疑于将Pytorch推向了浪尖。
在谷歌搜索趋势中,从2017年2月4日到2020年2月4日,PyTorch和TensorFlow在谷歌的搜索量逐渐逼近,差距正在缩小。根据数据科学家Jeff Hale对两个框架的调研,截止2020年1月26日,在LinkedIn等求职网站上,TensorFlow的平均出现频次是PyTorch的两倍,而在一年前,TensorFlow出现的次数是PyTorch的三倍。
从前PyTorch实习生Horace He所做的调研发现,当前PyTorch在各大顶会论文中出现的次数处于领先地位。如下图所示,从2017年至2019年,在多个顶会论文中PyTorch出现次数在TensorFlow/PyTorch总出现次数的占比大于50%,意味着PyTorch出现的次数多于TensorFlow。
从2018年到2019年,PyTorch的论文数量不断逼近TensorFlow的论文数量,从一倍的差距到相差甚少。在最近的NeurlPS会议上,PyTorch的论文数量为166,而TensorFlow的论文数量为74,前者是后者的两倍。可见PyTorch在学术界越来越受欢迎。TensorFlow虽仍处于领先地位,但PyTorch正一步步取得进展,逐渐缩小差距。
在学术界,PyTorch因其可快速实现和验证想法的优点,已经超越了TensorFlow。PyTorch于2016年10月在Facebook上公开发布,是一个基于Torch的开源机器学习库。PyTorch使用Python作为开发语言,友好直观。PyTorch作为深度学习模型的功能:支持Python。
PyTorch与python数据科学相结合,可以看作是加入GPU支持的numpy,实现强大的GPU加速。执行代码高效。用户无需等待编写完整的代码即可检查是否有效,因此可以高效运行部分代码并进行实时检查,可以轻松找到出错代码,避免浪费太多时间。动态计算图。
PyTorch提供了一个框架,可以随时构建计算图,甚至可以在运行时更改它们,如果想要改变网络结构,通过一次反向求导技术,可以任意改变神经网络行为,使得任何疯狂想法获得最高速度和最佳灵敏度。TensorFlow是由Google开发的一个著名深度学习库,以计算图的形式来表示整个计算过程。它具有强大的可视化功能,也可用于高级模型的开发。TensorFlow的功能:简单的内置高级API。
通过使用直观的高级API(如Keras),该库可以构建和训练机器学习模型,使得模型迭代更加快速、易于调试。随时随地部署模型。无论使用哪种语言,都可以在本地、浏览器或移动设备中训练和部署模型。
工业界更注重生产部署,这对于TensorFlow来说无疑是赢家,我们可以使用TensorFlow框架直接在TensorFlow中部署模型,在现有的生态基础上进行算法组合和调优,能更快速给出方案、快速跑通程序来完成特定任务。而在PyTorch中,与最新的稳定版本1.0相比,虽然这些生产部署更易于处理,但是它并没有提供任何框架将模型直接部署到web上,必须要使用Flask或Django作为后端服务器。
所以,对于目前的部署生态,TensorFlow比PyTorch更加老练。TensorFlow使用静态图,这意味着用户首先需要定义模型的计算图,之后不断运行机器学习模型,需要图经过编译然后在执行引擎上执行。然而PyTorch具有创建图的动态特性,每次都会重新构建新的计算图,并且可在运行中操作图,便于调试。
PyTorch与TensorFlow各有自己的特点,功能各有千秋,接下来其他公司将作何选择,让我们拭目以待。