PyTorch 分布式概述#
创建于: 2020年7月28日 | 最后更新: 2025年7月20日 | 最后验证: 2024年11月05日
作者: Will Constable, Wei Feng
注意
在 github 上查看和编辑此教程。
这是 torch.distributed 包的概述页面。本页面的目标是将文档分类到不同的主题中,并简要描述每个主题。如果您是第一次使用 PyTorch 构建分布式训练应用程序,建议使用本文档来导航到最能满足您用例的技术。
简介#
PyTorch 分布式库包含一系列并行模块、一个通信层以及用于启动和调试大型训练作业的基础设施。
并行 API#
这些并行模块提供高级功能,并与现有模型结合使用
通信 API#
- PyTorch 分布式通信层 (C10D) 提供了集体通信 API(例如,all_reduce
和 all_gather)以及 P2P 通信 API(例如,send 和 isend),这些 API 在所有并行实现中都有使用。 使用 PyTorch 编写分布式应用程序 展示了使用 c10d 通信 API 的示例。
启动器#
torchrun 是一个广泛使用的启动脚本,它在本地和远程机器上生成进程来运行分布式 PyTorch 程序。
应用并行化以扩展您的模型#
数据并行是一种广泛采用的单程序多数据训练范式,其中模型在每个进程上复制,每个模型副本为不同的输入数据样本计算局部梯度,在每次优化器步骤之前,梯度会在数据并行通信器组内进行平均。
当模型无法放入 GPU 时,需要模型并行技术(或分片数据并行),并且可以将它们组合起来形成多维 (N-D) 并行技术。
在决定为模型选择哪种并行技术时,请遵循以下通用指南
如果您的模型适合单个 GPU,但您想使用多个 GPU 轻松扩展训练,请使用 DistributedDataParallel (DDP)。
当您的模型无法放入单个 GPU 时,请使用 FullyShardedDataParallel (FSDP2)。
另请参阅: FSDP2 入门
如果您在使用 FSDP2 时达到扩展限制,请使用 张量并行 (TP) 和/或 流水线并行 (PP)。
尝试我们的 张量并行教程
另请参阅: TorchTitan 3D 并行端到端示例
注意
数据并行训练也适用于 自动混合精度 (AMP)。
PyTorch 分布式开发者#
如果您想为 PyTorch 分布式做出贡献,请参阅我们的 开发者指南。