您可以重用您最喜欢的 Python 包,例如 NumPy、SciPy 和 Cython,以在需要时扩展 PyTorch。
我们的主干健康状况(持续集成信号)可以在hud.pytorch.org上找到。
在粒度级别上,PyTorch 是一个由以下组件组成的库:
成分 | 描述 |
---|---|
torch | 像 NumPy 这样的 Tensor 库,具有强大的 GPU 支持 |
torch.autograd | 基于磁带的自动微分库,支持torch中所有可微分的Tensor操作 |
torch.jit | 用于从 PyTorch 代码创建可序列化和可优化模型的编译堆栈 (TorchScript) |
torch.nn | 与 autograd 深度集成的神经网络库,旨在实现最大的灵活性 |
torch.multiprocessing | Python 多处理,但具有神奇的跨进程 torch 张量内存共享。用于数据加载和 Hogwild 训练 |
torch.utils | DataLoader 和其他实用函数以方便使用 |
通常,PyTorch 用作:
替代 NumPy 以使用 GPU 的强大功能。 一个提供最大灵活性和速度的深度学习研究平台。进一步阐述:
如果你用过 NumPy,那么你就用过 Tensors(又名 ndarray)。
PyTorch 提供了可以在 CPU 或 GPU 上运行的张量,并大大加快了计算速度。
我们提供各种张量例程来加速和满足您的科学计算需求,例如切片、索引、数学运算、线性代数、归约。而且他们很快!
PyTorch 有一种构建神经网络的独特方式:使用和重放录音机。
TensorFlow、Theano、Caffe 和 CNTK 等大多数框架都具有静态世界观。必须构建一个神经网络并一次又一次地重复使用相同的结构。改变网络的行为方式意味着必须从头开始。
在 PyTorch 中,我们使用了一种称为反向模式自动微分的技术,它允许您以零滞后或开销任意更改网络的行为方式。我们的灵感来自关于这个主题的几篇研究论文,以及当前和过去的工作,如 torch-autograd、 autograd、 Chainer等。
虽然此技术并非 PyTorch 独有,但它是迄今为止最快的实现之一。您的疯狂研究将获得最佳的速度和灵活性。
PyTorch 不是绑定到单一 C++ 框架的 Python。它被构建为深度集成到 Python 中。您可以像使用NumPy / SciPy / scikit-learn等一样自然地使用它。您可以在 Python 本身中编写新的神经网络层,使用您最喜欢的库并使用Cython和Numba等包。我们的目标是在适当的时候不重新发明轮子。
PyTorch 的设计理念是直观、线性且易于使用。当你执行一行代码时,它就会被执行。没有异步的世界观。当您进入调试器或收到错误消息和堆栈跟踪时,理解它们很简单。堆栈跟踪指向您的代码定义的确切位置。我们希望您永远不会因为糟糕的堆栈跟踪或异步和不透明的执行引擎而花费数小时调试您的代码。
PyTorch 具有最小的框架开销。我们集成了英特尔 MKL和 NVIDIA(cuDNN、NCCL)等加速库以最大限度地提高速度。在核心方面,其 CPU 和 GPU Tensor 以及神经网络后端已经成熟并经过多年测试。
因此,PyTorch 非常快——无论您运行小型还是大型神经网络。
与 Torch 或某些替代方案相比,PyTorch 中的内存使用效率非常高。我们为 GPU 编写了自定义内存分配器,以确保您的深度学习模型具有最大的内存效率。这使您能够训练比以前更大的深度学习模型。
编写新的神经网络模块或与 PyTorch 的 Tensor API 接口的目的是简单明了且具有最少的抽象。
您可以使用 torch API或您最喜欢的基于 NumPy 的库(例如 SciPy)在 Python 中编写新的神经网络层 。
如果你想用 C/C++ 编写你的层,我们提供了一个方便的扩展 API,它高效且样板最少。无需编写包装器代码。您可以在此处查看教程,在此处查看示例。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
通过 Conda 或 pip wheels 安装二进制文件的命令在我们的网站上:https ://pytorch.org/get-started/locally/
NVIDIA 的 Jetson Nano、Jetson TX1/TX2、Jetson Xavier NX/AGX 和 Jetson AGX Orin 的 Python wheels 在这里提供,L4T 容器在这里发布
它们需要 JetPack 4.2 及更高版本,@dusty-nv和@ptrblck正在维护它们。
如果您从源代码安装,您将需要:
我们强烈建议安装Anaconda环境。您将获得高质量的 BLAS 库 (MKL),并且无论您的 Linux 发行版如何,您都可以获得受控的依赖项版本。
如果要编译支持 CUDA,请安装以下内容(注意 macOS 不支持 CUDA)
注意:您可以参考cuDNN 支持矩阵,了解具有各种受支持的 CUDA、CUDA 驱动程序和 NVIDIA 硬件的 cuDNN 版本
如果要禁用 CUDA 支持,请导出环境变量USE_CUDA=0
。其他可能有用的环境变量可以在 中找到setup.py
。
如果您正在为 NVIDIA 的 Jetson 平台(Jetson Nano、TX1、TX2、AGX Xavier)构建,可在此处获取为 Jetson Nano 安装 PyTorch 的说明
如果要使用 ROCm 支持进行编译,请安装
如果要禁用 ROCm 支持,请导出环境变量USE_ROCM=0
。其他可能有用的环境变量可以在 中找到setup.py
。
1 常见的
conda install astunparse numpy ninja pyyaml setuptools cmake typing_extensions six requests dataclasses
2 在 Linux 上
conda install mkl mkl-include
# CUDA only: 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
3 在 MacOS 上
# Add this package on intel x86 processor machines only
conda install mkl mkl-include
# Add these packages if torch.distributed is needed
conda install pkg-config libuv
4 在 Windows 上
conda install mkl mkl-include
# 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
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
1 在 Linux 上
如果您正在为 AMD ROCm 编译,那么首先运行这个命令:
# Only run this if you're compiling for ROCm
python tools/amd_build/build_amd.py
2 安装 PyTorch
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py develop
请注意,如果您使用的是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
这是由ld
Conda 环境遮蔽系统引起的ld
。您应该使用更新版本的 Python 来修复此问题。推荐的 Python 版本为 3.7.6+ 和 3.8.1+。
3 在 macOS 上
python3 setup.py develop
4 在 Windows 上
选择正确的 Visual Studio 版本。
PyTorch CI 使用 Visual C++ BuildTools,它随 Visual Studio Enterprise、Professional 或 Community Edition 一起提供。您还可以从 https://visualstudio.microsoft.com/visual-cpp-build-tools/安装构建工具。默认情况下,构建工具不 随 Visual Studio Code 一起提供。
如果要构建遗留 python 代码,请参阅在遗留代码和 CUDA 上构建
仅 CPU 构建
在这种模式下,PyTorch 计算将在你的 CPU 上运行,而不是你的 GPU
conda activate
python setup.py develop
关于 OpenMP 的注意事项:所需的 OpenMP 实现是 Intel OpenMP (iomp)。为了链接到 iomp,您需要手动下载库并通过调整CMAKE_INCLUDE_PATH
和设置构建环境LIB
。此处的说明是设置 MKL 和英特尔 OpenMP 的示例。如果没有这些 CMake 配置,将使用 Microsoft Visual C OpenMP 运行时 (vcomp)。
基于 CUDA 的构建
在这种模式下,PyTorch 计算将通过 CUDA 利用您的 GPU 进行更快的数字运算
使用 CUDA 构建Pytorch需要 NVTX。NVTX 是 CUDA distributive 的一部分,它被称为“Nsight Compute”。要将其安装到已安装的 CUDA 上,请再次运行 CUDA 安装并选中相应的复选框。确保在 Visual Studio 之后安装带有 Nsight Compute 的 CUDA。
目前支持 VS 2017 / 2019 和 Ninja 作为 CMake 的生成器。如果ninja.exe
在 中检测到PATH
,则使用 Ninja 作为默认生成器,否则将使用 VS 2017 / 2019。 如果选择 Ninja 作为生成器,则会选择最新的 MSVC 作为底层工具链。
通常需要额外的库,例如 Magma、oneDNN、又名 MKLDNN 或 DNNL和Sccache。请参考安装助手来安装它们。
其他一些环境变量配置可以参考build_pytorch.bat脚本
cmd
:: Set the environment variables after you have downloaded and unzipped the mkl package,
:: else CMake would throw an error as `Could NOT find OpenMP`.
set CMAKE_INCLUDE_PATH={Your directory}\mkl\include
set LIB={Your directory}\mkl\lib;%LIB%
:: 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^,17^) -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 develop
您可以通过执行以下操作来选择性地调整 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 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
。
注意:必须使用 docker 版本 > 18.06 构建
Dockerfile
提供用于构建具有 CUDA 11.1 支持和 cuDNN v8 的图像。您可以传递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
然后,您可以通过make <format>
从该 docs/
文件夹运行来构建文档。运行make
以获取所有可用输出格式的列表。
如果你得到一个 katex 错误运行npm install katex
。如果仍然存在,请尝试 npm install -g katex
注意:如果您
nodejs
使用不同的包管理器(例如,conda
)安装,则npm
可能会安装katex
与您的版本不兼容的版本,nodejs
并且文档构建将失败。已知有效的版本组合是node@6.13.1
和katex@0.13.18
。要安装后者,npm
您可以运行npm install -g katex@0.13.18
[/hidecontent]