0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

PyTorch開源深度學習框架簡介

NVIDIA英偉達 ? 來源:NVIDIA英偉達 ? 作者:NVIDIA英偉達 ? 2022-07-29 10:26 ? 次閱讀

PyTorch 是一種開源深度學習框架,以出色的靈活性和易用性著稱。這在一定程度上是因為與機器學習開發(fā)者和數(shù)據(jù)科學家所青睞的熱門 Python 高級編程語言兼容。

什么是 PyTorch ?

PyTorch 是一種用于構建深度學習模型的功能完備框架,是一種通常用于圖像識別和語言處理等應用程序的機器學習。使用 Python 編寫,因此對于大多數(shù)機器學習開發(fā)者而言,學習和使用起來相對簡單。PyTorch 的獨特之處在于,它完全支持 GPU,并且使用反向模式自動微分技術,因此可以動態(tài)修改計算圖形。這使其成為快速實驗和原型設計的常用選擇。

為何選擇 PyTorch ?

PyTorch 是 Facebook AI Research 和其他幾個實驗室的開發(fā)者的工作成果。該框架將 Torch 中高效而靈活的 GPU 加速后端庫與直觀的 Python 前端相結合,后者專注于快速原型設計、可讀代碼,并支持盡可能廣泛的深度學習模型。Pytorch 支持開發(fā)者使用熟悉的命令式編程方法,但仍可以輸出到圖形。它于 2017 年以開源形式發(fā)布,其 Python 根源使其深受機器學習開發(fā)者的喜愛。

2446cb1c-0e74-11ed-ba43-dac502259ad0.png

值得注意的是,PyTorch 采用了 Chainer 創(chuàng)新技術,稱為反向模式自動微分。從本質(zhì)上講,它就像一臺磁帶錄音機,錄制完成的操作,然后回放,計算梯度。這使得 PyTorch 的調(diào)試相對簡單,并且能夠很好地適應某些應用程序,例如動態(tài)神經(jīng)網(wǎng)絡。由于每次迭代可能都不相同,因此非常適用于原型設計。

PyTorch 在 Python 開發(fā)者中特別受歡迎,因為它使用 Python 編寫,并使用該語言的命令式、運行時定義即時執(zhí)行模式,在這種模式下,從 Python 調(diào)用運算時執(zhí)行運算。隨著 Python 編程語言的廣泛采用,一項調(diào)查顯示,AI 和機器學習任務受到越來越多的關注,并且相關 PyTorch 的采用也隨之提升。這使得 PyTorch 對于剛接觸深度學習的 Python 開發(fā)者來說是一個很好的選擇,而且越來越多的深度學習課程基于 PyTorch。從早期版本開始,API 一直保持一致,這意味著代碼對于經(jīng)驗豐富的 Python 開發(fā)者來說相對容易理解。

PyTorch 的獨特優(yōu)勢是快速原型設計和小型項目。其易用性和靈活性也使其深受學術和研究界的喜愛。

Facebook 開發(fā)者一直努力改進 PyTorch 的高效應用。新版本已提供增強功能,例如支持谷歌的 TensorBoard 可視化工具以及即時編譯。此外,還擴展了對 ONNX(開放神經(jīng)網(wǎng)絡交換)的支持,使開發(fā)者能夠匹配適合其應用程序的深度學習框架或運行時。

PyTorch 的主要優(yōu)勢

PyTorch 的一些重要特性包括:

PyTorch.org 社區(qū)有一個充滿活力的大型社區(qū),具有優(yōu)秀的文檔和教程。論壇十分活躍,并能給予幫助和支持。

采用 Python 編寫,并集成了熱門的 Python 庫,例如用于科學計算的 NumPy、SciPy 和用于將 Python 編譯為 C 以提高性能的 Cython。由于 PyTorch 的語法和用法類似于 Python,因此對于 Python 開發(fā)者來說,學習起來相對容易。

受主要云平臺的有力支持。

腳本語言(稱為 TorchScript)在即時模式下易于使用且靈活。這是一種快速啟動執(zhí)行模式,從 Python 調(diào)用運算時立即執(zhí)行運算,但也可以在 C++ 運行時環(huán)境中轉換為圖形模型,以提高速度和實現(xiàn)優(yōu)化。

它支持 CPU、GPU、并行處理以及分布式訓練。這意味著計算工作可以在多個 CPU 和 GPU 核心之間分配,并且可以在多臺機器上的多個 GPU 上進行訓練。

