张倩、杜伟参与

2020,PyTorch真的赶上TensorFlow了吗?

几天前,OpenAI 通过官方博客宣布了「全面转向 PyTorch」的消息,计划将自家平台的所有框架统一为 PyPyTorch。这一消息再次引发了社区关于两个框架优劣的讨论。作为后起之秀,PyTorch 真的已经全面赶超 TensorFlow 了吗?为了研究这个问题,数据科学家 Jeff Hale 从在线职位数量、顶会论文中的出现次数、在线搜索结果、开发者使用情况四个方面对两个框架的现状进行了调研。

通过这四个方面的对比,作者最后得出结论,TensorFlow 在大多数领域仍然处于领先地位,但 PyTorch 正在取得进展并逐渐缩小差距。

其实,这已经不是这位作者第一次调研深度学习框架了。从 2018 年到 2020 年,他先后进行过三次调查研究并发布了相关报告。从这些报告中,我们可以看出深度学习框架在多个维度的热度演变史。

2018:TensorFlow 碾压 PyTorch

Jeff Hale 的第一份调研结果发布于 2018 年 9 月。他在那次调研中发现,TensorFlow 是当时的绝对冠军。在 GitHub 活跃度、谷歌搜索量、Medium 文章数、亚马逊书籍和 arXiv 论文等维度上所占的比重都是最大的。此外,TensorFlow 还拥有最多的开发者用户,相关的网上职位描述也是最多的。

2018 年调研得出的深度学习框架实力得分排名。

相比之下,当时的 PyTorch 只能排到第三,得分比当时的第二名 Keras 还要矮上一截。

各个框架在 2018 年调研结果中的加权得分。从中可以看出,TensorFlow 在绝大多数指标中都是绝对冠军,而 PyTorch 大多居于第三名。

2019:PyTorch 火力全开,TensorFlow 增长乏力

2019 年 4 月,Jeff Hale 发布了第二份调查结果。这次,他调研了几个框架在过去 6 个月(此次调研与上次调研之间的时间间隔)里的增长情况。结果发现,TensorFlow 仍然是当时需求量最大、增长最快的框架,但 PyTorch 也不容小觑,在过去的六个月增速超过了原来的第二名 Keras。

2019 年调研得出的深度学习框架增长排名。

值得注意的是,当时的 PyTorch 在职位数量增长方面尤其亮眼,与 TensorFlow 之间的差距非常小。而且,除了领英之外,PyTorch 在所有求职网站上的职位增加量都超过了 TensorFlow。

而在谷歌搜索相对数量方面,TensorFlow 当时已经出现了负增长。这表示,在过去六个月,TensorFlow 的相对搜索数量减少,而 PyTorch 的相对搜索数量增加。

2020:PyTorch 顶会独领风骚,职场优势追赶 TensorFlow

转眼到了 2020 年,框架之争只剩下 PyTorch 和 TensorFlow 两个实力玩家。所以这次,作者把调研的全部精力都放在了这两个框架上。

在这次调研进行时,两个框架已经越来越像了,即出现了「融合」趋势。二者现在都可以在动态 eager execution 模式或静态图模式下运行。

截至目前,PyTorch 已经更新到了 1.4,增加了不少新特性来迎合业界,在谷歌云 TPU 上运行起来也更加容易。此外,PyTorch 的社区也在不断扩大,除了最近的 OpenAI,深度学习开源框架 Chainer 的维护者 Preferred Networks(PFN)也于去年底宣布,该团队今后将不再进行 Chainer 的重大升级,今后的研究方向将转向 PyTorch。

TensorFlow 2.0 也引入了不少新的改进,使得 API 更加精简,对大脑更加友好。此外,TensorFlow 紧密集成了 Keras 作为其前端和高级 API。

与 PyTorch 相比,TensorFlow 在产品和边缘设备深度学习中仍然拥有更加丰富的功能,但是 PyTorch 的功能也在逐渐完善。

在此背景下,此次调研从以下四个评估指标着手,即在线职位数量、顶会论文中出现次数、在线搜索结果和开发者使用情况。

