paddle.distributed

paddle.distributed 目录包含的 API 支撑飞桨框架大规模分布式训练能力。具体如下:

Fleet 分布式高层 API

paddle.distributed.fleet 是分布式训练的统一入口 API,用于配置分布式训练。

API 名称

API 功能

设置和获取用户自定义的集群信息,支持集合通信(Collective)及参数服务器(ParameterServer)两种训练架构的初始化

设置和获取 paddlecloud 集群信息(百度内部集群使用),支持集合通信(Collective)及参数服务器(ParameterServer)两种训练架构的初始化

配置分布式通信、计算和内存优化等策略

进行分布式训练配置并初始化

集合通信架构下,worker 节点初始化

集合通信架构下,停止正在运行的 worker 节点

集合通信架构下,强制要求所有的 worker 在此处相互等待一次,保持同步

参数服务器架构下,server 节点的初始化

参数服务器架构下的进程启动

保存用于预测的模型

保存全量模型参数

基于分布式并行策略进行模型拆分和优化计算

分布式训练工具的基类,用户集合通信、文件系统操作

Hadoop 文件系统查看和管理

本地文件系统查看和管理

重新计算中间激活函数值来节省显存

环境配置和训练启动管理

API 名称

API 功能

检查分布式环境是否已经被初始化

检查分布式环境是否可用

初始化并行训练环境,支持动态图模式

启动分布式训练进程,支持集合通信及参数服务器架构

启动分布式训练进程,仅支持集合通信架构

获取当前进程的 rank 值

获取当前进程数

创建分布式通信组

通过通信组 id 获取通信组实例

销毁分布式通信组

获取指定分布式通信组后端的名称

初始化 GLOO 上下文用于 CPU 间的通信

释放当前并行环境的 gloo 上下文

这个类用于获取动态图模型并行执行所需的环境变量值

数据加载

API 名称

API 功能

数据加载到内存中,在训练前随机整理数据

流式数据加载

集合通信 API

在集群上,对多设备的进程组的参数数据 tensor 或 object 进行计算处理,包括规约、聚合、广播、分发等。

API 名称

API 功能

规约操作的类型

规约进程组内的 tensor,随后将结果发送到指定进程

规约进程组内的 tensor,随后将结果发送到每个进程

聚合进程组内的 tensor,随后将结果发送到每个进程

聚合进程组内的 object,随后将结果发送到每个进程

将一组 tensor 分发到每个进程并进行聚合

将一个 tensor 分发到每个进程并进行聚合

将一个 tensor 发送到每个进程

将一组 object 发送到每个进程

将一组 tensor 分发到每个进程

将一组 object 分发到每个进程

规约一组 tensor,随后将规约结果分发到每个进程

异步发送一个 tensor 到指定进程

异步接收一个来自指定进程的 tensor

发送一个 tensor 到指定进程

接收一个来自指定进程的 tensor

同步路障,阻塞操作以实现组内进程同步

使用初始化的 gloo 上下文直接调用基于 gloo 封装的 barrier 函数

同步通信组,在指定的通信组中同步特定的 tensor 对象

Stream 集合通信高级 API

paddle.distributed.stream 在集合通信 API 的基础上,提供更统一的语义和对计算流的更精细的控制能力,有助于在特定场景下提高性能。

API 名称

API 功能

规约进程组内的 tensor,随后将结果发送到指定进程

规约进程组内的 tensor,随后将结果发送到每个进程

聚合进程组内的 tensor,随后将结果发送到每个进程

分发一组 tensor 到每个进程并进行聚合

分发一个 tensor 到每个进程并进行聚合

发送一个 tensor 到每个进程

分发一个 tensor 到每个进程

规约一组 tensor,随后将规约结果分发到每个进程

发送一个 tensor 到指定进程

接收一个来自指定进程的 tensor

RPC API

API 名称

API 功能

初始化 RPC

发起一个阻塞的 RPC 调用

发起一个非阻塞的 RPC 调用

关闭 RPC

获取 worker 信息

获取所有 worker 的信息

获取当前 worker 的信息

自动并行 API

自动并行降低分布式训练的使用门槛,使用自动并行 API 对组网进行少量改动即可进行分布式训练。

API 名称

API 功能

创建带有分布式切分信息的分布式 Tensor

通过一个 paddle API 结合分布式属性 placements 创建一个带分布式属性的 Tensor

按照指定方式将 Layer 中的参数转换为分布式 Tensor

对一个带有分布式信息的 Tensor 重新进行分布/切片

将带有分布式切分信息的动态图模型转换为静态图分布式模型

配置静态图分布式训练时所使用的并行策略和优化策略

指定 Tensor 在 ProcessMesh 上的分布或切片方式

将单卡视角的优化器转变为分布式视角

切分指定操作的参数到多个设备,并且并行计算得到结果

Sharding API

API 名称

API 功能

对模型、优化器和 GradScaler 做 group sharded 配置

对 group_sharded_parallel 配置后的模型和优化器状态进行保存