基于TensorFlow和PyTorch的深度学习框架对比分析
作者:黄玉萍 梁炜萱 肖祖环
tensorflow版本选择来源:《现代信息科技》2020年第04期
摘 ;要:深度学习框架是实现机器学习的关键工具,合适的深度学习框架可以达到事半功倍的效果。为助力研究者选择合适的框架,在回顾近十种常见框架的基础上,聚焦当前受众最广、热度最高的两种深度学习框架TensorFlow和PyTorch,从历程、现状、机制、训练模式、可视化、工业部署等角度对两者进行比对分析,并归类对应适用场景的建议,为框架选择提供思路参考。
关键词:深度学习;TensorFlow;PyTorch;适用场景
中图分类号:TP181;TP391.41 文献标识码:A 文章编号:2096-4706(2020)04-0080-04
Abstract:A deep learning framework is a key tool for implementing machine learning. A suitable deep learning framework can achieve more results with less effort. In order to help researchers choose the appropriate framework,based on reviewing nearly ten common frameworks,focus on the two deep learning frameworks (TensorFlow and PyTorch) that are currently the most widely used and most popular. From history,status,mechanism,training mode,visualization,industrial deployment and other perspectives compare and analyze the two,and categorize suggestions corresponding to applicable scenarios,providing a reference for framework selection.
Keywords:deep learning framework;TensorFlow;PyTorch;application scene
0 ;引 ;言
早在1956年就被提出的人工智能,得益于計算机网络科技飞速发展带来的数据量激增
、运算力增强、机器学习能力的提升,在2012年后再次成为研究热点,并实现了质的飞跃,众多人工智能技术在工业、安防、日常生活等领域的应用,深入地改变了原有的方式,给社会的发展带来极大的促进作用。
人工智能的飞跃式发展与机器学习算法的进步紧密相连,而深度学习则是实现机器学习的核心技术。开展深度学习相关项目,选择合适的深度学习框架是相当重要的,合适的深度学习框架可以节省很多重复的工作。当前流行的深度学习框架主要包括TensorFlow、PyTorch、Keras、PaddlePaddle、CNTK、MXNet、DeepLearning4J、Theano、Chainer等。
本文依托广东交通职业技术学院校内科技项目,对上述流行的深度学习框架的发展、特征等进行了归纳整理,并聚焦当前受众最广、热度最高的两种深度学习框架—TensorFlow和PyTorch,从历程、现状、性能、特点等角度重点分析总结两者的优缺点,并给出对应的适用场景建议。首先归纳整理当前流行的深度学习框架,然后重点聚焦TensorFlow和PyTorch之间多角度的比较分析,最后根据两者的特征分析结果,归类对应适用场景的建议,为框架选择提供思路参考。
1 ;深度学习框架
技术应用的普及与技术的高效实现密不可分,深度学习框架通过将深度学习算法模块化封装,能够实现训练、测试、调优模型的快速搭建,为技术应用的预测与落地的决策提供有力支持。当前人工智能生态的朝气蓬勃与深度学习框架的百家齐放,可谓相辅相成,相互成就。目前主流的深度学习框架概况,具体如表1所示。
2 ;TensorFlow和PyTorch发展现状
从GitHub讨论热度、各大顶级会议的选择而言,TensorFlow和PyTorch无疑是当前受众最广、热度最高的两种深度学习框架。
2.1 ;发展历程
TensorFlow的前身是2011年Google Brain内部孵化项目DistBelief,这是一个为深度神经网络构建的机器学习系统。经过Google内部的锤炼后,在2015年11月9日,以Apache License 2.0的开源协议对外发布了TensorFlow,并于2017年2月发布了1.0.0版本,这标志着TensorFlow稳定版的诞生。2018年9月TensorFlow 1.2版本发布,将Keras融入TensorFlow,
作为TensorFlow的高级API,这也标志着TensorFlow在面向数百万新用户开源的道路上迈出重要的一步。2019年9月正式发布TensorFlow 2.0版本,紧接着在11月,公布了TensorFlow 2.1的RC版本,兼容之前的流行库,并还引入了众多新库,使得TensorFlow的功能空前强大。
相比较而言,PyTorch则比较年轻。2017年1月,由Face-book人工智能研究院(FAIR)基于Torch推出了PyTorch,并于2018年5月正式公布PyTorch 1.0版本,这个新的框架将PyTorch 0.4与贾扬清的Caffe2合并,并整合ONNX格式,让开发者可以无缝地将AI模型从研究转到生产,而无需处理迁移。最新版PyTorch 1.3于2019年10月上线,更新增加了很多的新特性,包括无缝移动设备部署、量化模型以加速推断、前端改进(如对张量进行命名和创建更干净的代码)等,PyTorch官方同时还开源了很多新工具和库,使得PyTorch的众多功能向TensorFlow趋同,同时保有自身原有特性,竞争力得到极大增强。
2.2 ;现状分析
康奈尔大学的Horace He[1]以及数据科学家、Rebel Desk的COO、Medium优秀作者Jeff Hale[2]都对TensorFlow和PyTorch在研究领域、工业领域的现状进行了分析。研究领域
的统计结果主要基于五大顶级会议论文的使用率来比较趋势,工业领域则是通过线上招聘启事中的提及率来比较趋势。研究领域的关键统计结果展示如表2所示。
从表2我们可以发现,在研究领域,PyTorch的使用率在近两年飞速提升。69%的CVPR论文、75%以上的NAACL和ACL论文,以及50%以上的ICLR和ICML论文都选择使用PyTorch,可谓迅速获得研究人员的青睐,而TensorFlow则没有如此耀眼的数据。
由图1可知,在工业应用领域,TensorFlow依然保有优势,尤其在TensorFlow 1.2版本融合Keras作為高级独立API之后,结合Keras的统计数据,TensorFlow在工业领域的优势则更加明显。TensorFlow在工业领域的领先优势得益于其诞生的时间较早,工业界较早引入TensorFlow框架,并已形成行业惯性,且工业界在对新事物的热情程度远不如研究界等因素。
综合而言,近两年PyTorch发展势头强劲已是不争事实,尤其在研究领域迅速虏获一批研究人员的喜爱,而在工业领域则相对较弱。TensorFlow在研究领域、工业领域,依旧保持相对优势,只是发展势头相对放缓,业务面临被PyTorch、Keras、PaddlePaddle等分流的压力,但就当前现状而言,并随着TensorFlow自身的逐步完善,其占据首位的实力依旧不易
撼动。
3 ;TensorFlow和PyTorch比较分析
Pulkit Sharma[3]认为,一个良好的深度学习框架应该具备优化的性能、易于理解的框架与编码、良好的社区支持、并行化的进程以及自动计算梯度等特征,TensorFlow和PyTorch在这些方面都有良好的表现,为了更为细致地比较两者之间的差异优势,下面将对最新版TensorFlow 2.0版本和PyTorch 1.3版本先从运行机制、训练模式、可视化情况、生产部署等方面进行差异比较,然后再通过细化特征进行定性比较,最后归类对应适用场景的建议。
3.1 ;运行机制
两个框架都是在张量上进行运算,并将任意一个模型看成是有向非循环图(DAG),但TensorFlow遵循“数据即代码,代码即数据”的理念,当在TensorFlow中运行代码时,DAG是以静态方式定义的,若需要实现动态DAG,则需要借助TensorFlow Fold库;而PyTorch属于更Python化的框架,动态DAG是内置的,可以随时定义、随时更改、随时执行节点,并且没有
特殊的会话接口或占位符,相当灵活。此外,在调试方面,由于PyTorch中的计算图是在运行的时候定义的,因此使用者可以使用任何一个喜欢的调试工具,比如PDB、IPDB、PyCharm调试器或者原始的print语句;而TensorFlow并不能这样,它需要借助特殊的调试工具tfdbg才能进行调试。
3.2 ;训练模式
在分布式训练中,TensorFlow和PyTorch的一个主要差异特点是数据并行化,用 TensorFlow时,使用者必须手动编写代码,并微调要在特定设备上运行的每个操作,以实现分布式训练;而PyTorch则是利用异步执行的本地支持来实现的,其自身在分布式训练是比较欠缺的。
3.3 ;可视化情况
在可视化方面,TensorFlow内置的TensorBoard库非常强大,能够显示模型图,绘制标量变量,实现图像、嵌入可视化,甚至是播放音频等功能;反观PyTorch的可视化情况,则显得有点差强人意,开发者可以使用Visdom,但是Visdom提供的功能很简单且有限,可视化效果远远比不上TensorBoard。
3.4 ;生产部署
对于生产部署而言,TensorFlow具有绝对优势,其可直接使用TensorFlow Serving在 TensorFlow中部署模型,而PyTorch没有提供任何用于在网络上直接部署模型的框架,需要使用Flask或者另一种替代方法来基于模型编写一个REST API。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论