PyTorch是啥?一文帶你快速瞭解
PyTorch是一個開源的機器學習庫。雖然它可用於多種任務,但在深度學習任務(如計算機視覺和自然語言處理)的訓練和推理方面特別有用。
PyTorch流行的主要原因之一是它幫助人工智能(AI)開發者快速製作機器學習模型的原型並進行調試。
PyTorch的名字來源於Torch庫,Torch是另一個用Lua編程語言編寫的開源深度學習框架。PyTorch這個名字強調了該庫便於Python使用的特性及其源於Torch項目。
PyTorch最初由Facebook人工智能研究(FAIR)團隊於2017年創建。2022年,PyTorch項目的管理工作移交給了中立的PyTorch基金會。隸屬於Linux基金會的PyTorch基金會有助於協調該庫及其生態系統的未來發展。
PyTorch有諸多優勢,這使其成爲人工智能程序員最喜愛的框架之一。該庫一些最顯著的、使其適用於各種機器學習用例的方面包括:
1. 與Python集成
PyTorch基於Python構建,Python是一種廣泛使用且對初學者友好的編程語言。這使得它易於掌握,即使對於沒有深度學習經驗的新人工智能開發者也是如此。PyTorch還被設計爲能在Python生態系統中順暢運行,並能與諸如NumPy、SciPy等流行且強大的Python庫很好地集成。
2. 易於調試
PyTorch支持動態計算圖,開發者可即時構建和修改。此外,它還受益於Python的調試工具。這些特性有助於讓PyTorch模型的調試更易管理、更高效,在構建不同人工智能模型的原型並進行試驗時,這特別有用。
3. GPU加速
PyTorch通過CUDA(英偉達的並行計算平臺)支持GPU加速。這種支持有助於加快機器學習模型的訓練速度,對於通常需要大量計算能力的深度學習任務來說尤爲關鍵。
4. 分佈式訓練
PyTorch支持分佈式訓練,這能讓在不同硬件(如CPU和GPU)上進行高效訓練和推理成爲可能。通過將工作負載分配到多個處理器或機器上,PyTorch能最大限度地利用資源並顯著減少模型的訓練時間。
5. 預訓練模型
PyTorch提供了多種預訓練模型,如VGG、ResNet、MobileNet等。開發者能輕鬆地把這些預訓練模型用到自己現有的PyTorch項目裡,還能進行集成。此外,這些模型是在大型數據集上進行預訓練的,這能讓模型達到良好性能所需要的數據量和訓練時間大大減少。通過對預訓練模型進行微調,與從頭開始訓練模型相比,開發者也能獲得更好的性能,特別是在他們的數據集有限的情況下。
6. 廣泛的生態系統
因爲它是開源的,PyTorch已經聚集了龐大的全球用戶和貢獻者社區。它擁有針對特定任務定製的豐富的庫生態系統,例如用於計算機視覺任務的torchvision、用於音頻相關任務的torchaudio、用於自然語言處理(NLP)的torchtext等。
PyTorch有三個基本組件,有助於快速高效地開發複雜的神經網絡模型:
1. 張量
張量是PyTorch中的基本構建塊,通常被認爲類似於多維數組。這些張量本質上有助於表示任何類型的數據,包括以數字形式存在的圖像、音頻和視頻。張量是PyTorch的一種核心數據類型,用於存儲和操作模型的輸入和輸出以及模型的參數。它們更善於利用GPU功能來進行更快的計算。
2. 模塊
得益於PyTorch衆多的模塊,開發人員只需幾行代碼就能快速構建深度學習模型,而無需費力手動構建。諸如nn和optim之類的模塊爲定義神經網絡的架構提供了一種結構化的方式,以及在訓練模型時派得上用場的各種優化算法。還有通過反向傳播過程極大地簡化了神經網絡訓練的autograd模塊。
3. 動態計算圖
在PyTorch中,深度學習模型以動態計算圖(DCGs)的形式表示。與預先構建的靜態圖不同,在DCGs中運行代碼時,神經網絡的結構是動態構建和修改的。這對於實現複雜模型以及那些需要根據輸入來調整架構的模型來說特別有用。DCGs還簡化了調試,因爲它們允許開發人員在執行期間檢查模型。
PyTorch有很多有助於加快模型開發和訓練的優點,這使其成爲人工智能開發人員用於各種任務的流行深度學習框架。
“PyTorch和TensorFlow是最流行的兩個深度學習框架,兩者都被廣泛用於構建和訓練機器學習模型,”Dataiku中東和土耳其銷售工程總監賈德·哈利夫(Jad Khalife)說道。“雖然它們有很多相似之處,但在設計理念、易用性和生態系統方面存在顯著差異。”
哈利夫覺得,PyTorch因爲簡單又靈活,在學術界更受青睞。他還覺得,它的動態圖讓模型的原型設計和實驗更容易。
自然語言處理(NLP)是PyTorch被廣泛應用的領域之一。這個庫常用來開發機器翻譯、情感分析、語音識別和合成方面的模型。實際上,許多人工智能開發者將PyTorch視爲許多自然語言處理任務的首選工具,尤其是那些需要在大量文本數據上訓練複雜神經網絡模型的任務。
另外,它在GPU加速上的優勢,讓PyTorch成爲複雜計算機視覺應用的首選。開發者們一般都用這個庫來處理、分類圖像和視頻,實時檢測物體等等。
它也常被用在強化學習任務裡,用來構建能從與環境交互中學習,根據獎懲做決策的模型。這使得PyTorch對機器人技術和自動駕駛等應用很有用,在這些應用中模型可以學習對其環境做出反應。