使用Python的强GPU加速进行张量和动态神经网络
此版本被撤回的原因
已弃用,请参阅 torch-directml
项目描述
PyTorch 是一个 Python 包,提供两个高级功能
- 张量计算(类似于 NumPy)并具有强大的 GPU 加速
- 基于 tape-based autograd 系统的深度神经网络
您可以在需要时重用您最喜欢的 Python 包,例如 NumPy、SciPy 和 Cython 来扩展 PyTorch。
此版本的 PyTorch 利用 DirectML 在 Windows 10 和 Windows Subsystem for Linux(WSL)上实现硬件加速。
当前支持包括来自 PyTorch Benchmark 和 TorchVision 模型 的视觉模型。请访问 运算符路线图 以获取支持运算符的完整列表。
PyTorch、PyTorch 标志及其相关标志是 Facebook Inc. 的商标。
系统 | 3.6 | 3.7 | 3.8 |
---|---|---|---|
Linux CPU | — | ||
Linux GPU | — | ||
Windows CPU / GPU | — | — | |
Linux (ppc64le) CPU | — | — | |
Linux (ppc64le) GPU | — | — | |
Linux (aarch64) CPU |
另请参阅 ci.pytorch.org HUD。
更多关于 PyTorch 的信息
在粒度级别,PyTorch 是一个由以下组件组成的库
组件 | 描述 |
---|---|
torch | 一个类似于 NumPy 的张量库,具有强大的 GPU 支持 |
torch.autograd | 一个基于 tape 的自动微分库,支持 torch 中的所有可微张量操作 |
torch.jit | 一个编译栈(TorchScript),用于从 PyTorch 代码创建可序列化和可优化的模型 |
torch.nn | 一个与 autograd 深度集成的神经网络库,旨在提供最大的灵活性 |
torch.multiprocessing | Python 多进程,但具有跨进程的 torch 张量魔法内存共享。对于数据加载和 Hogwild 训练很有用 |
torch.utils | DataLoader 和其他方便的实用函数 |
通常,PyTorch 被用作
- NumPy 的替代品,以利用 GPU 的功能。
- 一个提供最大灵活性和速度的深度学习研究平台。
进一步说明
GPU-Ready 张量库
如果您使用过 NumPy,那么您已经使用过张量(即 ndarray)。
PyTorch 提供可以在 CPU 或 GPU 上运行的张量,并通过大量加速计算。
我们提供多种张量例程来加速并满足您的科学计算需求,如切片、索引、数学运算、线性代数、缩减等。而且它们非常快!
动态神经网络:基于 tape 的 autograd
PyTorch以独特的方式构建神经网络:使用和回放录音机。
大多数框架如TensorFlow、Theano、Caffe和CNTK对世界有一个静态的看法。必须构建一个神经网络并反复使用相同的结构。改变网络的行为方式意味着必须从头开始。
在PyTorch中,我们使用一种称为反向模式自动微分的技术,它允许您以零延迟或开销任意改变网络的行为。我们的灵感来自关于这个主题的几篇研究论文,以及当前的和历史的工作,如torch-autograd、autograd、Chainer等。
虽然这项技术并非PyTorch独有,但它是迄今为止最快实现之一。您将获得疯狂研究中的速度和灵活性的最佳组合。
Python 优先
PyTorch不是将Python绑定到单体C++框架中。它是为深度集成到Python而构建的。您可以像使用NumPy / SciPy / scikit-learn等一样自然地使用它。您可以使用Python本身编写新的神经网络层,使用您喜欢的库,并使用如Cython和Numba之类的包。我们的目标是在适当的地方不重复造轮子。
命令式体验
PyTorch设计得直观、线性思维、易于使用。当您执行一行代码时,它会立即执行。没有异步的世界观。当您陷入调试器或收到错误信息和堆栈跟踪时,理解它们是直接的。堆栈跟踪指向代码定义的确切位置。我们希望您永远不要因为糟糕的堆栈跟踪或异步和不透明的执行引擎而花费几个小时调试代码。
快速且精简
PyTorch具有最小的框架开销。我们将加速库如Intel MKL和NVIDIA(cuDNN、NCCL)集成到系统中,以最大限度地提高速度。在核心,其CPU和GPU张量和神经网络后端(TH、THC、THNN、THCUNN)成熟并经过多年的测试。
因此,PyTorch非常快——无论您运行的是小型还是大型神经网络。
与Torch或一些替代方案相比,PyTorch的内存使用效率极高。我们为GPU编写了自定义内存分配器,以确保您的深度学习模型具有最大的内存效率。这使得您能够训练比以前更大的深度学习模型。
无需痛苦的扩展
编写新的神经网络模块或与PyTorch的Tensor API接口被设计成简单明了,具有最少的抽象。
您可以使用torch API 或您喜欢的基于NumPy的库,如SciPy在Python中编写新的神经网络层。
如果您想用C/C++编写您的层,我们提供了一个高效且具有最少样板代码的方便扩展API。不需要编写包装代码。您可以在这里看到一个教程,并在这里看到一个示例。
安装
二进制文件
从二进制文件通过Conda或pip轮安装的命令在我们的网站上:https://pytorch.ac.cn
NVIDIA Jetson 平台
NVIDIA的Jetson Nano、Jetson TX2和Jetson AGX Xavier的Python轮子可通过以下URL获取
- 稳定二进制文件
- 滚动每周二进制文件
它们需要4.2或更高版本的JetPack,并且由@dusty-nv维护。
从源码
如果您从源代码安装,则需要Python 3.6.2或更高版本以及C++14编译器。我们还强烈建议安装一个Anaconda环境。您将获得高质量的BLAS库(MKL),并且无论您的Linux发行版如何,您都将获得受控的依赖版本。
一旦您安装了Anaconda,以下是安装说明。
如果您想编译带有CUDA支持,请安装
- NVIDIA CUDA 9.2或更高版本
- NVIDIA cuDNN v7或更高版本
- 兼容CUDA的编译器 注意:您可以参考cuDNN支持矩阵了解不同CUDA、CUDA驱动程序和NVIDIA硬件的cuDNN版本。
如果您想禁用CUDA支持,请导出环境变量USE_CUDA=0
。其他可能有用的环境变量可以在setup.py
中找到。
如果您为NVIDIA的Jetson平台(Jetson Nano、TX1、TX2、AGX Xavier)构建,有关安装Jetson Nano PyTorch的说明在这里。
安装依赖项
常见
conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses
在Linux上
# Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda110 # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo
在MacOS上
# Add these packages if torch.distributed is needed
conda install pkg-config libuv
在Windows上
# Add these packages if torch.distributed is needed.
# Distributed package support on Windows is a prototype feature and is subject to changes.
conda install -c conda-forge libuv=1.39
获取 PyTorch 源代码
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
安装 PyTorch
在Linux上
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py install
请注意,如果您使用Anaconda,您可能会遇到由链接器引起的错误。
build/temp.linux-x86_64-3.7/torch/csrc/stub.o: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
error: command 'g++' failed with exit status 1
这是由于Conda环境中的ld
覆盖了系统ld
导致的。您应该使用修复此问题的Python较新版本。推荐的Python版本是3.6.10+、3.7.6+和3.8.1+。
在macOS上
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install
每个CUDA版本只支持一个特定的XCode版本。以下组合已报告与PyTorch兼容。
CUDA版本 | XCode版本 |
---|---|
10.0 | XCode 9.4 |
10.1 | XCode 10.1 |
在Windows上
使用CPU构建
使用CPU构建相对简单。建议使用Visual Studio 2019版本16.7.6(MSVC工具链版本14.27)或更高版本。
使用CUDA构建
NVTX是构建带有CUDA的PyTorch所需的。NVTX是CUDA分发的一部分,其中它被称为“Nsight Compute”。要将它安装到已安装的CUDA中,请再次运行CUDA安装,并勾选相应的复选框。确保在Visual Studio之后安装了带有Nsight Compute的CUDA。
目前,VS 2017 / 2019和Ninja被支持作为CMake的生成器。如果检测到ninja.exe
在PATH
中,则Ninja将用作默认生成器,否则它将使用VS 2017 / 2019。
如果选择Ninja作为生成器,则最新版本的MSVC将被选择为底层工具链。
CUDA、MSVC和PyTorch版本相互依赖;请从此表中安装匹配的版本
CUDA版本 | 最新支持的VS版本 | PyTorch版本 |
---|---|---|
9.2 | Visual Studio 2017更新5(15.5)(_MSC_VER <= 1912) |
0.4.1 ~ 1.5.1 |
10.1 | Visual Studio 2019 (16.X) (_MSC_VER < 1930) |
1.3.0 ~ 1.7.0 |
10.2 | Visual Studio 2019 (16.X) (_MSC_VER < 1930) |
1.5.0 ~ 1.7.0 |
11.0 | Visual Studio 2019 (16.X) (_MSC_VER < 1930) |
1.7.0 |
注意:从16.7.1开始的几个Visual Studio 2019版本存在编译问题,因此请确保您的Visual Studio 2019版本不在16.7.1 ~ 16.7.5之间。
通常需要其他库,如Magma、oneDNN,也称为MKLDNN或DNNL、和Sccache。请参阅安装助手以安装它们。
您可以参考build_pytorch.bat脚本了解其他环境变量配置。
cmd
:: [Optional] If you want to build with the VS 2017 generator for old CUDA and PyTorch, please change the value in the next line to `Visual Studio 15 2017`.
:: Note: This value is useless if Ninja is detected. However, you can force that by using `set USE_NINJA=OFF`.
set CMAKE_GENERATOR=Visual Studio 16 2019
:: Read the content in the previous section carefully before you proceed.
:: [Optional] If you want to override the underlying toolset used by Ninja and Visual Studio with CUDA, please run the following script block.
:: "Visual Studio 2019 Developer Command Prompt" will be run automatically.
:: Make sure you have CMake >= 3.12 before you do this when you use the Visual Studio generator.
set CMAKE_GENERATOR_TOOLSET_VERSION=14.27
set DISTUTILS_USE_SDK=1
for /f "usebackq tokens=*" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [15^,16^) -products * -latest -property installationPath`) do call "%i\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=%CMAKE_GENERATOR_TOOLSET_VERSION%
:: [Optional] If you want to override the CUDA host compiler
set CUDAHOSTCXX=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\cl.exe
python setup.py install
调整构建选项(可选)
您可以选择性地调整cmake变量的配置(无需先构建),方法如下。例如,可以通过这一步调整CuDNN或BLAS的预检测目录。
在Linux上
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py build --cmake-only
ccmake build # or cmake-gui build
在macOS上
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build --cmake-only
ccmake build # or cmake-gui build
Docker 镜像
使用预构建镜像
您也可以从Docker Hub拉取预构建的Docker镜像,并使用docker v19.03+运行。
docker run --gpus all --rm -ti --ipc=host pytorch/pytorch:latest
请注意,PyTorch使用共享内存来在进程间共享数据,因此如果使用torch多进程(例如,用于多线程数据加载器),容器运行的默认共享内存段大小不足,您应该通过--ipc=host
或--shm-size
命令行选项将共享内存大小增加到nvidia-docker run
。
自己构建镜像
注意:必须使用版本 > 18.06 的docker构建。
提供Dockerfile
以构建具有Cuda支持和cuDNN v7的镜像。您可以使用PYTHON_VERSION=x.y
make变量指定Miniconda使用的Python版本,或者将其设置为空以使用默认版本。
make -f docker.Makefile
# images are tagged as docker.io/${your_docker_username}/pytorch
构建文档
要使用各种格式构建文档,您需要Sphinx和readthedocs主题。
cd docs/
pip install -r requirements.txt
然后您可以从docs/
目录运行make <format>
来构建文档。运行make
以获取所有可用输出格式列表。
如果您遇到katex错误,请运行npm install katex
。如果问题仍然存在,请尝试运行npm install -g katex
以前的版本
旧版PyTorch的安装说明和二进制文件可以在我们的网站上找到。
入门指南
三个入门指针
资源
- PyTorch.org
- PyTorch教程
- PyTorch示例
- PyTorch模型
- 从Udacity开始深度学习PyTorch入门
- 从Udacity开始机器学习PyTorch入门
- 使用PyTorch的深度神经网络Coursera
- PyTorch Twitter
- PyTorch博客
- PyTorch YouTube
通信
- 论坛:讨论实现、研究等。https://discuss.pytorch.org
- GitHub问题:错误报告、功能请求、安装问题、RFC、想法等。
- Slack:PyTorch Slack(https://pytorch.slack.com/)主要服务于中高级PyTorch用户和开发者,用于一般聊天、在线讨论、协作等。如果您是寻找帮助的新手,主要平台是PyTorch论坛。如果您需要Slack邀请,请填写此表单:https://goo.gl/forms/PP1AGvNHpSaJP8to1
- 时事通讯:无噪音的单向电子邮件时事通讯,包含有关PyTorch的重要公告。您可以通过以下链接订阅: https://eepurl.com/cbG0rv
- Facebook页面:关于PyTorch的重要公告。https://#/pytorch
- 有关品牌指南,请访问我们的网站pytorch.org
发布和贡献
PyTorch具有90天的发布周期(主要版本)。如果您遇到错误,请通过提交问题来告知我们。
我们感谢所有贡献。如果您计划贡献错误修复,请直接这样做,无需进一步讨论。
如果您计划贡献新功能、实用函数或核心扩展,请首先打开一个问题,并与我们讨论该功能。在不讨论的情况下发送PR可能会导致PR被拒绝,因为我们可能将核心引向您可能不知道的不同方向。
有关如何向PyTorch做出贡献的更多信息,请参阅我们的贡献页面。
团队
PyTorch是一个由几位技术娴熟工程师和研究人员驱动的社区项目。
PyTorch目前由Adam Paszke、Sam Gross、Soumith Chintala和Gregory Chanan维护,该项目得到了数百位才华横溢的个人以各种形式和方式的重要贡献。以下是非详尽但不断增长的一份名单:Trevor Killeen、Sasank Chilamkurthy、Sergey Zagoruyko、Adam Lerer、Francisco Massa、Alykhan Tejani、Luca Antiga、Alban Desmaison、Andreas Koepf、James Bradbury、Zeming Lin、Yuandong Tian、Guillaume Lample、Marat Dukhan、Natalia Gimelshein、Christian Sarofeen、Martin Raison、Edward Yang、Zachary Devito。
注意:此项目与同名的hughperkins/pytorch无关。Hugh是Torch社区的宝贵贡献者,并帮助了Torch和PyTorch的许多事务。
许可证
PyTorch采用BSD风格许可,如LICENSE文件所示。
项目详情
pytorch_directml-1.8.0a0.dev220506-cp38-cp38-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 877d6f7dd39fa1d7a442599a06bb0cb9b1bd5c6e8f96204f8c86ff76e9a9733b |
|
MD5 | 3cafa61b4898c2e0ad1a7a6a417cb366 |
|
BLAKE2b-256 | fffa21edca3096ddbc8a94f1bb9a155b8ef4b67f8a952021b9887389c37aa88b |
pytorch_directml-1.8.0a0.dev220506-cp38-cp38-manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f5e8150b5b5c1de251c16fc8a1da020bc0b7c5521b689c4efbb018b93bbc9512 |
|
MD5 | 4f63ac3420535036b45f2d6203d89b48 |
|
BLAKE2b-256 | eab845f8bd4da6b35afc976f3e3b0218038bed4d616587657a2fc70c51ff843e |
pytorch_directml-1.8.0a0.dev220506-cp37-cp37m-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9cf0790f1da6ac9f3e85dd32aea6a50e70ab8432ecc807dedf13c45ad0f8372 |
|
MD5 | 95334ca825db828bd535c0eb70805622 |
|
BLAKE2b-256 | 70885df6a6a88d94b6aad85750f874120659adae894aec0c251813905210a9e8 |
pytorch_directml-1.8.0a0.dev220506-cp37-cp37m-manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5d0c3addf2d748b782967bafdf4f72507867bcea6a04623fc50f6b79e3d72f2c |
|
MD5 | 6d302f0ab8b6dce4386d330342a4e432 |
|
BLAKE2b-256 | 9e8749eaa105501bac1c0b173c630f540c654a78cd13415b74b8af6f6b2697c5 |
pytorch_directml-1.8.0a0.dev220506-cp36-cp36m-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e14fba7024619743eabe44ebfc81738fc352ffab7206d83ed5a0ee157bc6dafd |
|
MD5 | 73bf910afa2d104acf0cef5b4389e70b |
|
BLAKE2b-256 | 7f8c135e8e294d80e168c70fdaf19e2a3f6644b3d43c2041c738f028da4ea467 |
pytorch_directml-1.8.0a0.dev220506-cp36-cp36m-manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d57457868758b27d3481fee19ab9c98a0d6cf6e568174fb8564ed5036133dbae |
|
MD5 | cd9f3ce14778562734b3e3c58cdc46ca |
|
BLAKE2b-256 | c72456e860293de261fe1331538ce33a16df80be546c24dcf593661d6f79ee8d |