PyTorch横扫顶会,TensorFlow退守业界:机器学习框架一年变天
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。 TensorFlow 2.0正式发布没几天,PyTorch 1.3今天也上线了。 一个疯狂强调“易用性”,一个整出了移动端部署。老将和新秀都卯足了劲。 毕竟,机器学习框架的世界,局势变化过于迅猛,稍不注意就会被抢了地盘。 一年前,TensorFlow还是各大顶会论文选择的主流框架,如今顶会几乎成了PyTorch的天下。 CVPR 2019,只提到PyTorch的论文有280篇,只提到TensorFlow的论文有125篇,但这还不是悬殊最大的一场会议。 有网友 (@programmerChilli) 说,虽然知道大批研究者逃离TF拥抱PT:
那么,PyTorch的优势到底在哪里? PyTorch一路凯歌,对TensorFlow经营多年的格局又有怎样的冲击。 这一次,一位来自康奈尔大学的少年Horace He,用一份详尽的调查报告,对现状进行了总结,也为潜在入门者提供了方向: PyTorch制霸学界报告开头就提到:目前的大背景是,大量研究人员从TensorFlow转投PyTorch。 但大家未必知道,这势头来得多猛烈。来看2018年与2019年的各大顶会对比吧: 表格列出了CVPR、NAACL、ACL、ICLR、ICML这五大顶会上,仅提到PyTorch/仅提到TensorFlow的论文数量。 2018年,PyTorch五项数据全部低于TensorFlow。 2019年,PyTorch五个数字全部超越TensorFlow。 PyTorch每项数据的增幅,都在192%到450%之间,涨势十分凶猛。 其中,以自然语言处理(NLP) 的顶会NAACL (450%) 和ACL (290%) 最为显著;在视觉顶会CVPR上也有大幅增长 (240%) 。 相比之下,TensorFlow有三项数据下滑。其中NAACL数据下降幅度达到了38.2%,而这里正是PyTorch飞跃式增长的地方。 此消彼长,PyTorch只用了一年,便把弱势变成了压倒性优势: 280:125 (CVPR) ,两倍有余。 66:21 (ACL) ,三倍有余。 103:33 (NAACL) ,三倍有余。 在语言和视觉顶会上,PyTorch的主导地位最明显。这跟上文提到的涨幅是吻合的。 如果还有人把PyTorch当做一个新秀,试图在TensorFlow主导的世界里,划出一片自己的地盘,那么数据告诉他们,已经不是这样了。 虽然,看上去TensorFlow还有两项数据在增长,但其实只有ICML的涨幅 (32.5%) ,还跟得上会议总录取论文数的增长。 也就是说,在另外四场会议上,TensorFlow已经开始衰退了。 为何研究人员爱PyTorch?一是简单。它和NumPy比较像,风格很Python,能轻易和Python生态集成起来。 比如,你只要把一个pdb断点扔进PyTorch模型里,它直接就能用了。 相比之下,在TensorFlow模型里面debug的话,便会复杂得多了。 二是API好。比起TensorFlow的API,大多数研究人员更偏爱PyTorch的API。PyTorch设计得更科学;而TensorFlow要在各种API之间切换,令人操作不便:
三是性能。虽然PyTorch的动态图 (Dynamic Graphs) 提供的优化空间比较小,但许多用户都反馈说PyTorch的速度不亚于TensorFlow,甚至比对方还快。 虽然,没有严格测试数据表明到底谁更快,但至少TensorFlow并没有明显的优势。 这样,再加上前两点,足够让许多研究人员拥抱PyTorch了。 TensorFlow在研究领域会怎样? 就算今后TensorFlow变得像PyTorch一样友好,PyTorch的地盘也已经很大了。 这就是说,PyTorch的代码实现更容易找到,人们也更有动力发表PyTorch的代码给大家用,跟别人合作的话队友也可能会倾向PyTorch。 所以,迁回TensorFlow 2.0这件事,大概率不会进展很快。 当然,谷歌和DeepMind内部研究还是会用TensorFlow。他们的研究成果,大概也给了一部分研究人员,继续用TensorFlow的信心。 不过Horace He听说,谷歌内部也有许多研究人员,渴望逃离TensorFlow了。 另一方面,PyTorch主导地位越来越强,谷歌研究人员可能和整个社区之间产生隔阂:他们很难在外部研究的基础上搭建自己的应用,外面的研究人员也很难借鉴谷歌的代码。 最后,TensorFlow 2.0能不能挽回一些研究人员,还需要时间来观察。Eager Execution一定是个吸引人的点,而Keras API就不一定了。 TensorFlow守住工业界 虽然在各个开发者社区,“PyTorch真香”论声势浩大,现在又在顶会数据上实力压倒TensorFlow,但其实,在工业界,TensorFlow仍具优势。 比如,根据Medium博主Jeff Hale的统计结果,2019年,TensorFlow在线上招聘启事中拥有1541个新增职位,而PyTorch有1437个。 从arXiv的论文数量来看,TensorFlow也仍然占据首位,只是领先优势在缩小。 一方面,TensorFlow的诞生早于PyTorch,工业界对新鲜事物的追逐,不像学术界那样热切,使用TensorFlow已成行业惯性。 并且,许多企业的代码都是基于TensorFlow搭建的,想要迁移到PyTorch上,并非易事。 另一方面,相比于PyTorch,TensorFlow本身就是为工业界量身打造的。 相比于研究实验,工业界会有更多的限制和要求,比如: · 不用Python。Python在服务器上运行时开销太大,有些公司承受不来。 · 可移动性。移动二进制文件中没法嵌入Python解释器。 · 服务。无停机更新,模型间无缝切换,可预测时间的批处理,等等等等。 TensorFlow在这些方面显然比PyTorch做得好得多。比如,训练好模型,然后使用TF Lite进行部署,是目前最可靠的生产管道之一。 有网友举了个例子:
|