1. PyTorch 简介

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理。
许多深度学习软件都是基于 PyTorch 构建的,包括特斯拉自动驾驶、Uber 的 Pyro、Hugging Face 的 Transformers、 PyTorch Lightning 和 Catalyst。
PyTorch 主要有两大特征:

  • 类似于 NumPy 的张量计算,能在 GPU 或 MPS 等硬件加速器上加速。
  • 基于带自动微分系统的深度神经网络。

PyTorch 包括 torch.autograd、torch.nn、torch.optim 等子模块。

PyTorch 包含多种损失函数,包括 MSE(均方误差 = L2 范数)、交叉熵损失和负熵似然损失(对分类器有用)等。

2. PyTorch 特性

  • 动态计算图: PyTorch 的计算图是动态的,这意味着它们在运行时构建,并且可以随时改变。这为实验和调试提供了极大的灵活性,因为开发者可以逐行执行代码,查看中间结果。

  • 自动微分: PyTorch 的自动微分系统允许开发者轻松地计算梯度,这对于训练深度学习模型至关重要。它通过反向传播算法自动计算出损失函数对模型参数的梯度。

  • 张量计算: PyTorch 提供了类似于 NumPy 的张量操作,这些操作可以在 CPU 和 GPU 上执行,从而加速计算过程。张量是 PyTorch 中的基本数据结构,用于存储和操作数据。

  • 丰富的 API: PyTorch 提供了大量的预定义层、损失函数和优化算法,这些都是构建深度学习模型的常用组件。

  • 多语言支持: PyTorch 虽然以 Python 为主要接口,但也提供了 C++ 接口,允许更底层的集成和控制。

2.1 动态计算图

PyTorch 最显著的特点之一是其动态计算图的机制。

与 TensorFlow 的静态计算图(graph)不同,PyTorch 在执行时构建计算图,这意味着在每次计算时,图都会根据输入数据的形状自动变化。

动态计算图的优点:

  • 更加灵活,特别适用于需要条件判断或递归的场景。
  • 方便调试和修改,能够直接查看中间结果。
  • 更接近 Python 编程的风格,易于上手。

2.2 张量与自动求导

PyTorch 中的核心数据结构是 张量,它是一个多维矩阵,可以在 CPU 或 GPU 上高效地进行计算。张量的操作支持自动求导机制,使得在反向传播过程中自动计算梯度,这对于深度学习中的梯度下降优化算法至关重要。

张量:

  • 支持在 CPU 和 GPU 之间进行切换。
  • 提供了类似 NumPy 的接口,支持元素级运算。
  • 支持自动求导,可以方便地进行梯度计算。

自动求导:

  • PyTorch 内置的自动求导引擎,能够自动追踪所有张量的操作,并在反向传播时计算梯度。
  • 通过 requires_grad属性,可以指定张量需要计算梯度。
  • 支持高效的反向传播,适用于神经网络的训练。

2.3 模型定义与训练

PyTorch 提供了 torch.nn 模块,允许用户通过继承 nn.Module 类来定义神经网络模型。使用 forward 函数指定前向传播,自动反向传播(通过 autograd)和梯度计算也由 PyTorch 内部处理。

神经网络模块(torch.nn):

  • 提供了常用的层(如线性层、卷积层、池化层等)。
  • 支持定义复杂的神经网络架构(包括多输入、多输出的网络)。
  • 兼容与优化器(如 torch.optim)一起使用。

2.4 GPU 加速

PyTorch 完全支持在 GPU 上运行,以加速深度学习模型的训练。通过简单的 .to(device) 方法,用户可以将模型和张量转移到 GPU 上进行计算。PyTorch 支持多 GPU 训练,能够利用 NVIDIA CUDA 技术显著提高计算效率。

GPU 支持:

  • 自动选择 GPU 或 CPU。
  • 支持通过 CUDA 加速运算。
  • 支持多 GPU 并行计算(DataParallel 或 torch.distributed)。

3. 与其他框架对比

PyTorch 由于其灵活性、易用性和社区支持,已经成为很多深度学习研究者和开发者的首选框架。

3.1 TensorFlow vs PyTorch

在这里插入图片描述

3.2 PyTorch vs NumPy

在这里插入图片描述

4. PyTorch安装

4.1 支持的操作系统

