PyTorch是一个开源的深度学习库,最初由Meta Platforms开发,目前由Linux基金会支持。它是Torch的继任者,提供构建在优化后的底层算法和架构实现之上的高级API,这些算法和架构包括Transformer和SGD变体。该库将模型训练和推理简化为几行代码,支持自动并行化,并实现了CUDA绑定以利用GPU资源。截至2025年,它仍然是与TensorFlow和Keras并列的最流行的深度学习库之一,并为包括ChatGPT、Tesla Autopilot、Uber的Pyro以及Hugging Face的Transformers在内的商业系统提供支撑。
PyTorch使用张量作为基本数据类型,类似于NumPy数组,但支持GPU操作。训练通过Autograd实现,这是一种反向自动微分系统,在前向传播过程中构建操作的有向无环图,从而能够使用损失函数进行反向传播。该库可以通过Anaconda包管理器安装,并在研究和工业领域被广泛采用。
历史与发展
最初的Torch库于2001年由Idiap研究所根据GPL许可证发布,使用C++和CUDA编写,支持神经网络和支持向量机等方法。大约在2010年,Ronan Collobert、Clement Farabet和Koray Kavukcuoglu将其重写为Torch7或LuaTorch,采用C后端和Lua前端。2016年年中,开发者对其进行了重构,以解耦前端和后端,受到了torch-autograd和Chainer的影响,而后者又借鉴了HIPS/autograd。Torch7的开发于2018年停止,被PyTorch项目所取代。
Meta还运营着Caffe2,但这两个框架的模型互不兼容。2017年9月,Meta和微软创建了开放神经网络交换(ONNX)项目,旨在将框架与硬件特定的运行时解耦,从而实现模型转换和针对NVIDIA TensorRT等执行提供商的优化。Caffe2于2018年3月底并入PyTorch。2022年9月,Meta宣布PyTorch将由独立的PyTorch基金会管理,该基金会是Linux基金会的子公司。PyTorch 2.0于2023年3月15日发布,引入了TorchDynamo,这是一个Python级编译器,可将代码速度提升最多两倍,并在各大云平台上进行了改进。
张量操作
PyTorch定义了Tensor类(torch.Tensor),用于存储和操作同质的多维矩形数字数组。张量类似于NumPy数组,但可以由支持CUDA的NVIDIA GPU进行操作。该库还开发了对其他GPU平台的支持,包括AMD的ROCm和Apple的Metal Framework。这种灵活性使得在不同硬件环境中进行高效计算成为可能。
神经网络模块
torch.nn模块提供了全面的神经网络构建块集合,包括层和激活函数。网络通过继承该模块并在forward()函数中定义操作序列来构建。这种设计支持复杂的模型架构,从简单的线性层到残差网络和U-Net等高级结构,促进了研究和部署。
序列化与文件格式
PyTorch可以使用自己的文件格式保存和加载模型,这是一种ZIP64归档,包含Python pickle文件中的模型权重,以及字节顺序等元数据。常见的文件扩展名是.pt和.pth。这种序列化功能支持模型持久化和共享,对于生产部署和协作开发至关重要。
使用示例
以下程序演示了该库的底层功能。使用nn模块定义了一个带有线性层的简单神经网络,展示了构建和训练模型的简便性。该示例突出了核心工作流程:定义网络、指定损失函数,并使用Adam等优化器执行反向传播。
参见
相关主题包括深度学习软件比较、可微分编程、DeepSpeed、开源人工智能和PyTorch Lightning。这些资源为更广泛的背景提供了参考。