PyTorch 支持動態(tài)計算圖形,能夠在運行時更改網(wǎng)絡行為。與大多數(shù)機器學習框架相比,提供了更大的靈活性優(yōu)勢,因為大多數(shù)機器學習框架要求在運行時之前將神經(jīng)網(wǎng)絡定義為靜態(tài)對象。

PyTorch Hub 是一個預訓練模型庫,在某些情況下只需使用一行代碼就可以調(diào)用。

新自定義組件可創(chuàng)建為標準 Python 類的子類,可以通過 TensorBoard 等外部工具包輕松共享參數(shù),并且可以輕松導入和內(nèi)聯(lián)使用庫。

PyTorch 擁有一組備受好評的 API,可用于擴展核心功能。

既支持用于實驗的“即時模式”,也支持用于高性能執(zhí)行的“圖形模式”。

擁有從計算機視覺到增強學習等領域的大量工具和庫。

支持 Python 程序員熟悉的純 C++ 前端接口,可用于構建高性能 C++ 應用程序。

PyTorch 的工作原理

PyTorch 和 TensorFlow 的相似之處在于,兩者的核心組件都是張量和圖形。

張量

張量是一種核心 PyTorch 數(shù)據(jù)類型,類似于多維數(shù)組,用于存儲和操作模型的輸入和輸出以及模型的參數(shù)。張量與 NumPy 的 ndarray 類似,只是張量可以在 GPU 上運行以加速計算。

圖形

神經(jīng)網(wǎng)絡將一系列嵌套函數(shù)應用于輸入?yún)?shù),以轉換輸入數(shù)據(jù)。深度學習的目標是通過計算相對損失指標的偏導數(shù)(梯度),優(yōu)化這些參數(shù)(包括權重和偏差,在 PyTorch 中以張量的形式存儲)。在前向傳播中,神經(jīng)網(wǎng)絡接受輸入?yún)?shù),并向下一層的節(jié)點輸出置信度分數(shù),直至到達輸出層,在該層計算分數(shù)誤差。在一個稱為梯度下降的過程中,通過反向傳播,誤差會再次通過網(wǎng)絡發(fā)送回來,并調(diào)整權重,從而改進模型。

圖形是由已連接節(jié)點(稱為頂點)和邊緣組成的數(shù)據(jù)結構。每個現(xiàn)代深度學習框架都基于圖形的概念,其中神經(jīng)網(wǎng)絡表示為計算的圖形結構。PyTorch 在由函數(shù)對象組成的有向無環(huán)圖(DAG) 中保存張量和執(zhí)行操作的記錄。在以下 DAG 中,葉是輸入張量,根是輸出張量。

246f4f60-0e74-11ed-ba43-dac502259ad0.png

在許多熱門框架(包括 TensorFlow)中,計算圖形是一個靜態(tài)對象。PyTorch 基于動態(tài)計算圖形,即,在運行時構建和重建計算圖形,并使用與執(zhí)行前向傳遞的計算相同的代碼,同時還創(chuàng)建反向傳播所需的數(shù)據(jù)結構。PyTorch 是首個運行時定義深度學習框架,與 TensorFlow 等靜態(tài)圖形框架的功能和性能相匹配,非常適合從標準卷積網(wǎng)絡到時間遞歸神經(jīng)網(wǎng)絡等所有網(wǎng)絡。

PyTorch 用例

眾所周知,PyTorch 框架十分便捷且靈活,增強學習、圖像分類和自然語言處理等示例是比較常見的用例。

商業(yè)、研究和教育示例

自然語言處理 (NLP):從 Siri 到 Google Translate,深度神經(jīng)網(wǎng)絡在機器理解自然語言方面取得了突破性進展。其中大多數(shù)模型都將語言視為單詞或字符的平面序列,并使用一種稱為時間遞歸神經(jīng)網(wǎng)絡(RNN) 的模型處理該序列。但是,許多語言學家認為,語言極易理解為一個由短語組成的層次樹,因此,大量研究已經(jīng)進入稱為遞歸神經(jīng)網(wǎng)絡的深度學習模型,該模型將這種結構考慮在內(nèi)。雖然這些模型難以實現(xiàn)且運行效率低下,但 PyTorch 使這些模型和其他復雜自然語言處理變得容易得多。Salesforce 正在使用 PyTorch 進行 NLP 和多任務學習。

