Torch7 開源 PyTorch:Python 優先深度學習框架

2021-01-08 開源中國

Torch7 團隊開源了 PyTorch。據官網介紹,PyTorch 是一個 Python 優先的深度學習框架,能夠在強大的 GPU 加速基礎上實現張量和動態神經網絡。

PyTorch 是一個 Python 軟體包,其提供了兩種高層面的功能:

如有需要,你也可以復用你最喜歡的 Python 軟體包(如 numpy、scipy 和 Cython)來擴展 PyTorch。目前這個版本是早期的 Beta 版,我們很快就會加入更多的功能。

PyTorch 介紹

在粒度層面(granular level)上,PyTorch 庫包含了以下組件:

使用 PyTorch 的原因通常有二:

進一步闡述如下:

一個支持 GPU 的 Tensor 庫

如果你使用 numpy,那麼你就使用過 Tensor(即 ndarray)。

PyTorch 提供了支持 CPU 和 GPU 的 Tensor,可以極大地加速計算。

我們提供了各種各樣的用於加速的張量例程(tensor routine),可以滿足你的各種科學計算需求,比如 slicing、索引、數學運算、線性代數、reduction。而且它們非常快!

動態神經網絡:基於 tape 的 autograd

PyTorch 有一種獨特的神經網絡構建方法:使用和重放 tape recorder。TensorFlow、Theano、Caffe 和 CNTK 等大部分框架對世界的視角都是靜態的,讓人們必須先構建一個神經網絡,然後一次又一次地使用同樣的結構;如果要想改變該網絡的行為,就必須完全從頭開始。

但使用 PyTorch,通過一種我們稱之為「Reverse-mode auto-differentiation(反向模式自動微分)」的技術,你可以零延遲或零成本地任意改變你的網絡的行為。我們靈感來自關於這一主題的許多研究論文以及當前和過去的研究成果,比如 autograd、autograd、Chainer 等。

儘管這項技術並非 PyTorch 獨有,但它仍然是到目前為止最快的實現。你能為你的瘋狂研究獲得最高的速度和最佳的靈活性。

Python 優先

PyTorch 不是簡單地在整體 C++框架上綁定 Python。它深入構建在 Python 之上。你可以像使用 numpy / scipy / scikit-learn 那樣輕鬆地使用 PyTorch。你可以用你喜歡的庫和包(如 Cython 和 Numba)在 Python 中編寫新的神經網絡層。我們的目標是儘量讓你不用重新發明輪子。

命令式體驗

PyTorch 的設計思路是線性、直觀且易於使用。當你需要執行一行代碼時,它會忠實執行。PyTorch 沒有異步的世界觀。當你打開調試器,或接收到錯誤代碼和 stack trace 時,你會發現理解這些信息是非常輕鬆的。Stack-trace 點將會直接指向代碼定義的確切位置。我們不希望你在 debug 時會因為錯誤的指向或異步和不透明的引擎而浪費時間。

快速精益

PyTorch 具有輕巧的框架。我們集成了各種加速庫,如 Intel MKL、英偉達的 CuDNN 和 NCCL 來優化速度。在其核心,它的 CPU 和 GPU Tensor 與神經網絡後端(TH、THC、THNN、THCUNN)被編寫成了獨立的庫,帶有 C99 API。

這種配置是成熟的,我們已經使用了多年。

因此,PyTorch 非常高效——無論你需要運行何種尺寸的神經網絡。

在 PyTorch 中,內存的使用效率相比 Torch 或其它方式都更加高效。我們為 GPU 編寫了自定義內存分配器,以保證深度學習模型在運行時有最高的內存效率,這意味著在相同硬體的情況下,你可以訓練比以前更為複雜的深度學習模型。

輕鬆拓展

編寫新的神經網絡模塊,或與 PyTorch 的 Tensor API 相接的設計都是很直接的,不太抽象。

你可以使用 Torch API 或你喜歡的基於 numpy 的庫(比如 Scipy)來通過 Python 寫新的神經網絡層。

