重磅| Torch7團隊開源PyTorch:Python優先的深度學習框架

2020-12-18 機器之心Pro

選自PyTorch.org機器之心編譯參與:吳攀、李澤南、李亞洲

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

官網:http://pytorch.orgGitHub:https://github.com/pytorch/pytorch

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

使用強大的 GPU 加速的 Tensor 計算(類似 numpy)構建於基於 tape 的 autograd 系統的深度神經網絡

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

PyTorch 介紹

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

使用 PyTorch 的原因通常有二:

作為 numpy 的替代,以便使用強大的 GPU;將其作為一個能提供最大的靈活性和速度的深度學習研究平臺。

進一步闡述如下:

一個支持 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 等。

autograd:https://github.com/twitter/torch-autogradautograd:https://github.com/HIPS/autogradChainer:http://chainer.org/

儘管這項技術並非 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

安裝

二進位

Anaconda

conda installpytorch 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 cfficonda install -c soumith magma-cuda75 # or magma-cuda80 if CUDA 8.0

安裝 PyTorch

export MACOSX_DEPLOYMENT_TARGET=10.9 # if OSXpip install -r requirements.txtpython 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 可能會導致退回,因為我們可能會採取不同的解決方式。

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

1、分布式 PyTorch

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

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

3、用於 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 等人。

Note:本項目與 hughperkins/pytorch 有相同的名字,但無關聯。

