目录

PyTorch 分布式概述

创建日期:2020年7月28日 | 最后更新日期:2024年10月8日 | 最后验证日期:2024年11月5日

作者: Will Constable

注意

edit 查看和编辑此教程在 github

这是torch.distributed包的概览页面。本页面的目标是将文档分类到不同的主题中,并简要描述每个主题。如果您是第一次使用PyTorch构建分布式训练应用,建议使用此文档导航到最适合您用例的技术。

介绍

PyTorch 分布式库包括一组并行模块、通信层以及用于启动和调试大规模训练任务的基础设施。

并行性API

这些并行模块提供了高级功能,并可与现有模型结合使用:

分片基础操作

DTensorDeviceMesh 是用于在N维进程组上构建并行性的分片或复制张量的基本元素。

  • DTensor 表示一个被分片和/或复制的张量,并在操作需要时自动通信以重新分片张量。

  • DeviceMesh 将加速器设备通信器抽象为一个多维数组,它管理底层 ProcessGroup 实例,用于多维并行中的集体通信。尝试我们的 Device Mesh Recipe 以了解更多。

通信APIs

The PyTorch distributed communication layer (C10D) offers both collective communication APIs (e.g., all_reduce

and all_gather) and P2P communication APIs (e.g., send and isend), which are used under the hood in all of the parallelism implementations. 使用PyTorch编写分布式应用 shows examples of using c10d communication APIs.

启动器

torchrun 是一个广泛使用的启动脚本,用于在本地和远程机器上启动进程以运行分布式 PyTorch 程序。

将并行化应用于扩展您的模型

数据并行是一种广泛采用的单程序多数据训练范式,其中模型在每个进程中被复制,每个模型副本对不同的输入数据样本计算局部梯度,在每个优化器步骤之前,梯度会在数据并行通信器组内进行平均。

当模型无法放入 GPU 时,需要使用模型并行技术(或称为分片数据并行),并且可以将这些技术组合起来形成多维(N-D)并行技术。

在决定为你的模型选择哪些并行化技术时,请遵循以下常见指南:

  1. 使用 分布式数据并行 (DDP),如果你的模型适合单个GPU,但你想通过多个GPU轻松扩展训练。

  2. 使用 FullyShardedDataParallel (FSDP) 当你的模型无法在一个GPU上运行。

  3. 使用 张量并行 (TP) 和/或 流水线并行 (PP),如果您在使用FSDP时遇到扩展限制。

注意

数据并行训练也适用于 自动混合精度(AMP)

PyTorch 分布式开发人员

如果您想为PyTorch分布式做出贡献,请参阅我们的 开发者指南

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源