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 上下文 |
|
这个类用于获取动态图模型并行执行所需的环境变量值 |
数据加载¶
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 配置后的模型和优化器状态进行保存 |