目录

PyTorch 分布式概述

创建时间: 2020年7月28日 |上次更新时间:2024 年 10 月 8 日 |上次验证: Nov 05, 2024

作者Will Constable

注意

编辑github 中查看和编辑本教程。

这是包的概述页面。目标 此页面将文档分为不同的主题,并简要地 描述他们中的每一个。如果这是您第一次构建分布式训练 使用 PyTorch 的应用程序,建议使用此文档进行导航 到最能为您的使用案例服务的技术。torch.distributed

介绍

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

并行 API

这些 Parallelism 模块提供高级功能并与现有模型组合:

分片基元

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

  • DTensor 表示分片和/或复制的张量,并根据操作的需要自动与重新分片的张量通信。

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

通信 API

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

all_gather) 和 P2P 通信 API(例如 sendisend), 它们在所有 Parallelism 实现的后台使用。使用 PyTorch 编写分布式应用程序 展示了使用 c10d 通信 API 的示例。

发射

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

应用并行度来缩放模型

数据并行是一种广泛采用的单程序多数据训练范式 如果模型在每个进程上复制,则每个模型副本都会计算 一组不同的输入数据样本,在每个优化器步骤之前,在 Data-Parallel Communicator 组内对梯度进行平均。

当模型不适合 GPU 时,需要模型并行技术(或分片数据并行),并且可以将它们组合在一起形成多维 (N-D) 并行技术。

在决定为模型选择哪些并行技术时,请使用以下常见准则:

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

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

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

注意

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

PyTorch 分布式开发人员

如果您想为 PyTorch Distributed 做出贡献,请参阅我们的开发人员指南

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源