研究:PyTorch 具有易用性、靈活性和快速原型設計,是研究的首選。斯坦福大學正在利用 PyTorch 的靈活性高效研究新的算法方法。

教育:Udacity 正在使用 PyTorch 培養(yǎng) AI 創(chuàng)新者。

PyTorch 的重要意義

數(shù)據(jù)科學家

對于熟悉 Python 的程序員而言,PyTorch 學習起來相對容易。它提供了簡單的調(diào)試、簡單的 API ,并且兼容各種內(nèi)置 Python 的擴展。其動態(tài)執(zhí)行模型也非常適合原型設計,盡管會產(chǎn)生一些性能開銷。

軟件開發(fā)者

PyTorch 支持各種功能,可以快速輕松地部署 AI 模型。它還具有豐富的庫生態(tài)系統(tǒng),如 Captum(用于模型可解釋性)、skorch(scikit-learn 兼容性)等,以支持開發(fā)。PyTorch 具有出色的加速器生態(tài)系統(tǒng),例如,Glow(用于訓練)和 NVIDIA TensorRT(用于推理)。

GPU:深度學習的關鍵

在架構方面,CPU 僅由幾個具有大緩存內(nèi)存的核心組成,一次只可以處理幾個軟件線程。相比之下,GPU 由數(shù)百個核心組成,可以同時處理數(shù)千個線程。

2482061e-0e74-11ed-ba43-dac502259ad0.jpg

先進的深度學習神經(jīng)網(wǎng)絡可能有數(shù)百萬乃至十億以上的參數(shù)需要通過反向傳播進行調(diào)整。由于神經(jīng)網(wǎng)絡由大量相同的神經(jīng)元構建而成,因此本質(zhì)上具有高度并行性。這種并行性會自然地映射到 NGC (NVIDIA GPU Cloud),用戶可以在其中提取容器,這些容器具有可用于各種任務(例如計算機視覺、自然語言處理等)的預訓練模型,且所有依賴項和框架位于一個容器中。借助 NVIDA 的 TensorRT,使用 NVIDIA GPU 時,可以在 PyTorch 上顯著提高推理性能。

面向開發(fā)者的 NVIDIA 深度學習

GPU 加速深度學習框架能夠為設計和訓練自定義深度神經(jīng)網(wǎng)絡帶來靈活性,并為 Python 和 C/C++ 等常用編程語言提供編程接口。MXNet、PyTorch、TensorFlow 等廣泛使用的深度學習框架依賴于 NVIDIA GPU 加速庫,能夠提供高性能的多 GPU 加速訓練。

248e45fa-0e74-11ed-ba43-dac502259ad0.png

NVIDIA GPU 加速的端到端數(shù)據(jù)科學

基于 CUDA-X AI 創(chuàng)建的 NVIDIA RAPIDS開源軟件庫套件使您完全能夠在 GPU 上執(zhí)行端到端數(shù)據(jù)科學和分析流程。此套件依靠 NVIDIA CUDA 基元進行低級別計算優(yōu)化,但通過用戶友好型 Python 接口實現(xiàn)了 GPU 并行化和高帶寬顯存速度。

借助 RAPIDS GPU DataFrame,數(shù)據(jù)可以通過一個類似 Pandas 的接口加載到 GPU 上,然后用于各種連接的機器學習和圖形分析算法,而無需離開 GPU。這種級別的互操作性是通過 Apache Arrow 這樣的庫實現(xiàn)的。這可加速端到端流程(從數(shù)據(jù)準備到機器學習,再到深度學習)。

24c1987e-0e74-11ed-ba43-dac502259ad0.png

RAPIDS 支持在許多熱門數(shù)據(jù)科學庫之間共享設備內(nèi)存。這樣可將數(shù)據(jù)保留在 GPU 上,并省去了來回復制主機內(nèi)存的高昂成本。

24e3429e-0e74-11ed-ba43-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4814

    瀏覽量

    102629
  • python
    +關注

    關注

    54

    文章

    4756

    瀏覽量

    84283
  • pytorch
    +關注

    關注

    2

    文章

    795

    瀏覽量

    13076

原文標題:NVIDIA 大講堂 | 什么是 PYTORCH ?

