OpenAI 全面使用 Pytorch,TensorFlow 与 PyTorch 相爱相杀
不久前,OpenAI 宣布会在未来的项目中使用 PyTorch 机器学习框架。OpenAI 是由马斯克和其他人共同创办的顶级 AI 研究公司,曾开发 AI 项目 5 次击败 Dota2 世界冠军、利用机器人还原魔方等。
选择 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。
PyTorch 和 TensorFlow 论文在 NeurlPS 会议的占比
从 2018 年到 2019 年,PyTorch 的论文数量不断逼近 TensorFlow 的论文数量,从一倍的差距到相差甚少。在最近的 NeurlPS 会议上,PyTorch 的论文数量为 166,而 TensorFlow 的论文数量为 74,前者是后者的两倍。可见 PyTorch 在学术界越来越受欢迎。
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