当前位置: 首页 > 科技观察

PyTorch横扫顶会,TensorFlow退居业界:机器学习框架年年有变

时间:2023-03-14 20:22:57 科技观察

在TensorFlow2.0正式发布没几天,今天PyTorch1.3也上线了。一个疯狂强调“易用性”,一个则侧重于移动部署。退伍军人和新秀都在努力工作。毕竟在机器学习框架的世界里,风云变幻太快,一不留神就会被抢地盘。一年前,TensorFlow还是各大会议论文选择的主流框架,如今顶级会议几乎成了PyTorch的天下。CVPR2019,有280篇论文只提到PyTorch,125篇论文只提到TensorFlow,但这并不是悬殊最大的会议。一位网友(@programmerChilli)表示,虽然知道有大量研究人员逃离TF转而拥抱PT:但没想到涨幅能达到这样的程度。那么,PyTorch的优势在哪里呢?PyTorch一路高歌猛进,又会对TensorFlow多年来的运行格局产生怎样的影响。这一次,来自康奈尔大学的HoraceHe少年用一份详细的调查报告总结现状,为潜在的初学者提供方向:PyTorch霸权学术界的报告开篇:当前的背景是大量的研究人员从TensorFlow切换到PyTorch。但大家可能并不知道,这股气势到底有多猛烈。我们来看看2018年和2019年顶级会议的对比:△32.5%的ICML被封TensorFlow的论文数。2018年PyTorch的五项数据均低于TensorFlow。2019年,PyTorch的五项数据全部超越TensorFlow。PyTorch每项数据的涨幅在192%到450%之间,涨幅非常猛。其中以自然语言处理(NLP)顶级会议的NAACL(450%)和ACL(290%)最为显着;视觉顶级会议CVPR也有大幅提升(240%)。相比之下,TensorFlow有3项数据下滑。其中,NAACL数据下降了38.2%,而这正是PyTorch突飞猛进的地方。PyTorch仅用了一年的时间就将其弱点变成了压倒性的优势:280:125(CVPR),翻了一倍多。66:21(ACL),超过三倍。103:33(NAACL),超过三倍。PyTorch的统治地位在语言和视觉峰会上表现得最为明显。这与上文提到的增长是一致的。如果还有人将PyTorch视为菜鸟,试图在TensorFlow主导的世界中开辟出一片属于自己的领地,那么数据告诉他们,这已经不是事实了。虽然看起来TensorFlow还有另外两项数据在增长,但实际上只有ICML(32.5%)的增长才能跟得上会议接收论文总数的增长。也就是说,在其他四个会议上,TensorFlow已经开始衰落。为什么研究人员喜欢PyTorch?一个很简单。它更类似于NumPy,具有非常Pythonic的风格,并且可以很容易地与Python生态系统集成。例如,您只需将pdb断点放入PyTorch模型中,它就会立即运行。相比之下,在TensorFlow模型中调试要复杂得多。第二,API好。大多数研究人员更喜欢PyTorch的API而不是TensorFlow的API。PyTorch设计更科学;而TensorFlow要在各种API之间切换,操作起来不方便:'layers'->'slim'->'estimators'->'tf.keras'三是性能。尽管PyTorch的DynamicGraphs提供的优化空间相对较小,但许多用户反映PyTorch与TensorFlow一样快,甚至比另一个更快。虽然没有严格的测试数据来证明谁更快,但至少TensorFlow没有明显的优势。这一点,连同前两点,足以让许多研究人员拥抱PyTorch。研究界的TensorFlow怎么样?即使以后TensorFlow变得和PyTorch一样友好,PyTorch的版图也已经非常大了。也就是说,PyTorch的代码实现更容易找到,人们也更有动力发布PyTorch的代码供大家使用。如果队友与他人合作,他们也可能更喜欢PyTorch。因此,回归TensorFlow2.0的进程很可能不会很快。当然,Google和DeepMind仍然会使用TensorFlow进行内部研究。他们的研究成果可能给了一些研究人员继续使用TensorFlow的信心。不过,HoraceHe听说Google内部有很多研究人员都渴望逃离TensorFlow。另一方面,PyTorch日益增长的主导地位可能会在谷歌研究人员和整个社区之间造成鸿沟:他们很难在外部研究的基础上构建自己的应用程序,外部研究人员也很难从谷歌的代码中学习。最后,TensorFlow2.0能否拯救一些研究人员还需要时间。EagerExecution一定是吸引人的点,但KerasAPI就不一定了。TensorFlow捍卫行业。虽然在各个开发者社区,“PyTorch真香”的论调甚嚣尘上,如今在顶会数据上压倒Ten??sorFlow,但实际上TensorFlow在业界还是有优势的。例如,根据Medium博主JeffHale的统计,在2019年,TensorFlow在在线职位发布中有1,541个新职位,而PyTorch有1,437个。从arXiv的论文数量来看,TensorFlow依然占据第一,但领先优势正在缩小。一方面,TensorFlow比PyTorch诞生得更早。工业界并不像学术界那样急于追求新事物。使用TensorFlow已经成为一种行业惯性。而且很多企业的代码都是基于TensorFlow构建的,迁移到PyTorch上并不容易。另一方面,相对于PyTorch,TensorFlow本身就是为行业量身定做的。与研究实验相比,行业会有更多的限制和要求,例如:·不能使用Python。Python在服务器上运行成本太高,有些公司负担不起。?机动性。无法在移动二进制文件中嵌入Python解释器。·服务。无停机更新、模型之间的无缝切换、具有可预测时间的批处理等等。TensorFlow在这些方面显然比PyTorch做得更好。例如,训练一个模型然后使用TFLite部署它是目前最可靠的生产流水线之一。有网友举了一个例子:TensorFlow可以将模型导出到coremlAndroid模型,可以方便的转移到GCP(GoogleCloudPlatform)环境等任何形式的生产环境中。相比之下,PyTorch的部署就有点秃头了:模型无法导出到非Python环境,无法优化,无法在移动设备上运行(随着PyTorch1.3的发布,无法部署的问题移动端已解决)。此外,TensorFlow有Keras这个好搭档。不过也有网友认为,PyTorch取得行业霸主地位只是时间问题。毕竟在2018年的峰会上,TensorFlow还是主流。短短一年,皇位易主。△中博主JeffHale统计“融合”趋势PyTorch势头强劲,但TensorFlow并没有坐以待毙。一个有趣的现象是,这两个机器学习框架现在呈现出一种“融合”的趋势。TensorFlow2.0在十一假期正式登场,进一步整合TensorFlow和Keras,提升易用性。这位官员表示,这是一个灵活而强大的平台,具有快速、可扩展和可用于生产的特点。Keras的作者Fran?oisChollet甚至说:“TensorFlow2.0是一个来自未来的机器学习平台,它改变了一切。”在默认的eagerexecution模式下,TensorFlow2.0可以提供PyTorcheagermode的大部分优势,比如易用性、性能、可调试性等。而且,针对TensorFlow的API过于复杂的问题,2.0版本还提供了一种更简单的——使用API??。模型的训练和服务无缝集成在基础框架中。在PyTorch方面,2018年底引入了JIT编译器和“TorchScript”,以增加图形功能。就在今天,PyTorch1.3发布,增加了移动部署、量化和命名张量等功能。看到机器学习框架的游戏规则在未来将如何变化,真是令人兴奋。FBGoogleDoubleIntern最后介绍一下这篇详细报道的作者:HoraceHe,来自康奈尔大学,2016年本科录取,自上大学以来,每年暑假都在大厂实习:他是2017年在Facebook实习软件工程师,2018年在谷歌实习软件工程师,2019年在Facebook实习PyTorch。另外,Juvenile也是VSCodeVim(starred6.2k)的主要贡献者之一:所以,TensorFlow和PyTorch,你会选谁?