學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

最熱深度學習框架TensorFlow和PyTorch,哪一款才是你的菜

來源:北大青鳥總部 2023年04月18日 10:21

摘要: 為助力大家選擇合適的框架,本文在回顧近十種常見框架的基礎上,聚焦當前受眾最廣、熱度最高的兩種深度學習框架TensorFlow和PyTorch。讓大家對這種深度學習框架有一個全面清晰地了解。

前言

人工智能的飛躍式發(fā)展與機器學習算法的進步緊密相連,而深度學習則是實現(xiàn)機器學習的核心技術。開展深度學習相關項目,選擇合適的深度學習框架是相當重要的,合適的深度學習框架可以節(jié)省很多重復的工作。

值得注意的是,當前并沒有完美的深度學習框架,因此從眾多主流的深度學習框架中選擇適合自身項目的框架并非易事。為助力大家選擇合適的框架,本文在回顧近十種常見框架的基礎上,聚焦當前受眾最廣、熱度最高的兩種深度學習框架TensorFlow和PyTorch。讓大家對這種深度學習框架有一個全面清晰地了解。


深度學習框架的概覽

技術應用的普及與技術的高效實現(xiàn)密不可分,深度學習框架通過將深度學習算法模塊化封裝,能夠實現(xiàn)訓練、測試、調優(yōu)模型的快速搭建,為技術應用的預測與落地的決策提供有力支持。當前人工智能生態(tài)的朝氣蓬勃與深度學習框架的百家齊放,可謂相輔相成,相互成就。

當前流行的深度學習框架主要包括TensorFlow、PyTorch、Keras、PaddlePaddle、CNTK、MXNet、DeepLearning4J、Theano、Chainer等,具體如下表所示。



TensorFlow和PyTorch發(fā)展歷程

TensorFlow的前身是2011年GoogleBrain內部孵化項目DistBelief,這是一個為深度神經(jīng)網(wǎng)絡構建的機器學習系統(tǒng)。經(jīng)過Google內部的錘煉后,在2015年11月9日,以ApacheLicense2.0的開源協(xié)議對外發(fā)布了TensorFlow,并于2017年2月發(fā)布了1.0.0版本,這標志著TensorFlow穩(wěn)定版的誕生。2018年9月TensorFlow1.2版本發(fā)布,將Keras融入TensorFlow,作為TensorFlow的高級API,這也標志著TensorFlow在面向數(shù)百萬新用戶開源的道路上邁出重要的一步。2019年9月正式發(fā)布TensorFlow2.0 版本,緊接著在11月,公布了TensorFlow2.1 的RC版本,兼容之前的流行庫,并還引入了眾多新庫,使得TensorFlow的功能空前強大。

相比較而言,PyTorch則比較年輕。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,并于2018年5月正式公布PyTorch1.0 版本,這個新的框架將PyTorch0.4 與賈揚清的Caffe2合并,并整合ONNX格式,讓開發(fā)者可以無縫地將AI模型從研究轉到生產(chǎn),而無需處理遷移。最新版PyTorch1.3 于2019年10月上線,更新增加了很多的新特性,包括無縫移動設備部署、量化模型以加速推斷、前端改進(如對張量進行命名和創(chuàng)建更干凈的代碼)等,PyTorch官方同時還開源了很多新工具和庫,使得PyTorch的眾多功能向TensorFlow趨同,同時保有自身原有特性,競爭力得到極大增強。


TensorFlow和PyTorch比較分析

