在开源框架领域,PyTorch 与 TensorFlow 之争一直存在,研究人员在写论文时也会有不同的偏向。但近年来,得益于 PyTorch 本身的一些优势,越来越多的学者偏向于选择 PyTorch,TensorFlow 的使用比例也因此逐渐下降。
自 2009 年深度学习再度成为焦点以来,很多机器学习框架成为研究者和业界开发者的新宠。从早期的学术框架 Caffe、Theano 到如今 Pytorch、TensorFlow 这样越来越大规模的开发框架。发展到 2020 年,我们可以看到国内外越来越多的科技巨头、创业公司都在研发、使用自家的深度学习框架,如国内的也有百度飞桨、华为 MindSpore、旷视天元。但不得不说,当前最为火热的开源框架,依然是谷歌的 TensorFlow 与 Facebook 手中的 PyTorch。两者之间的竞争,也是社区内津津乐道的话题。在机器之心往期文章中,我们曾报道,虽然 2018 年 TensorFlow 依然碾压 PyTorch,但自 2019 年以来 PyTorch 的发展可谓是火力全开,特别是在学界,几乎是独领风骚。这两年,我们从各类自然语言处理(NLP)、计算机视觉(CV)国际学术顶会接收论文中使用 PyTorch 和 TensorFlow 的占比情况,就可以发现这种趋势 。最近,随着 ICLR 2020 和 CVPR 2020 会议的相继结束,前 PyTorch 实习生、一直致力于研究机器学习领域深度学习框架发展趋势的学者 Horace He 更新了 ICLR 2020 和 CVPR 2020 接收论文中 PyTorch 和 TensorFlow 的使用及相关占比,结果显示:在 ICLR 2020 和 CVPR 2020 会议中,使用 PyTorch 的论文数远超 TensorFlow,研究人员对 PyTorch 的偏爱程度进一步加深。在最新的图表数据中,Horace He 依然以 ICLR 2020 和 CVPR 2020 接收论文中 PyTorch 使用量在 TensorFlow/PyTorch 使用总数中的占比情况,以及 PyTorch/TensorFlow 具体使用数及占接收论文总数的比例为评估指标。图表的交互版本参见:http://horace.io/pytorch-vs-tensorflow/ICLR 2020 论文 PyTorch/TensorFlow 使用分析首先看下 ICLR 2020 接收论文中,PyTorch 使用数在 TensorFlow/PyTorch 使用总数的占比情况:占比超过 50% 则意味着该顶会接收论文中使用 PyTorch 的多于 TensorFlow。从下图可以看到,在 ICLR 2020 接收论文中,PyTorch 的这一比例达到了 69.80%,相较于 ICLR 2018 的 28.05%、ICLR 2019 的 55.91%,这说明了 ICLR 2020 接收论文中 PyTorch 使用数大大超过了 TensorFlow。下图更直观地展示了 ICLR 2020 接收论文中,PyTorch 和 TensorFlow 的具体使用数。可以看到,PyTorch 使用了 141 次,而 TensorFlow 使用了 61 次,PyTorch 使用数是 TensorFlow 的两倍还多。并且,PyTorch 使用数多于 TensorFlow 的情况出现在了 2019 年,而在之前 TensorFlow 使用数多于 PyTorch。PyTorch 和 TensorFlow 各自使用数占接收论文总数的比例如下图所示。可以看到 PyTorch 占比 20.52%,相较于 ICLR 2018 的 6.82%、ICLR 2019 的 14.14% 出现了持续上升;与此同时,TensorFlow 占比仅为 8.88%,相较于 ICLR 2018 的 17.51%、ICLR 2019 的 11.16% 出现了持续下降。由此可见自 2019 年以来,PyTorch 和 TensorFlow 的使用情况发生了根本性变化。CVPR 2020 论文 PyTorch 和 TensorFlow 使用分析首先如下图所示,在 CVPR 2020 接收论文中,PyTorch 使用数在 TensorFlow/PyTorch 使用总数的占比为 79.88%,占比变化情况与 ICLR 2020 会议相似,都呈现出了增长的趋势。PyTorch 和 TensorFlow 在 CVPR 2020 会议接收论文中出现的具体使用数如下图所示,可以看到 PyTorch 使用了 405 次,TensorFlow 使用了 102 次,PyTorch 使用数是 TensorFlow 的近 4 倍。并且,PyTorch 使用数多于 TensorFlow 的情况同样出现在 2019 年,而在之前 PyTorch 使用数少于 TensorFlow。下图展示了 CVPR 2020 接收论文中,PyTorch 与 TensorFlow 使用数占接收论文总数的比例,可以看到 PyTorch 占比 27.61%,TensorFlow 占比 6.95%,两者的占比情况变化与具体使用数变化趋势相同,都是在 2019 年出现了转折。由此可见,在 ICLR 和 CVPR 会议中,PyTorch 与 TensorFlow 的使用数及占比情况在 2019 年发生了根本性变化,自此 PyTorch 的使用数超过了 TensorFlow,占比也不断地增加。今年 4 月份,PyTorch 1.5 宣布上线,对 C++ 前端进行重大更新,并推出了全新的高级自动梯度 API,使用户更方便地执行 jacobian、hessian、jvp 和 vjp 等函数。而谷歌自 2019 年 10 月推出 TensorFlow 2.0 正式版以来,却被用户吐槽太难用,这不仅表现在缺乏官方指南、详细的说明文档以及来自官方开发团队的答疑,而且本身存在的一些问题,如与 Keras 的整合等。所有这些都迫使一些用户偏向了 PyTorch。那么,就框架本身来说,为何越来越多的研究者选择在论文中使用 PyTorch 呢?大概可以总结为以下三个原因:简单。与 numpy 类似,PyTorch 可以很容易地与 Python 生态系统融合。例如,向 PyTorch 模型的任意位置放入一个 pdb 断点,它都可以正常工作。而在 TensorFlow 中,调试模型需要一个激活的会话,最后会变得非常棘手;
优秀的 API。相较于 TensorFlow,多数研究者更喜欢 PyTorch 的 API。部分原因在于 PyTorch 的设计更加合理,还有一部分原因在于:TensorFlow 在将 API 转换多次之后已经自损元气;
性能。尽管 PyTorch 的动态图留给优化的机会非常之少,但有不少非正式报告称 PyTorch 与 TensorFlow 一样快。目前还不清楚这是不是真的,但至少,TensorFlow 在这方面还没有取得决定性优势。
PyTorch 的这些优势或许就是越来越多的学者选择它的理由吧!http://horace.io/pytorch-vs-tensorflow/https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/