资讯
2019-11-18 16:02:25 来源:艾崴安检
[摘要]近日,Reddit的一则热帖引发机器学习社区大量讨论:
NeurIPS 2019使用的机器学习框架:PyTorch 68-> 166,TensorFlow 91-> 74
帖主Horace He是康奈尔大学的学生,他的研究兴趣是编译
TensorFlow在Google / DeepMind中将始终拥有一定的受众群体,但不知道Google是否最终会放弃。即使是现在,Google想要招募的许多研究人员已经在不同层次上偏爱PyTorch,而且还听到有人抱怨说Google内部的许多研究人员都希望使用TensorFlow以外的框架。
此外,PyTorch的统治地位可能会开始将Google研究人员与其他研究群体隔离开来。他们不仅很难在外部研究的基础上进行构建,而且外部研究人员也不太可能在Google发布的代码基础上进行构建。
PyTorch和TensorFlow用于生产
尽管PyTorch现在在研究领域占据主导地位,但纵观业界,TensorFlow仍然是主导框架。例如,根据2018年至2019年的招聘网站数据,TensorFlow有1541个新职位,PyTorch有1437个新职位。TensorFlow的Medium文章有3230篇,PyTorch则有1200篇;TensorFlow有13700颗GitHub新星,PyTorch有7200颗,等等。
因此,如果PyTorch在学界中如此流行,为什么它没有在业界获得同样的成功呢?一个显而易见的第一个答案就是懒(inertia)。Tensorflow比PyTorch早几年问世,业界采用新技术的速度比研究人员慢。另一个原因是TensorFlow在生产方面比PyTorch更好。但是,这是什么意思?
要回答这个问题,我们需要知道研究人员和行业的需求有何不同。
研究人员在意他们能够以多快的速度进行研究,该研究通常是在相对较小的数据集(可以放在一台机器上的数据集)上运行的,并且运行在<8个GPU上。通常,研究人员考虑的是速度而非性能,即哪个能让他们快速实践新想法。相反,业界认为性能是重中之重。尽管将运行速度提高10%对研究人员来说毫无意义,但这可以直接为公司节省数百万美元的费用。
另一个区别是部署。研究人员将在自己的计算机或专用于运行研究工作的服务器群集上进行实验。相反,业界有很多限制/要求:
无Python。一些公司会运行服务器,而高昂的Python运行开销无法承受。
移动。无法在mobile binary中嵌入Python interpreter。
服务。一个全面的功能,如不停机更新模型,无缝切换模型,在预测时间批处理,等等。
TensorFlow是专门针对这些需求而构建的,并为所有这些问题提供了解决方案:图形格式和执行引擎本来就不需要Python,TensorFlow Lite和TensorFlow Serving服务分别考虑了移动和服务。
从历史上看,PyTorch未能满足这些考虑,因此大多数公司目前在生产中使用TensorFlow。
Tensorflow Eager
在 API 级别,TensorFlow eager 模式与 PyTorch 的 eager 模式本质上是相同的。eager 模式为 TensorFlow 提供了 PyTorch 的大部分优势 (易用性、可调试性等)。
然而,这也给了 TensorFlow 带来了同样的缺点。TensorFlow eager 模型不能导出到非 python 环境,不能进行优化,不能在移动设备上运行,等等。
这将 TensorFlow 置于与 PyTorch 相同的位置,它们以本质上相同的方式进行解析 —— 你可以跟踪代码 (tf.function) 或重新解释 Python 代码 (Autograph)。
因此,TensorFlow 的 eager 模式并不能真正做到 “两全其美”。尽管可以使用 tf 将代码转换为静态图,但这不是一个无缝的过程。跟踪代码会受到限制,重新解释 Python 代码本质上需要重写大部分 Python 编译器。当然,通过将范围限制为用于深度学习的 Python 子集,可以大大简化范围。
PyTorch占领研究界,TensorFlow统治工业界
至此,我们得出了机器学习框架当前的现状:
PyTorch 占领了研究界,并试图将其在研究领域的成功推广到工业界。
TensorFlow 试图在不牺牲太多生产能力的情况下,遏制其在研究领域的损失。
当然,PyTorch 要在业界产生有意义的影响还需要很长一段时间 ——TensorFlow 太根深蒂固了,而行业变化缓慢。
不过,从 TensorFlow 1.0 过渡到 2.0 会是困难的,这为公司考虑采用 PyTorch 提供了机会。
未来将取决于谁能更好地回答下列问题。
研究人员的偏好会对业界产生多大的影响?
现在这批博士生即将毕业,他们将带上 PyTorch 进入业界。这种偏好是否足够强大,以至于公司会出于招聘目的选择 PyTorch?创业的毕业生会为自己的公司选择 PyTorch 吗 ?
TensorFlow 的 eager 模式在可用性方面能赶上 PyTorch 吗?
在线社区给我的印象是,TensorFlow Eager 深受性能 / 内存问题的困扰,而 Autograph 系列也有自己的问题。谷歌将花费大量的工程努力,但 TensorFlow 却受历史包袱拖累。
价格:¥0.00
价格:¥0.00