在线职位数量

2020 年 1 月 26 日,作者搜索了 Indeed、Monster、SimplyHired 和 LinkedIn 四个(美国)求职网站中关于 TensorFlow 和 PyTorch 的关键词。

搜索结果如下图所示,TensorFlow 在每个求职网站出现的次数大约是 PyTorch 的两倍。

以百分比计数展示结果如下:

在 10 个月前的调研结果(即 2019 年调研结果)中,TensorFlow 出现在职位列表中的次数是 PyTorch 的三倍,如今差距进一步缩短,降到了两倍。

顶会论文中的出现次数

当前,PyTorch 在顶会论文中出现的次数最多。如下图所示,前 PyTorch 实习生 Horace He 做了一个图表,展示了各大顶会(2017 年-2019 年)论文中,PyTorch 出现次数在 TensorFlow/PyTorch 总出现次数中的占比情况:占比超过 50% 意味着在该顶会论文中 PyTorch 出现的次数多于 TensorFlow。从图中可以看出,PyTorch 在各大顶会中的出现次数几乎都超过了 TensorFlow。

图源:https://chillee.github.io/pytorch-vs-tensorflow/

下图展示了 PyTorch 和 TensorFlow 在 NeurIPS 会议论文中(2016 年-2019 年)的直观对比和趋势发展,实线代表 PyTorch,虚线代表 TensorFlow:其中,在 2019 NeurIPS 会议论文中,PyTorch 出现 166 次,TensorFlow 出现 74 次,是后者的两倍之多;而在 2018 年 NeurIPS 会议论文中,PyTorch 的出现次数还是少于 TensorFlow 的。这些可以看出两种框架近年来的发展趋势。

图源:https://chillee.github.io/pytorch-vs-tensorflow/

在线搜索结果

作者通过 Google Trends 找出了 2017 年 1 月 26 日至 2020 年 1 月 26 日期间,PyTorch(软件)和 TensorFlow(计算机应用)的相对搜索量。

下图是谷歌搜索结果(Google Search Results)线性趋势线,蓝色代表 TensorFlow,红色代表 PyTorch。从图中可以看出,TensorFlow 的性对搜索量呈下降趋势,而 PyTorch 呈增长趋势,二者差距越来越小。

 图源:https://public.tableau.com/profile/jeff.hale6436#!/vizhome/shared/SCFBWY2SP

开发者使用情况

在 2019 年初的 Stack Overflow 开发者调研中,10% 的受访者使用 TensorFlow,3.3% 的受访者使用 Torch/PyTorch。专业开发人员的使用占比情况同样如此(9.4%vs 2.9%)。但鉴于数据取自 2019 年初,现在的真实情况可能有所变化。

总之,在线职位数量中,TensorFlow 的出现次数依然多于 PyTorch,但差距正在缩小;PyTorch 在顶会论文中出现的次数一直处于领先地位,并在谷歌搜索结果中进一步缩小了与 TensorFlow 的差距;在最近一次的 Stack Overflow 开发者调研中,TensorFlow 的使用占比依然是 PyTorch 的三倍。

最后,作者表示,他关于 TensorFlow 和 PyTorch 两种深度学习框架的调研还会继续下去,但目前仍不确定未来两年选择哪种框架最合适。但他认为,TensorFlow 是更加安全的选择。

最后,作者为想要学习深度学习的读者提供了一些有用的资源:如 course.fast.ai 网站:https://course.fast.ai/index.html。

此外,机器之心最近也盘点了过去几年的优质教程,大家可以收藏学习(参见《收藏、退出一气呵成,2019 年机器之心干货教程都在这里了》)。

相关阅读:

2018 调研结果:《2018 年最热门的深度学习框架?这份科学的排行榜可以告诉你

2019 调研结果:《2019 年,TensorFlow 被拉下马了吗?

参考链接:

https://towardsdatascience.com/is-pytorch-catching-tensorflow-ca88f9128304

工程TensorFlowPyTorch
1
对我而言,tensorflow的唯一优势就是tflite还有工业化的功能