TensorFlow 和 PyTorch 框架之争由来已久,近日的一则新闻让 PyTorch 阵营「更添一员大将」。OpenAI 表示,他们已全面转向 PyTorch,并统一自家所有模型的框架标准。
对于深度学习框架的使用,整个人工智能社区大体可以分为两大阵营:TensorFlow 和 PyTorch。有观点认为,PyTorch 更适合研究领域,而实际的工业应用可能更偏向于 TensorFlow。PyTorch 具有用户友好的 API 和对 Python 生态的良好支持,更适合学界。而 TensorFlow 因为用户惯性和对工业生产环境的支持,更适合业界。
近日的一则新闻确实佐证了这个说法。OpenAI——一个研究过 AI 打 Dota2、推出 NLP 预训练模型 GPT-2、以及让机器人单手还原魔方等项目的人工智能研究机构宣布,他们将会全面转向 PyTorch。
从 2017 年 TensorFlow 占绝对优势到现在两大框架处于相对均势,双方的开发团队可能都没有料到 PyTorch 会这么受社区青睐。
用 PyTorch 统一项目标准
在一则简短的博客文章中,OpenAI 表示,他们将会使用 PyTorch 作为统一的深度学习框架。在此之前,他们会基于框架本身的特点和优势在不同的项目中使用不同的框架。
OpenAI 认为,为了让团队更容易地创建和共享模型及其应用,使用 PyTorch 是更好的选择。通过标准化的 PyTorch 框架,OpenAI 可以建立起基于它的平台,使得自家的各种模型和应用都能进行框架和工具的复用。
另外一个选择 PyTorch 的重要原因是:用它来实现各种新的想法特别容易,特别是在 GPU 集群上。OpenAI 在博客中说,自从选择了 PyTorch,他们可以将研究思路到生成模型的迭代开发时间从周压缩到天。这节省了很多的时间。更何况,PyTorch 背后也有着活跃的开发社区,包括 FaceBook 等大型研究机构都在使用。
OpenAI 还在文章中表示,他们的大部分团队已经完成了迁移工作。除非有特定的技术原因,基本上 PyTorch 就是主要的深度学习框架了。例如,OpenAI 在近日推出了 PyTorch 版本的深度强化学习库——「Spinning Up」。
此外,OpenAI 还会在后续的开源计划中公开更多基于 PyTorch 的项目,比如「Block-Sparse GPU Kernels」。这是一种新架构的核,计算速度快于 cuBLAS 和 cuSPARSE。
TF 问题多多,用户转向 PyTorch
诚然,与 TensorFlow 相比,PyTorch 仍在存在性能、工业生态支持等方面的短板。但是不可否认的是,TensorFlow 的诸多问题驱使用户选择了 PyTorch。
首先是易用性的问题。TensorFlow 刚刚问世的时候有着陡峭的学习曲线。要想掌握这个框架,其难度不亚于学习一门新的编程语言。而 PyTorch 在设计之初就非常「Pythonic」,使用起来和 Python 一样简单。
其次是 API 的稳定性。由于 TensorFlow 诞生的时候,业界和学界对于深度学习框架的设计经验不足,所以在 API 的定义、设计和功能实现方面有很多不同的理解,开发者们也走过很多弯路。更何况深度学习本身就是快速发展的,新算法需要快速的 API 实现。这就导致 TensorFlow 的 API 变了又变,还加上了很多 contrib 的 API。相比之下,PyTorch 的 API 迭代更稳定,更没有命名混乱的问题。
基于以上两个原因,PyTorch 相比 TensorFlow 有着更低的上手成本,以及更快速实现的使用特点。因此,经常有新思路的学界就更青睐 PyTorch 一些,毕竟他们需要的是能够快速实现想法,并迅速迭代的深度学习框架。OpenAI 作为一个经常有各种算法和创意的研究机构,使用 PyTorch 也自然更合理一些。
网友评价
对于 OpenAI 彻底拥抱 PyTorch 的新闻,不少 Reddit 网友提出了自己的看法。
一位网友认为,在被 TensorFlow 激怒后,转向 PyTorch 再合理不过了。他同时认为,TF2.0 确实在「拨乱反正」。
另一位也表示赞同,他认为,PyTorch 逐渐变得更好了,而 TF2.0 实际上没有人们想得那么好。另外,与 TensorFlow 相比,PyTorch 的设计和维护者更懂得如何在灵活性、易用性和采纳新技术方面保持平衡。
接下来,社区其他成员将作何抉择?TensorFlow 可要加把劲啦!