• 教程 >
  • PyTorch 分布式概述
快捷键

PyTorch 分布式概述 ¶

创建于:2025 年 4 月 1 日 | 最后更新:2025 年 4 月 1 日 | 最后验证:2024 年 11 月 5 日

作者:Will Constable

备注

在 github 上查看和编辑此教程。

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

简介

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

并行 APIs ¶

这些并行模块提供高级功能,并与现有模型兼容:

分片原语 ¶

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

  • DTensor 表示一个分片和/或复制的张量,并且能够根据操作需要自动重新分片张量进行通信。

  • DeviceMesh 将加速器设备通信器抽象为多维数组,该数组管理多维并行中的基础 ProcessGroup 实例以进行集体通信。尝试我们的 Device Mesh 菜谱来了解更多信息。

通信 API ¶

PyTorch 分布式通信层(C10D)提供了集体通信 API(例如,all_reduce

和 all_gather)以及 P2P 通信 API(例如,send 和 isend),这些 API 在所有并行实现中作为底层使用。在《使用 PyTorch 编写分布式应用程序》中展示了使用 c10d 通信 API 的示例。

启动器 ¶

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

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

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

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

在决定为您的模型选择哪种并行技术时,请遵循以下常用指南:

  1. 如果您的模型适合单个 GPU,但想轻松扩展使用多个 GPU 进行训练,请使用 DistributedDataParallel(DDP)。

    • 如果您使用多个节点,请使用 torchrun 启动多个 PyTorch 进程。

    • 参见:分布式数据并行入门

  2. 当您的模型无法适应一个 GPU 时,请使用 FullyShardedDataParallel(FSDP)。

    • 参见:使用 FSDP 入门

  3. 如果在使用 FSDP 时达到扩展限制,请使用 Tensor Parallel(TP)和/或 Pipeline Parallel(PP)。

    • 尝试我们的 Tensor Parallelism 教程

    • 参见:TorchTitan 3D 并行性的端到端示例

备注

数据并行训练也支持自动混合精度(AMP)。

PyTorch 分布式开发者指南

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


评分这个教程

© 版权所有 2024,PyTorch。

使用 Sphinx 构建,主题由 Read the Docs 提供。
//暂时添加调查链接

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源