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 值 |
|
获取当前进程数 |
|
创建分布式通信组 |
|
销毁分布式通信组 |
|
获取指定分布式通信组后端的名称 |
数据加载¶
API 名称 |
API 功能 |
---|---|
|
数据加载到内存中,在训练前随机整理数据 |
|
流式数据加载 |
集合通信 API¶
在集群上,对多设备的进程组的参数数据 tensor 或 object 进行计算处理,包括规约、聚合、广播、分发等。
API 名称 |
API 功能 |
---|---|
|
规约操作的类型 |
|
规约进程组内的 tensor,随后将结果发送到指定进程 |
|
规约进程组内的 tensor,随后将结果发送到每个进程 |
|
聚合进程组内的 tensor,随后将结果发送到每个进程 |
|
聚合进程组内的 object,随后将结果发送到每个进程 |
|
将一组 tensor 分发到每个进程并进行聚合 |
|
将一个 tensor 分发到每个进程并进行聚合 |
|
将一个 tensor 发送到每个进程 |
|
将一组 object 发送到每个进程 |
|
将一组 tensor 分发到每个进程 |
|
将一组 object 分发到每个进程 |
|
规约一组 tensor,随后将规约结果分发到每个进程 |
|
异步发送一个 tensor 到指定进程 |
|
异步接收一个来自指定进程的 tensor |
|
发送一个 tensor 到指定进程 |
|
接收一个来自指定进程的 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 的信息 |