- 細說PyTorch深度學習:理論、算法、模型與編程實現
- 凌峰 丁麒文編著
- 2391字
- 2024-12-28 11:35:07
1.2 深度學習框架
深度學習是目前人工智能的重要發展方向,在開始深度學習項目之前,選擇一個合適的框架是非常重要的,因為選擇一個合適的框架能起到事半功倍的效果。研究者使用各種不同的框架來達到研究目的,也從側面印證了深度學習領域的百花齊放。
在深度學習初始階段,每個深度學習研究者都需要寫大量的重復代碼,為了提高工作效率,研究者就將這些代碼寫成了一個框架放到網上讓所有研究者一起使用,接著網上就出現了不同的框架。隨著時間的推移,最為好用的幾個框架被大量的人使用從而流行了起來,全世界最為流行的深度學習框架有PaddlePaddle、TensorFlow、Caffe、Theano、MXNet、Torch和PyTorch。
1.PaddlePaddle
PaddlePaddle(飛槳)以百度多年的深度學習技術研究和業務應用為基礎,是中國首個自主研發、功能完備、開源開放的產業級深度學習平臺,集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件于一體。
目前,PaddlePaddle已凝聚超過265萬開發者,服務企業10萬家,基于飛槳開源深度學習平臺產生了34萬個模型。PaddlePaddle可以助力開發者快速實現AI想法,快速上線AI業務,幫助越來越多的行業完成AI賦能,實現產業智能化升級。
PaddlePaddle在業內率先實現了動靜統一的框架設計,兼顧靈活性與高性能,并提供一體化設計的高層API和基礎API,確保用戶可以同時享受開發的便捷性和靈活性。
在大規模分布式訓練技術上,PaddlePaddle率先支持了千億稀疏特征、萬億參數、數百節點并行訓練的能力,并推出了業內首個通用異構參數服務器架構,已達到國際領先水平。
PaddlePaddle擁有強大的多端部署能力,支持云端服務器、移動端以及邊緣端等不同平臺設備的高速推理;PaddlePaddle推理引擎支持廣泛的AI芯片,已經適配和正在適配的芯片或IP達到29款,處于業界領先地位。
PaddlePaddle還圍繞企業實際研發流程量身定制打造了大規模的官方模型庫,算法總數達到270多個,服務企業遍布能源、金融、工業、農業等多個領域。
2.TensorFlow
Google(谷歌)開源的TensorFlow是一款使用C++語言開發的開源數學計算軟件,使用數據流圖(Data Flow Graph)的形式進行計算。圖中的節點代表數學運算,而圖中的線條表示多維數據數組(Tensor,張量)之間的交互。
TensorFlow靈活的架構可以部署在一臺或多臺具有多個CPU、GPU的臺式機及服務器中,或者使用單一的API應用于移動設備中。TensorFlow最初是由研究人員和Google Brain(谷歌大腦)團隊針對機器學習和深度神經網絡進行研究而開發的,開源之后幾乎可以在各個領域使用。
TensorFlow是全世界使用人數最多、社區最為龐大的一個框架,因為是Google公司出品的,所以維護與更新比較頻繁,并且有著Python和C++的接口,教程也非常完善,同時很多論文復現的第一個版本的設計都是基于TensorFlow編寫的,所以是深度學習界設計框架默認的老大。
3.Caffe
和TensorFlow名氣一樣大的是深度學習框架Caffe,由加州大學伯克利分校計算機科學博士獲得者的賈揚清開發,全稱是Convolutional Architecture for Fast Feature Embedding,是一個清晰而高效的開源深度學習框架,由伯克利視覺中心(Berkeley Vision and Learning Center,BVLC)進行維護。
Caffe對于卷積網絡的支持特別好,同時也是用C++寫的,提供C++接口,也提供MATLAB接口和Python接口。
Caffe之所以流行,是因為之前很多ImageNet比賽里面使用的網絡都是用Caffe編寫的,所以如果想使用這些比賽的網絡模型就只能使用Caffe,這也就導致很多人直接轉到Caffe這個框架下面。
Caffe的缺點是不夠靈活,同時內存占用高,Caffe的升級版本Caffe 2已經開源了,修復了一些問題,同時工程水平得到了進一步提高。
4.Theano
Theano于2008年誕生于蒙特利爾理工學院,其派生出了大量的深度學習Python軟件包,最著名的包括Blocks和Keras。Theano的核心是一個數學表達式的編譯器,它了解如何獲取結構,并將其轉化為高效代碼,以便在CPU或GPU上盡可能快地運行NumPy高效的本地庫,如BLAS和本地代碼(C++)。它是為深度學習中處理大型神經網絡算法所需的計算而專門設計的,是這類庫的首創之一(發展始于2007年),被認為是深度學習研究和開發的行業標準。
但是開發Theano的研究人員大多去了Google參與TensorFlow的開發,所以某種程度來講,TensorFlow就像Theano的孩子。
5.MXNet
MXNet的主要作者是李沐,最早就是幾個人抱著純粹對技術和開發的熱情做起來的,如今成為亞馬遜的官方框架,有著非常好的分布式支持,而且性能特別好,占用顯存低,同時它開發的語言接口不僅有Python和C++,還有R、MATLAB、Scala、JavaScript等,可以說能夠滿足使用任何語言的人。
但是MXNet的缺點也很明顯,教程不夠完善,使用的人不多,導致社區不大,同時每年很少有比賽和論文是基于MXNet實現的,這就使得MXNet的推廣力度和知名度不高。
6.Torch
Torch是一個有大量機器學習算法支持的科學計算框架,它已經存在了10年,但真正開始流行起來是因為Facebook開源了大量Torch的深度學習模塊和擴展。Torch的特點在于非常靈活,但另一個特殊之處是采用了Lua編程語言。在深度學習大部分以Python為編程語言的環境下,一個以Lua為編程語言的框架處于不小的劣勢,這使得使用Torch框架的學習成本更高。
7.PyTorch
PyTorch是2017年1月FAIR(Facebook AI Research)發布的一款深度學習框架,從名稱可以看出,PyTorch是由Py和Torch構成的。
PyTorch提供了兩個高級功能:一是具有強大的GPU加速的張量計算(如NumPy);二是包含自動求導系統的深度神經網絡。
PyTorch的前身便是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持動態圖,而且提供了Python接口。
除了Facebook外,PyTorch已經被Twitter、CMU和Salesforce等機構采用。
深度學習框架的出現降低了深度學習入門的門檻,不需要從復雜的神經網絡開始編代碼,可以根據需要選擇已有的模型,通過訓練得到模型參數,也可以在已有模型的基礎上增加自己的神經網絡層(Layer),或者是在頂端選擇自己需要的分類器和優化算法(比如常用的梯度下降法)。當然正因如此,沒有什么框架是完美的,就像一套積木里可能沒有需要的那一種積木,所以不同的框架適用的領域不完全一致。總的來說,深度學習框架提供了一系列的深度學習組件(包括通用算法的實現),當需要使用新的算法時,用戶需要自行定義并調用深度學習框架提供的函數接口來使用用戶自定義的新算法。
經過這些年的發展,PyTorch受到越來越多從業者的使用和青睞,目前學術界大量使用該框架,參與這些學術研究的學生畢業之后將逐漸進入產業界,因此PyTorch必定在將來得到越來越廣泛的應用。