文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Facebook致力AI開源PyTorch 1.0 AI框架

    Facebook近日宣布,將于近期開源PyTorch 1.0 AI框架,據(jù)悉,該框架PyTorch與Caffe 2的結合,可以讓開發(fā)者無需
    的頭像 發(fā)表于 05-08 14:58 ?3357次閱讀

    Facebook致力AI 開源PyTorch1.0 AI框架

    導讀: Facebook近日宣布,將于近期開源PyTorch 1.0 AI框架,據(jù)悉,該框架PyTorch與Caffe 2的結合,可以讓開
    的頭像 發(fā)表于 06-18 10:30 ?3127次閱讀

    Facebook與CMU聯(lián)手打造開源框架PyRobot

    Facebook AI近期對機器人技術非常熱衷,剛剛又開源了機器人框架PyRobot,該框架是與卡內(nèi)基梅隆大學合作創(chuàng)建,可運行由Facebook的機器學習
    發(fā)表于 06-24 15:14 ?3771次閱讀

    為什么學習深度學習需要使用PyTorch和TensorFlow框架

    如果你需要深度學習模型,那么 PyTorch 和 TensorFlow 都是不錯的選擇。 并非每個回歸或分類問題都需要通過深度學習來解決。
    的頭像 發(fā)表于 09-14 10:57 ?3379次閱讀

    PFN研究方向轉變,為什么從深度學習開源框架到了PyTorch

    據(jù)MONOist網(wǎng)站報道,12月5日,PFN宣布今后將不再進行深度學習開源框架Chainer的重大升級,只對其進行修復和維護工作,今后的研究方向將轉向。
    的頭像 發(fā)表于 12-06 11:05 ?2661次閱讀

    Facebook研究開放新框架,讓深度學習更加容易

    FAIR一直是深度學習領域研究和開源框架的定期貢獻者。從PyTorch到ONNX, FAIR團隊為實現(xiàn)
    的頭像 發(fā)表于 03-13 15:23 ?1651次閱讀

    天才黑客George Hotz開源了一個小型深度學習框架tinygrad

    最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。
    的頭像 發(fā)表于 12-16 09:36 ?4158次閱讀

    基于PyTorch深度學習入門教程之PyTorch的安裝和配置

    神經(jīng)網(wǎng)絡結構,并且運用各種深度學習算法訓練網(wǎng)絡參數(shù),進而解決各種任務。 本文從PyTorch環(huán)境配置開始。PyTorch是一種Python接口的深度
    的頭像 發(fā)表于 02-16 15:15 ?2522次閱讀

    八種主流深度學習框架的介紹

    導讀:近幾年隨著深度學習算法的發(fā)展,出現(xiàn)了許多深度學習框架。這些框架各有所長,各具特色。常用的
    的頭像 發(fā)表于 04-26 18:45 ?8273次閱讀

    深度學習框架PyTorch和TensorFlow如何選擇

    在 AI 技術興起后,深度學習框架 PyTorch 和 TensorFlow 兩大陣營似乎也爆發(fā)了類似的「戰(zhàn)爭」。這兩個陣營背后都有大量的支持者,并且他們都有充足的理由來說明為什么他們
    發(fā)表于 02-02 10:28 ?991次閱讀

    深度學習框架pytorch入門與實踐

    的。PyTorch是一個開源深度學習框架,在深度學習
    的頭像 發(fā)表于 08-17 16:03 ?1506次閱讀

    深度學習框架是什么?深度學習框架有哪些?

    深度學習框架是什么?深度學習框架有哪些?? 深度
    的頭像 發(fā)表于 08-17 16:03 ?2574次閱讀

    深度學習框架pytorch介紹

    深度學習框架pytorch介紹 PyTorch是由Facebook創(chuàng)建的開源機器
    的頭像 發(fā)表于 08-17 16:10 ?1631次閱讀

    TensorFlow與PyTorch深度學習框架的比較與選擇

    深度學習作為人工智能領域的一個重要分支,在過去十年中取得了顯著的進展。在構建和訓練深度學習模型的過程中,深度
    的頭像 發(fā)表于 07-02 14:04 ?730次閱讀

    PyTorch深度學習開發(fā)環(huán)境搭建指南

    PyTorch作為一種流行的深度學習框架,其開發(fā)環(huán)境的搭建對于深度學習研究者和開發(fā)者來說至關重要
    的頭像 發(fā)表于 07-16 18:29 ?610次閱讀