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 配置后的模型和优化器状态进行保存  |