Windows:Windows 10 或更高版本(64位)
macOS:macOS 10.15 (Catalina) 或更高版本
Linux:主流发行版(Ubuntu 18.04+、CentOS 7+、RHEL 7+等)

4.2 Python 版本要求

推荐版本:Python 3.8 - 3.11
最低要求:Python 3.7
注意:Python 3.12+ 支持可能有限,建议使用稳定版本

4.3 硬件要求

CPU:支持 SSE4.2 指令集的 x86_64 处理器
内存:至少 4GB RAM(推荐 8GB+)
存储:至少 3GB 可用空间
GPU(可选):NVIDIA GPU with CUDA Compute Capability 3.5+
在这里插入图片描述

4.4 安装前的准备工作

Windows:

# 检查 Windows 版本
winver

# 检查 Python 版本
python --version

# 检查是否有 NVIDIA GPU
nvidia-smi

macOS

# 检查 macOS 版本
sw_vers

# 检查 Python 版本
python3 --version

# 检查是否有兼容的 GPU(Apple Silicon)

Linux

# 检查发行版信息
cat /etc/os-release

# 检查 Python 版本
python3 --version

# 检查 NVIDIA GPU
nvidia-smi

# 检查 CUDA 版本(如果已安装)
nvcc --version

4.5 Python 环境管理

使用 Anaconda/Miniconda:

# 下载并安装 Miniconda
# Windows: https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe
# macOS: https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
# Linux: https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 创建专用环境
conda create -n pytorch_env python=3.10
conda activate pytorch_env

使用 venv(Python 自带)

# 创建虚拟环境
python -m venv pytorch_env

# 激活环境
# Windows
pytorch_env\Scripts\activate
# macOS/Linux
source pytorch_env/bin/activate

4.6 安装 PyTorch

PyTorch 官方提供了几种安装方法,可以通过 pip 或 conda 进行安装。

CPU 版本安装

使用 pip 安装 pytorch:

# 最新稳定版本
pip install torch torchvision torchaudio

# 指定版本
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0

# 仅 CPU 版本(更小的安装包)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

使用 conda 安装:
如果你使用 Anaconda 或 Miniconda 管理 Python 环境,使用 conda 安装 PyTorch 可能会更加简单和高效。

# 从 conda-forge 安装
conda install pytorch torchvision torchaudio cpuonly -c pytorch

# 或从 conda-forge 渠道
conda install pytorch torchvision torchaudio -c conda-forge
通过 PyTorch 官网安装

访问 PyTorch 的官方网站 https://pytorch.org/get-started/locally/,网站提供了一个方便的工具,可以根据你的系统配置(操作系统、包管理器、Python版本以及CUDA版本)推荐安装命令。
在这里插入图片描述

从源代码安装

如果你需要从源代码安装PyTorch,或者想要尝试最新的开发版本,你可以使用以下命令:

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
python setup.py install

这将从 GitHub 克隆 PyTorch 的源代码,并使用 setup.py 进行安装。

GPU 版本安装(CUDA)

安装 CUDA(如果需要):

# Ubuntu/Debian
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2004-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

# CentOS/RHEL
sudo yum install -y https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-repo-rhel8-12.1.0-1.x86_64.rpm
sudo yum clean all
sudo yum -y install cuda

安装 PyTorch GPU 版本:

# CUDA 12.1 版本
pip install torch torchvision torchaudio

# CUDA 11.8 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 使用 conda
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

4.7 验证安装

为了确保 PyTorch 已正确安装,我们可以通过执行以下 PyTorch 代码来验证是否安装成功:

import torch

# 当前安装的 PyTorch 库的版本
print(torch.__version__)
# 检查 CUDA 是否可用,即你的系统有 NVIDIA 的 GPU
print(torch.cuda.is_available())

如果 torch.cuda.is_available() 输出 True,则说明 PyTorch 成功识别到你的 GPU。
一个简单的实例,构建一个随机初始化的张量:

import torch
x = torch.rand(5, 3)
print(x)

如果安装成功,输出结果类似如下:

tensor([[0.3380, 0.3845, 0.3217],
        [0.8337, 0.9050, 0.2650],
        [0.2979, 0.7141, 0.9069],
        [0.1449, 0.1132, 0.1375],
        [0.4675, 0.3947, 0.1426]])

更多推荐