PyTorch 是一个基于 Python 的开源深度学习框架,最初由 Facebook AI Research(FAIR)于 2016 年发布,2022 年起由隶属于 Linux 基金会的 PyTorch 基金会独立管理。 它的核心定位是带有自动微分能力的分布式高性能张量计算引擎,以动态计算图和 Python 优先的设计理念著称,是当前学术界和工业界最主流的深度学习框架之一。
核心特性
动态计算图(Define-by-Run)
计算图在代码运行时动态构建,支持使用 Python 原生控制流(如 if、for、while),允许在运行时修改网络结构,调试时可直接使用 print() 或 breakpoint(),极大提升了模型开发和原型设计的灵活性。
自动微分(Autograd)
内置自动求导引擎,通过设置 requires_grad=True 自动追踪张量操作并构建计算图,反向传播时自动计算梯度,无需手动推导微积分公式,是神经网络训练的核心基础。
GPU 加速张量计算
核心数据结构为张量(Tensor),功能类似 NumPy 的多维数组,但原生支持在 NVIDIA CUDA、AMD ROCm 及 Apple Metal 等硬件上并行运算,提供高效的训练和推理加速能力。
模块化神经网络构建
通过 torch.nn 模块提供 nn.Module 基类及丰富的预置层(如 Linear、Conv2d、LSTM)、损失函数和激活函数,支持嵌套组合与参数自动追踪,像搭积木一样构建复杂模型。
编译器优化(PyTorch 2.0+)
引入 torch.compile 和 TorchDynamo,通过 Inductor 后端实现算子融合和 CUDA Graphs 自动支持,在保持动态图灵活性的同时显著提升训练与推理性能。
分布式训练与部署
支持多机多卡并行训练(DDP、FSDP)、混合精度训练(AMP),提供 TorchScript 和 ONNX 导出能力,可在 C++、移动端及边缘设备上部署运行。
核心组件
| 组件 | 作用 |
|---|---|
| Tensor | 基本数据结构,支持 GPU 加速的多维数组 |
| Autograd | 自动微分引擎,负责梯度计算与反向传播 |
| nn.Module | 神经网络构建基类,封装层、损失函数等 |
| torch.optim | 优化器模块(SGD、Adam、AdamW 等) |
| DataLoader | 数据加载工具,支持批量读取、打乱、多进程并行 |
| torch.compile | 编译器,融合算子提升性能 |
生态系统
PyTorch 拥有极其丰富的周边生态:
- TorchVision:计算机视觉数据集、模型和预处理工具
- TorchText:自然语言处理工具库
- TorchAudio:音频处理库
- TorchServe:模型服务化部署
- ExecuTorch:边缘设备推理框架
- Hugging Face Transformers:主流 NLP 预训练模型库(底层基于 PyTorch)
- PyTorch Lightning:高级训练框架,简化训练流程
- PyTorch Geometric:图神经网络库
应用场景
- 计算机视觉:图像分类、目标检测、语义分割
- 自然语言处理:机器翻译、文本生成、大语言模型(如 Llama)
- 生成式 AI:扩散模型(如 Stable Diffusion)、AIGC
- 语音识别:音频分类、语音合成
- 强化学习:游戏 AI、机器人控制
- 科学计算:物理模拟、生物信息学