如果你想用 C++ 寫網絡層,我們提供了基於 cffi(http://cffi.readthedocs.io/en/latest/)的擴展 API,其非常有效且有較少的樣板文件。

不需要寫任何 wrapper code。這裡有一個示例:https://github.com/pytorch/extension-ffi

安裝

二進位

conda install pytorch torchvision -c soumith

來自源

Anaconda 環境的說明。

如果你想要用 CUDA 支持編譯、安裝:

NVIDIA CUDA 7.5 或之上的版本

NVIDIA CuDNN v5.x

安裝可選依賴包

export CMAKE_PREFIX_PATH=[anaconda root directory]

conda install numpy mkl setuptools cmake gcc cffi

conda install -c soumith magma-cuda75 # or magma-cuda80 if CUDA 8.0

安裝 PyTorch

export MACOSX_DEPLOYMENT_TARGET=10.9 # if OSX

pip install -r requirements.txt

python setup.py install

開始使用

從以下三點開始學習使用 PyTorch:

教程:開始了解並使用 PyTorch 的教程(https://github.com/pytorch/tutorials)。

案例:跨所有領域的輕鬆理解 PyTorch 代碼(https://github.com/pytorch/examples)。

API 參考:http://pytorch.org/docs/

交流

論壇:討論實現、研究等(http://discuss.pytorch.org)

GitHub 問題反饋:bug 通知、特徵要求、安裝問題、RFC、想法等。

Slack:通常聊天、在線討論、合作等(https://pytorch.slack.com/)。

郵件訂閱沒有騷擾信件、單向郵件推送 PyTorch 的重要通知。訂閱:http://eepurl.com/cbG0rv。

發布和貢獻

PyTorch 的發布周期(主版本)為 90 天。目前的版本是 v0.1.6 Beta,我們期望在發布前儘量減少 bug。如果你發現了錯誤,歡迎向我們提交:

https://github.com/pytorch/pytorch/issues

我們歡迎所有形式的貢獻。如果你希望幫助解決 bug,請直接上手,無需多作討論。

如果你願意為 PyTorch 提供新功能、實用函數或核心擴展,請先開一個 issue 與大家討論一下。請注意:在未經討論的情況下提交的 PR 可能會導致退回,因為我們可能會採取不同的解決方式。

在下一個版本中,我們計劃推出三大新功能:

分布式 PyTorch

(這裡已經有一個嘗試性的實現了:https://github.com/apaszke/pytorch-dist)

反反向(Backward of Backward):在反向傳播的過程中進行過程優化。一些過去和最近的研究如 Double Backprop 和 Unrolled GANs 會需要這種特性。

用於 autograd 的 Lazy Execution Engine:這將允許我們可以通過引入緩存和 JIT 編譯器來優化 autograd 代碼。

開發團隊

PyTorch 是一個社區驅動的項目,由經驗豐富的工程師和研究者開發。

目前,PyTorch 由 Adam Paszke、Sam Gross 與 Soumith Chintala 牽頭開發。其他主要貢獻者包括 Sergey Zagoruyko、Adam Lerer、Francisco Massa、Andreas Kopf、James Bradbury、Zeming Lin、田淵棟,Guillaume Lample、Marat Dukhan、Natalia Gimelshein 等人。

稿源:機器之心

相關焦點

  • 重磅| Torch7團隊開源PyTorch:Python優先的深度學習框架
    選自PyTorch.org機器之心編譯參與:吳攀、李澤南、李亞洲Torch7 團隊開源了 PyTorch。據官網介紹,PyTorch 是一個 Python 優先的深度學習框架,能夠在強大的 GPU 加速基礎上實現張量和動態神經網絡。
  • pytorch深度學習一
    pytorch最近正在學習深度學習相關的課程,近幾年深度學習可謂十分火熱,不論是在工業界還是學術界都想往深度學習上靠一靠,甚至是在隔壁的機械學院都有很多實驗室研究深度學習聲明:因為任務是學習pytorch,所以更多的還是從框架入手,以代碼為主,深度學習的基礎知識不會涉及非常多。如有需要可以去看書。今天主要內容是pytorch的介紹以及pytorch的優點特徵。
  • 深度學習-Pytorch框架及常用代碼段學習
    前言:之前一直用的是tensorflow和keras,沒有接觸過Pytorch,但是最近因為項目需求,必須要使用Pytorch,於是從娃娃抓起,從頭學習下Pytorch,做點筆記以便日後查詢。對於筆者而言,學習某個深度學習框架,最好的資料是官方所給文檔,pytorch也是如此,官方文檔連結如下:https://pytorch.org/docs/stable/index.html一、基本設置篇主要包括一些版本號查詢,基本包的導入,顯卡設置等,如有遺漏之處,煩請指出。
  • 在Linux系統中安裝深度學習框架Pytorch
    使用Python作為開發語言,是一個以Python優先的深度學習框架。本質上是Numpy的替代者。在終端輸入:conda create -n pytorch python=3.7torchvision cpuonly -c pytorch而在終端輸入的指令時將後面的 -c pytorch
  • Facebook發布開源框架PyTorch,Torch終於被移植到Python生態圈
    本周,Facebook 的 AI 研究團隊發布了一個 Python 工具包,專門針對 GPU 加速的深度神經網絡(DNN)編程。它有望輔助、或在一定程度上替代,現有的 Python 數學、統計庫(比如 NumPy)。它實現了機器學習框架 Torch 在 Python 語言環境的執行。
  • 深度學習-Pytorch框架學習之模型訓練和測試
    前言前面四篇文章,介紹了模型搭建、數據準備及pytorch中常用的計算方法等,有了上述基礎後就可以訓練模型了,下面這篇文章會簡單介紹下在pytorch框架下如何訓練深度學習模型,以及一些常用代碼。模型訓練
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智慧。本文將手把手帶你快速搭建你自己的深度學習環境,然後實現自己的第一個深度學習程序。野蠻智能,小白也能看懂的人工智慧。如果你對循環神經網絡的基本原理還不了解,可以通過小編的精講深度學習RNN三大核心點,三分鐘掌握循環神經網絡進行簡單了解。下面進入實戰環節。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?
  • 天才黑客直播手寫深度學習框架
    最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。而這些大公司也花費了很大的精力來維護 TensorFlow、PyTorch 這樣龐大的深度學習框架。
  • 《PyTorch中文手冊》來了
    PyTorch 現在是 GitHub 上增長速度第二快的開源項目,在過去的 12 個月裡,貢獻者增加了 2.8 倍。而且,去年 12 月在 NeurIPS 大會上,PyTorch 1.0 穩定版終於發布。PyTorch 1.0 增加了一系列強大的新功能,大有趕超深度學習框架老大哥 TensorFlow 之勢。
  • 從零開始搭建深度學習伺服器:TensorFlow + PyTorch + Torch
    本教程轉載於深度學習中文社區(studydl.com).在深度學習大行其道的今天,我們不應該停留於觀望的階段,我們應該多多上手進行實踐,下面將為大家介紹一下最簡單也是最基礎的內容,配置一個自己的深度學習伺服器.1.
  • 16個GitHub值得收藏的深度學習框架
    在本文中文小編將為大家詳細介紹16種GitHub中最受歡迎的深度學習開源平臺和開源庫,除此之外,還有些比較不錯的平臺和框架雖然沒有進入榜單,文小編也列了出來,供大家參考。 GitHub收藏和貢獻率最高的16個開源深度學習框架,圓圈的顏色越偏綠色表示框架越新,顏色越偏藍色表明框架的時間越早。
  • 不到1000行代碼,GitHub 1400星,天才黑客開源深度學習框架tinygrad
    22點24分準時推送,第一時間送達  編輯:技術君 | 來源:機器之心  上一篇:  正文  最近,天才黑客 George Hotz 開源了一個小型深度學習框架
  • PyTorch框架歷史和特性更迭與安裝過程
    PyTorch是由Facebook公司開發的深度學習框架,其起源應該是Torch這個深度學習框架。Torch深度學習框架最初的開發可以追溯到2002年。相比使用Python語言作為深度學習框架前端的PyTorch,Torch使用了Lua語言作為深度學習框架的前端。由於機器學習的主流語言是Python,相比之下,Lua語言比較小眾。
  • GitHub 1400星,天才黑客開源深度學習框架tinygrad
    最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。 在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。
  • Pytorch框架安裝方法(基於Anaconda環境和Pycharm IDE)
    本文介紹基於Anaconda環境以及PyCharm軟體結合,安裝PyTorch深度學習框架。1.6 單擊啟動Anaconda Prompt 創建虛擬「房間」通過conda創建一個名為:pytorch的虛擬「房間」,可以方便未來對不同版本的PyTorch進行管理,具體方法如下:conda create -n pytorch python=3.6
  • PyTorch為何如此高效好用?來探尋深度學習框架的內部架構
    作為 Facebook 人工智慧團隊(FAIR)提供支持的深度學習框架,PyTorch 自 2017 年 1 月推出以來立即成為了一種流行開發工具。其在調試、編譯等方面的優勢使其受到了學界研究者們的普遍歡迎。本文中,來自蒙特婁綜合理工學院的研究員 Christian S. Perone 將為我們介紹這種神經網絡框架的內部架構,揭開 PyTorch 方便好用的真正原因。
  • 使用PyTorch Lightning自動訓練深度神經網絡
    在我使用PyTorch之前,我使用Keras作為我的深度學習框架,但後來我開始切換到PyTorch,原因有幾個。如果你想知道我的原因,看看下面這篇文章:https://medium.com/swlh/why-i-switch-from-keras-to-pytorch-e48922f5846。
  • Caffe2代碼全部併入PyTorch:深度學習框架格局劇震
    昨日,Caffe2 的 Github 頁面突然出現了一個「巨大的改動」:Caffe2 開原始碼正式併入 PyTorch,至此,Facebook 主力支持的兩大深度學習框架已合二為一。這兩大框架,在整個深度學習框架格局中都極受關注。
  • PyTorch入門之PyTorch的安裝
    PyTorch是非常熱門的深度學習框架,要學習和使用pytorch,首先要安裝pytorch,不論您使用的作業系統是Windows、Mac還是Linux,都可以通過下面方法安裝。在安裝的過程中,一般要聯網下載安裝包,所以要保持網絡聯網和暢通,當下載很慢的時候,可能是網速慢的問題,可以試試在早上5點~7點網速比較快的時候下載安裝。