一個良好的深度學習框架應該具備優(yōu)化的性能、易于理解的框架與編碼、良好的社區(qū)支持、并行化的進程以及自動計算梯度等特征,TensorFlow和PyTorch在這些方面都有良好的表現(xiàn),為了更為細致地比較兩者之間的差異優(yōu)勢,下面將對最新版TensorFlow2.0 版本和PyTorch1.3 版本先從運行機制、訓練模式、可視化情況、生產(chǎn)部署等方面進行差異比較,然后再通過細化特征進行定性比較,最后歸類對應適用場景的建議。


  1. 運行機制
    兩個框架都是使用張量進行運算,并將任意一個模型看成是有向非循環(huán)圖(DAG),但TensorFlow遵循“數(shù)據(jù)即代碼,代碼即數(shù)據(jù)”的理念,當在TensorFlow中運行代碼時,DAG是以靜態(tài)方式定義的,若需要實現(xiàn)動態(tài)DAG,則需要借助TensorFlowFold 庫;而PyTorch屬于更Python化的框架,動態(tài)DAG是內置的,可以隨時定義、隨時更改、隨時執(zhí)行節(jié)點,并且沒有特殊的會話接口或占位符,相當靈活。此外,在調試方面,由于PyTorch中的計算圖是在運行的時候定義的,因此使用者可以使用任何一個喜歡的調試工具,比如PDB、IPDB、PyCharm調試器或者原始的print語句;而TensorFlow并不能這樣,它需要借助特殊的調試工具tfdbg才能進行調試。

  2. 訓練模式
    在分布式訓練中,TensorFlow和PyTorch的一個主要差異特點是數(shù)據(jù)并行化,用TensorFlow時,使用者必須手動編寫代碼,并微調要在特定設備上運行的每個操作,以實現(xiàn)分布式訓練;而PyTorch則是利用異步執(zhí)行的本地支持來實現(xiàn)的,其自身在分布式訓練是比較欠缺的。

  3. 可視化情況
    在可視化方面,TensorFlow內置的TensorBoard庫非常強大,能夠顯示模型圖,繪制標量變量,實現(xiàn)圖像、嵌入可視化,甚至是播放音頻等功能;反觀PyTorch的可視化情況,則顯得有點差強人意,開發(fā)者可以使用Visdom,但是Visdom提供的功能很簡單且有限,可視化效果遠遠比不上TensorBoard。

  4. 生產(chǎn)部署
    對于生產(chǎn)部署而言,TensorFlow具有絕對優(yōu)勢,其可直接使用TensorFlowServing 在TensorFlow中部署模型,而PyTorch沒有提供任何用于在網(wǎng)絡上直接部署模型的框架,需要使用Flask或者另一種替代方法來基于模型編寫一個RESTAPI。

  5. 細化特征比較
    為了更好地對比TensorFlow和PyTorch兩框架之間的區(qū)別與聯(lián)系,通過官網(wǎng)內容、論壇反饋、自身實踐等多方面資源的整理,得出如表3所示的對比結果。


6.適用場景建議
當需要擁有豐富的入門資源、開發(fā)大型生產(chǎn)模型、可視化要求較高、大規(guī)模分布式模型訓練時,TensorFlow或許是當前最好的選擇;而如果想要快速上手、對于功能性需求不苛刻、追求良好的開發(fā)和調試體驗、擅長Python化的工具時,PyTorch或許是值得花時間嘗試的框架。總體而言,TensorFlow在保持原有優(yōu)勢的同時進一步融合包括Keras在內的優(yōu)質資源,極大增強其易用性與可調試性,而PyTorch雖然年輕,但增長的勢頭猛烈,并通過融合Caffe2來進一步強化自身優(yōu)勢。兩者都在保留原有優(yōu)勢的同時,努力補齊自身短板,這使得在某種程度上兩者有融合的趨勢,未來哪一種框架更具優(yōu)勢,現(xiàn)在定論必定過早,因此,在選擇框架時,可參照上述內容,并結合項目的時效、成本、維護等多方面綜合考量后再決定。


結語

當前并沒有完美的深度學習框架,因此從眾多主流的深度學習框架中選擇適合自身項目的框架并非易事。通過從運行機制、訓練模式、可視化情況、生產(chǎn)部署以及一些細化特征的比較,我們可以發(fā)現(xiàn),TensorFlow整體而言比較成熟、穩(wěn)定且偏重于工業(yè)領域,適用于中大型項目,而較為年輕的PyTorch憑借其易用性在研究領域嶄露頭角,發(fā)展勢頭很猛,但仍需時日才能與TensorFlow全面抗爭,在中小型項目中選擇PyTorch作為新的嘗試,或許會是一種很好的選擇。


熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接