基于TensorFlow和PyTorch的深度学习框架对比分析

2020-07-31 09:31黄玉萍梁炜萱肖祖环
现代信息科技 2020年4期
关键词:深度学习

黄玉萍 梁炜萱 肖祖环

摘  要:深度学习框架是实现机器学习的关键工具,合适的深度学习框架可以达到事半功倍的效果。为助力研究者选择合适的框架,在回顾近十种常见框架的基础上,聚焦当前受众最广、热度最高的两种深度学习框架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。

3.5  细化特征比较

为了更好地对比TensorFlow和PyTorch两框架之间的区别与联系,通过官网内容、论坛反馈、自身实践等多方面资源的整理,得出如表3所示的对比结果。

3.6  适用场景建议

Kirill Dubovikov[4]对两者之间的差异进行了总结,并给出对应的适用建议,结合GitHub、CSDN等社区、论坛相关从业人员的建议,大体可归纳为:当需要拥有丰富的入门资源、开发大型生产模型、可视化要求较高、大规模分布式模型训练时,TensorFlow或许是当前最好的选择;而如果想要快速上手、对于功能性需求不苛刻、追求良好的开发和调试体验、擅长Python化的工具时,PyTorch或许是值得花时间尝试的框架。

总体而言,TensorFlow在保持原有优势的同时进一步融合包括Keras在内的优质资源,极大增强其易用性与可调试性,而PyTorch虽然年轻,但增长的势头猛烈,并通过融合Caffe2来进一步强化自身优势。两者都在保留原有优势的同时,努力补齐自身短板,这使得在某种程度上两者有融合的趋势,未来哪一种框架更具优势,现在定论必定过早,因此,在选择框架时,可参照上述内容,并结合项目的时效、成本、维护等多方面综合考量后再决定。

4  结  论

當前并没有完美的深度学习框架,因此从众多主流的深度学习框架中选择适合自身项目的框架并非易事。通过从运行机制、训练模式、可视化情况、生产部署以及一些细化特征的比较,我们可以发现,TensorFlow整体而言比较成熟、稳定且偏重于工业领域,适用于中大型项目,而较为年轻的PyTorch凭借其易用性在研究领域崭露头角,发展势头很猛,但仍需时日才能与TensorFlow全面抗争,在中小型项目中选择PyTorch作为新的尝试,或许会是一种很好的选择。

参考文献:

[1] HE H. The State of Machine Learning Frameworks in 2019 [EB/OL].(2019-10-10).https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/.

[2] HALE J. Which Deep Learning Framework is Growing Fastest [EB/OL].(2019-04-01).https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318.

[3] Sharma P. 5 Amazing Deep Learning Frameworks Every Data Scientist Must Know [EB/OL].(2019-03-14).https://www.analyticsvidhya.com/blog/2019/03/deep-learning-frameworks-comparison/.

[4] DUBOVIKOV K. PyTorch vs TensorFlow — Spotting the Difference [EB/OL].(2017-06-21).https://medium.com/@dubovikov.kirill/pytorch-vs-tensorflow-spotting-the-difference-25c75777377b.

[5] 段仲静,李少波,胡建军,等.深度学习目标检测方法及主流框架综述 [J/OL].激光与光电子学进展:1-18(2019-12-11).http://kns.cnki.net/kcms/detail/31.1690.TN.20191210.1 209.022.html.

[6] 许淑扬.深度学习框架Caffe在图像分类中的应用探析 [J].信息与电脑(理论版),2019,31(23):95-96.

[7] 加日拉·买买提热衣木,常富蓉,刘晨,等.主流深度学习框架对比 [J].电子技术与软件工程,2018(7):74.

[8] 庞涛.开源深度学习框架发展现状与趋势研究 [J].互联网天地,2018(4):46-54.

[9] 李西.人工智能背景下的各大深度学习框架展望 [J].计算机产品与流通,2018(8):145.

[10] 51CTO.2019深度学习框架排行榜 [EB/OL].(2019-08-02).https://ai.51cto.com/art/201908/600692.htm.

[11] 阿里云云栖号.关于TensorFlow你需要了解的9件事 [EB/OL].(2018-08-27).https://www.jianshu.com/p/435f9 f109b22.

[12] 燚智能物联网.Chainer时代即将结束 [EB/OL].(2019-12-13).http://www.openpcba.com/web/contents/get?id= 5845&tid=15.

作者简介:黄玉萍(1989-),女,汉族,江西赣州人,讲师,硕士研究生,研究方向:轨道交通控制,弓网建模;梁炜萱(2000-),女,汉族,广东清远人,研究方向:城市轨道交通通信信号处理;肖祖环(1998-),男,汉族,四川达州人,研究方向:城市轨道交通通信信号处理。

猜你喜欢
深度学习
从合坐走向合学:浅议新学习模式的构建
面向大数据远程开放实验平台构建研究
基于自动智能分类器的图书馆乱架图书检测
搭建深度学习的三级阶梯
有体验的学习才是有意义的学习
电子商务中基于深度学习的虚假交易识别研究
利用网络技术促进学生深度学习的几大策略
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究