PyTorch 的设计思路是线性、直观且易于使用。当你需要执行一行代码时,它会忠实执行。PyTorch 没有异步的世界观。当你打开调试器,或接收到错误代码和 stack trace 时,你会发现理解这些信息是非常轻松的。
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-autograd
autograd:https://github.com/HIPS/autograd
Chainer: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 install pytorch torchvision -c soumith
来自源
Anaconda 环境的阐明
假如你想要用 CUDA 支撑编译、装置:
NVIDIA CUDA 7.5 或之上的版别
NVIDIA CuDNN v5.x
装置可选依靠包
- exportCMAKE_PREFIX_PATH=[anacondarootdirectory]
- condainstallnumpymklsetuptoolscmakegcccffi
- condainstall-csoumithmagma-cuda75#ormagma-cuda80ifCUDA8.0
装置 PyTorch
- exportMACOSX_DEPLOYMENT_TARGET=10.9#ifOSX
- pipinstall-rrequirements.txt
- pythonsetup.pyinstall
开端运用
从以下三点开端学习运用 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
假如你愿意为 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 等人。