相關焦點

  • Facebook發布開源框架PyTorch,Torch終於被移植到Python生態圈
    本周,Facebook 的 AI 研究團隊發布了一個 Python 工具包,專門針對 GPU 加速的深度神經網絡(DNN)編程。它有望輔助、或在一定程度上替代,現有的 Python 數學、統計庫(比如 NumPy)。它實現了機器學習框架 Torch 在 Python 語言環境的執行。
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智慧。本文將手把手帶你快速搭建你自己的深度學習環境,然後實現自己的第一個深度學習程序。野蠻智能,小白也能看懂的人工智慧。小編強烈建議為pytorch建立一個虛擬環境,這樣做的好處是方便我們同時使用多個深度學習框架,每個框架就對應一個虛擬環境,框架之間可以互不幹擾。具體步驟:Windows用戶搜索打開Anaconda Prompt,然後輸入:source create -n pytorch python=3.5,pytorch是這個虛擬環境的名字,你也可以給它起個別的名字,Python的版本我們也可以指定為3.6。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • 《PyTorch中文手冊》來了
    PyTorch 是一個深度學習框架,旨在實現簡單靈活的實驗。自 2017 年初首次推出,PyTorch 很快成為 AI 研究人員的熱門選擇並受到推崇。PyTorch 1.0 增加了一系列強大的新功能,大有趕超深度學習框架老大哥 TensorFlow 之勢。因此,學習 PyTorch 大有裨益!
  • 不到1000行代碼,GitHub 1400星,天才黑客開源深度學習框架tinygrad
    機器之心報導機器之心編輯部最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。
  • PyTorch框架歷史和特性更迭與安裝過程
    PyTorch是由Facebook公司開發的深度學習框架,其起源應該是Torch這個深度學習框架。Torch深度學習框架最初的開發可以追溯到2002年。相比使用Python語言作為深度學習框架前端的PyTorch,Torch使用了Lua語言作為深度學習框架的前端。由於機器學習的主流語言是Python,相比之下,Lua語言比較小眾。
  • Pytorch框架安裝方法(基於Anaconda環境和Pycharm IDE)
    本文介紹基於Anaconda環境以及PyCharm軟體結合,安裝PyTorch深度學習框架。1.6 單擊啟動Anaconda Prompt 創建虛擬「房間」通過conda創建一個名為:pytorch的虛擬「房間」,可以方便未來對不同版本的PyTorch進行管理,具體方法如下:conda create -n pytorch python=3.6
  • 從零開始搭建深度學習伺服器:TensorFlow + PyTorch + Torch
    本教程轉載於深度學習中文社區(studydl.com).在深度學習大行其道的今天,我們不應該停留於觀望的階段,我們應該多多上手進行實踐,下面將為大家介紹一下最簡單也是最基礎的內容,配置一個自己的深度學習伺服器.1.
  • PyTorch為何如此高效好用?來探尋深度學習框架的內部架構
    作為 Facebook 人工智慧團隊(FAIR)提供支持的深度學習框架,PyTorch 自 2017 年 1 月推出以來立即成為了一種流行開發工具。其在調試、編譯等方面的優勢使其受到了學界研究者們的普遍歡迎。本文中,來自蒙特婁綜合理工學院的研究員 Christian S.
  • 商湯開源最大目標跟蹤庫PySOT,代碼已正式上線!
    前幾天 CVer推送一篇:重磅!商湯開源最大目標跟蹤庫PySOT:含SiamRPN++和SiamMask等算法,介紹了來自商湯科技的STVIR(SenseTime Video Intelligence Research team)開源的目標跟蹤庫:PySOT。
  • 天才黑客George Hotz開源了一個小型深度學習框架tinygrad
    天才黑客George Hotz開源了一個小型深度學習框架tinygrad 人工智慧與大數據 發表於 2020-12-16 09:36:56 最近,天才黑客
  • PyTorch 1.7發布,支持CUDA 11、Windows分布式訓練
    機器之心報導參與:魔王、小舟昨日,PyTorch 團隊發布 PyTorch 1.7 版本。該版本增添了很多新特性,如支持 CUDA 11、Windows 分布式訓練、增加了支持快速傅立葉變換(FFT)的新型 API 等。
  • Deep CARs:使用Pytorch學習框架實現遷移學習
    更準確地說,是使用一個深度神經網絡,因此得名Deep CARs(深度計算機自動額定值系統)。想要實現這一目標,需要完成兩部分的學習,第1部分:構建汽車分類器;第2部分:部署分類器。本文將著重論述第1部分內容。我們將使用一種叫做遷移學習的方法來訓練分類器。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    對於許多開發者來說,TensorFlow是他們接觸的第一個機器學習框架。TensorFlow框架儘管意義非凡,引起極大關注和神經網絡學習風潮,但對一般開發者用戶太不友好。軟體開發者畢竟不是科學家,很多時候簡單易學易用是程式設計師選擇的第一要素。
  • 深度學習環境搭建詳細教程
    ===0.6.1 -f https://download.pytorch.org/whl/torch_stable.html# 測試 PyTorch,進入 cmd# 沒有 GPU 資源,不報錯即可ipythonimport torch
  • 「GitHub熱門開源」構建NLP深度學習模型其實就是搭積木
    ,微軟亞洲網際網路工程院NLP團隊重磅推出開源項目NeuronBlocks,使得上述複雜的任務像搭積木一樣簡單!其實,構建NLP深度學習模型就是搭積木。在構建自然語言理解深度學習模型過程中,研究人員或者工程師們經常需要在編程細節和代碼調試上花費大量精力,而不是專注於模型架構設計與參數調整。
  • Keras vs PyTorch:誰是第一深度學習框架?
    兩大框架的連結:  Keras:https://github.com/keras-team/keras (https://keras.io/)  PyTorch:https://github.com/pytorch/pytorch  你想學習深度學習嗎?
  • 真的要說再見,PyTorch宣告不再支持Python2
    機器之心報導參與:一鳴、杜偉自從官方宣布 2020 年 1 月後不再更新維護 Python2,已經有一大批開源軟體將其拋棄。今天,拋棄 Python2 的名單上又多了一個重磅軟體。基於以上這些原因,我們決定在 2020 年 1 月 1 日之後停止對 Python 2.7 的支持,從而與 Python 開發團隊放棄支持 Python 2.7 的時間線保持一致。
  • PyTorch 更新1.5版本 TorchServe正式上線
    在業界,如果說哪兩個深度學習框架最受關注,那無非是以TensorFlow為代表的靜態深度學習框架,與PyTorch為代表的動態框架。TorchServe由Facebook與 AWS 還合作共同推出,並成為了PyTorch開源項目的一部分。TorchServe是一個PyTorch模型服務函式庫,並且整合TorchElastic和Kubernetes,讓分散式訓練更加自動化,以幫助使用者能夠快速大規模部署經過訓練的PyTorch模型。
  • PyTorch-Transformers:最先進的自然語言處理庫(附帶python代碼)
    https://github.com/huggingface/pytorch-transformers我們可以簡單地用Python導入它並進行實驗。我對現在NLP的研發速度感到非常驚訝,每一篇新論文、每一個框架和庫都在推動著這個不可思議的強大領域的發展。