在人工智能快速发展的今天,机器学习框架变得炙手可热,它们摇身成为许多研究人员和从业者的新宠。当下,机器学习框架之战有两个主要竞争者:PyTorch 和 TensorFlow。来自康奈尔大学的 Horace He 对二者进行了对比研究,并将研究成果发表在了斯坦福人工智能实验室创办的数字杂志 “The Gradient” 上。他发现:PyTorch 在学界愈发吃香,而业界的首选仍是 TensorFlow。
在研究领域不断提高主导地位的 PyTorch
下图展示了在每个顶级研究会议上,单独使用 PyTorch 的论文与 Tensorflow/PyTorch 论文之间的比率——2019 年的每个主要会议都在 PyTorch 中实现了大多数研究。
下面是 PyTorch 与 TensorFlow 原始计数的图表,它展现出 PyTorch 在研究界的发展速度之快:
在 2018 年,PyTorch 是少数派。现在,它是绝大多数,CVPR 会议中使用 PyTorch 的占 69%,PyTorch 研究在 NAACL 和 ACL 会议中均占 75% 以上,在 ICLR 和 ICML 会议中也有 50% 以上。可以看出,PyTorch 在视觉和语言类会议上的统治地位最强,在诸如 ICLR 和 ICML 之类的通用机器学习会议上也比 TensorFlow 更受欢迎。
那么为什么研究人员如此青睐 PyTorch 呢?Horace 总结出了如下几点原因:
- 简单。它与 numpy 类似,非常具有 python 风格,并且可以轻松地与其他 Python 生态系统集成。
- 很棒的 API。与 TensorFlow 的 API 相比,大多数研究人员更喜欢 PyTorch 的 API。
- 性能。尽管事实上 PyTorch 的动态图提供的优化机会很少,不过,据传闻 PyTorch 的速度甚至快于 TensorFlow。目前尚不清楚这是否为实,但至少 TensorFlow 在这一领域还没有取得决定性优势。
作者 Horace 认为 TensorFlow 的研究前景还有待观察。毕竟目前 PyTorch 已经覆盖到很多社区,这意味着 PyTorch 的实现将更容易找到,人们也更有动力在 PyTorch 中发布代码。当然,TensorFlow 在 Google/DeepMind 中还是会始终拥有一定的受众群体,但它的地位仍受到威胁,因为“有人抱怨说 Google 内部的许多研究人员都希望使用 TensorFlow 以外的框架”。
“此外,PyTorch 的统治地位可能会开始切断 Google 研究人员与其他研究社区的联系。他们不仅很难在外部研究的基础上进行构建,而且外部研究人员也不太可能在 Google 发布的代码基础上进行构建。”这是需要警惕的地方。
用于生产的 PyTorch 和 TensorFlow
尽管 PyTorch 现在在研究中占据重要地位,但 TensorFlow 仍然是行业内部的主导框架。根据公开数据,TensorFlow 的招募职位多于 PyTorch,GitHub 上 13.7k 的 TensorFlow 星标也多于 7.2k 的 PyTorch 星标。
PyTorch 在业界为什么没有取得与学界同等的受欢迎程度呢?首要答案是一贯性。TensorFlow 早于 PyTorch 出现,而且行业采用新技术的速度比研究人员要慢。另一个原因是 TensorFlow 在生产方面更胜 PyTorch 一筹。
这就要从研究人员和行业的不同需求讲起。研究人员关心他们能够以多快的速度进行研究,该研究通常是在相对较小的数据集(可以容纳在一台计算机上的数据集)上运行的。通常,这与性能方面的考虑无关,而是依靠他们快速实施新想法的能力来决定。与之相反,业界认为性能是重中之重。将运行时间提高 10% 对研究人员而言意义不大,但对公司来说,这可以直接节省数百万美元的费用。
另一个区别在于部署。研究人员在自己的计算机或专用于运行研究工作的服务器集群上进行实验。行业则有很多限制和要求:
- No Python。一些公司会运行服务器,这些服务器的 Python 运行时开销太大。
- 移动。无法在移动二进制文件中嵌入 Python 解释器。
- 服务。要求功能全面,例如无停机更新模型、在模型之间无缝切换、在预测时进行批处理等。
TensorFlow 恰巧专门针对这些要求而构建,并为所有这些问题提供了解决方案:图形格式和执行引擎本来就不需要 Python,并且 TensorFlow Lite 和 TensorFlow Serving 能够分别解决移动和服务注意事项。
从历史上看,PyTorch 未能满足这些考虑,因此大多数公司目前在生产中使用 TensorFlow。
机器学习框架的现状
以上事实折射出机器学习框架的当前状态:PyTorch 拥有研究市场,并且正在尝试扩展到行业领域;TensorFlow 试图在不牺牲太多生产力的情况下,在研究界中尽其所能。TensorFlow 目前在行业中根深蒂固,且行业发展较为缓慢,因此 PyTorch 对行业产生有意义的影响肯定还需要相当长时间。不过,从 TensorFlow 1.0 到 2.0 的过渡将存在一些困难,这也恰好为公司评估 PyTorch 提供了自然机遇。
Horace 认为,未来将取决于谁能够更好地回答以下问题:
研究人员的偏好会在多大程度上影响行业?当前的博士生开始毕业时,他们将携带 PyTorch 技能。关键在于这种偏好是否足够强大,以至于公司会出于招聘目的选择 PyTorch。另一种可能是,毕业生会创办基于 PyTorch 的创业公司吗?
TensorFlow 的 Eager 模式能否赶上 PyTorch 的可用性?TensorFlow Eager 受到性能/内存问题的严重困扰,Google 将在这方面花费大量工程精力。
PyTorch 可以多快达到生产状态?PyTorch 仍然有许多基本问题尚未解决:没有好的量化指标、不支持移动、服务问题等等。在这些问题解决之前,PyTorch 不会成为许多公司的选择。 它能否做出足够的改变?(最新消息:近期 PyTorch 宣布支持量化和移动技术,两者都仍处于试验阶段,表示着 PyTorch 在这方面终于有了重大进展。)
Google 在行业中的孤立会使自身受到伤害吗?Google 推动 TensorFlow 的主要原因之一是帮助其迅速发展的云服务。由于 Google 试图拥有整个 ML 垂直市场,这激励了与 Google 竞争的公司(微软、亚马逊、Nvidia 等),来支持唯一的替代机器学习框架。
最后,Horace 指出,不仅仅是快速发展的框架,机器学习研究本身也处于不断变化的状态。框架不仅会发生变化,而且 5 年内使用的模型/硬件/范例可能与我们今天所使用的一切大不相同。随着另一种计算模型的普及,也许 PyTorch 和 TensorFlow 之间的竞争将变得无关紧要。我们应当将焦点维持在机器学习本身上,无论是喜欢 TensorFlow 还是 PyTorch,试图使机器学习软件达到最佳状态就好。
转自 https://www.oschina.net/news/110773/state-of-ml-frameworks-pytorch-and-tensorflow