黃玉萍 梁煒萱 肖祖環



摘 ?要:深度學習框架是實現機器學習的關鍵工具,合適的深度學習框架可以達到事半功倍的效果。為助力研究者選擇合適的框架,在回顧近十種常見框架的基礎上,聚焦當前受眾最廣、熱度最高的兩種深度學習框架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-),男,漢族,四川達州人,研究方向:城市軌道交通通信信號處理。