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

2020-12-25 機器之心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 有相同的名字,但無關聯。

相關焦點

  • Torch7 開源 PyTorch:Python 優先深度學習框架
    Torch7 團隊開源了 PyTorch。據官網介紹,PyTorch 是一個 Python 優先的深度學習框架,能夠在強大的 GPU 加速基礎上實現張量和動態神經網絡。
  • Facebook 發布開源框架 PyTorch, Torch 終於被移植到 Python 生態...
    它實現了機器學習框架 Torch 在 Python 語言環境的執行。開發團隊表示,除 Facebook之外,它還已經被推特、卡內基梅隆大學和 Salesforce 等機構採用。這是由於 PyTorch 採用了動態計算圖(dynamic computational graph)結構,而不是大多數開源框架,比如 TensorFlow、Caffe、CNTK、Theano 等採用的靜態計算圖。雷鋒網(公眾號:雷鋒網)獲知,該技術從另一個 Python 的神經網絡框架——Chainer 那裡借用。
  • 在Linux系統中安裝深度學習框架Pytorch
    設為星標才不會錯過哦     你好呀 我是然怡這篇推文是兩個月前復現深度學習論文時做的筆記一系列的筆記做了好幾篇看著閱讀量很低就沒有再發公眾號很久沒有推文了前幾天對公眾號進行了小改「然怡乾貨鋪」改為「水文sw」頭像也是換了的
  • Caffe2代碼全部併入PyTorch:深度學習框架格局劇震
    昨日,Caffe2 的 Github 頁面突然出現了一個「巨大的改動」:Caffe2 開原始碼正式併入 PyTorch,至此,Facebook 主力支持的兩大深度學習框架已合二為一。這兩大框架,在整個深度學習框架格局中都極受關注。
  • onnx實現對pytorch模型推理加速
    公眾號:datayx微軟宣布將多平臺通用ONNX機器學習引擎開源,此舉將讓機器學習框架,向著機器學習框架的標準化和性能優化方向邁進了一大步。《美團機器學習實踐》_美團算法團隊.pdf《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼特徵提取與圖像處理(第二版).pdfpython就業班學習視頻,從入門到實戰項目2019最新《PyTorch
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智慧。本文將手把手帶你快速搭建你自己的深度學習環境,然後實現自己的第一個深度學習程序。野蠻智能,小白也能看懂的人工智慧。小編強烈建議為pytorch建立一個虛擬環境,這樣做的好處是方便我們同時使用多個深度學習框架,每個框架就對應一個虛擬環境,框架之間可以互不幹擾。具體步驟:Windows用戶搜索打開Anaconda Prompt,然後輸入:source create -n pytorch python=3.5,pytorch是這個虛擬環境的名字,你也可以給它起個別的名字,Python的版本我們也可以指定為3.6。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • PYTORCH與TENSORFLOW:哪種框架最適合您的深度學習項目?
    為了幫助開發這些架構,諸如Google,Facebook和Uber之類的技術巨頭已經發布了適用於Python深度學習環境的各種框架,從而使學習,構建和訓練多樣化的神經網絡變得更加容易。在本文中,我們將研究兩個流行的框架並進行比較:PyTorch與TensorFlow。簡要地比較一下,最常用和依賴的Python框架TensorFlow和PyTorch。
  • 《PyTorch中文手冊》來了
    PyTorch 是一個深度學習框架,旨在實現簡單靈活的實驗。自 2017 年初首次推出,PyTorch 很快成為 AI 研究人員的熱門選擇並受到推崇。PyTorch 1.0 增加了一系列強大的新功能,大有趕超深度學習框架老大哥 TensorFlow 之勢。因此,學習 PyTorch 大有裨益!
  • 16個GitHub值得收藏的深度學習框架
    在本文中文小編將為大家詳細介紹16種GitHub中最受歡迎的深度學習開源平臺和開源庫,除此之外,還有些比較不錯的平臺和框架雖然沒有進入榜單,文小編也列了出來,供大家參考。 GitHub收藏和貢獻率最高的16個開源深度學習框架,圓圈的顏色越偏綠色表示框架越新,顏色越偏藍色表明框架的時間越早。
  • 深度學習之Pytorch基礎教程!
    ,深度學習框架開始大量的出現。尤其是近兩年,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源的深度學習框架。目前研究人員正在使用的深度學習框架不盡相同,有 TensorFlow 、Pytorch、Caffe、Theano、Keras等。這其中,TensorFlow和Pytorch佔據了深度學習的半壁江山。
  • 商湯開源最大目標跟蹤庫PySOT,代碼已正式上線!
    前幾天 CVer推送一篇:重磅!商湯開源最大目標跟蹤庫PySOT:含SiamRPN++和SiamMask等算法,介紹了來自商湯科技的STVIR(SenseTime Video Intelligence Research team)開源的目標跟蹤庫:PySOT。
  • PyTorch框架歷史和特性更迭與安裝過程
    PyTorch是由Facebook公司開發的深度學習框架,其起源應該是Torch這個深度學習框架。Torch深度學習框架最初的開發可以追溯到2002年。相比使用Python語言作為深度學習框架前端的PyTorch,Torch使用了Lua語言作為深度學習框架的前端。由於機器學習的主流語言是Python,相比之下,Lua語言比較小眾。
  • 從零開始搭建深度學習伺服器:TensorFlow + PyTorch + Torch
    本教程轉載於深度學習中文社區(studydl.com).在深度學習大行其道的今天,我們不應該停留於觀望的階段,我們應該多多上手進行實踐,下面將為大家介紹一下最簡單也是最基礎的內容,配置一個自己的深度學習伺服器.1.
  • 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.
  • pytorch專題前言 | 為什麼要學習pytorch?
    我們先了解一下什麼是pytorch。pytorch是一個開源的機器學習平臺。2017年1月,Facebook人工智慧研究院(FAIR)團隊在 Github上開源了Pytorch,並迅速佔據Github熱度榜榜首。
  • 【Pytorch】PyTorch的4分鐘教程,手把手教你完成線性回歸
    大數據文摘出品編譯:洪穎菲、寧靜PyTorch深度學習框架庫之一,是來自Facebook的開源深度學習平臺,提供研究原型到生產部署的無縫銜接。本文旨在介紹PyTorch基礎部分,幫助新手在4分鐘內實現python PyTorch代碼的初步編寫。
  • 【深度學習】相當全面的深度學習環境配置指南!(Windows、Mac、Ubuntu全講解)
    俗話說,環境配不對,學習兩行淚。如果你正在面臨配置環境的痛苦,不管你是Windows用戶、Ubuntu用戶還是蘋果死忠粉,這篇文章都是為你量身定製的。接下來就依次講下Windows、Mac和Ubuntu的深度學習環境配置問題。
  • 天才黑客George Hotz開源了一個小型深度學習框架tinygrad
    天才黑客George Hotz開源了一個小型深度學習框架tinygrad 人工智慧與大數據 發表於 2020-12-16 09:36:56 最近,天才黑客