Skip to content

Latest commit

 

History

History
161 lines (122 loc) · 9.85 KB

Overview_cn.rst

File metadata and controls

161 lines (122 loc) · 9.85 KB

paddle.distributed

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

  • Fleet 分布式高层 API <01>
  • 环境配置和训练启动管理 <02>
  • 数据加载 <03>
  • 集合通信算法 API <04>
  • Stream 集合通信高级 API <05>
  • RPC API <06>
  • 自动并行 API <07>

Fleet 分布式高层 API

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

API 名称 API 功能
UserDefinedRoleMaker <cn_api_paddle_distributed_fleet_UserDefinedRoleMaker> 设置和获取用户自定义的集群信息,支持集合通信(Collective)及参数服务器(ParameterServer)两种训练架构的初始化
PaddleCloudRoleMaker <cn_api_paddle_distributed_fleet_PaddleCloudRoleMaker> 设置和获取 paddlecloud 集群信息(百度内部集群使用),支持集合通信(Collective)及参数服务器(ParameterServer)两种训练架构的初始化
DistributedStrategy <cn_api_paddle_distributed_fleet_DistributedStrategy> 配置分布式通信、计算和内存优化等策略
fleet.init <cn_api_paddle_distributed_fleet_Fleet> 进行分布式训练配置并初始化
fleet.init_worker <cn_api_paddle_distributed_fleet_Fleet> 集合通信架构下,worker 节点初始化
fleet.stop_worker <cn_api_paddle_distributed_fleet_Fleet> 集合通信架构下,停止正在运行的 worker 节点
fleet.barrier_worker <cn_api_paddle_distributed_fleet_Fleet> 集合通信架构下,强制要求所有的 worker 在此处相互等待一次,保持同步
fleet.init_server <cn_api_paddle_distributed_fleet_Fleet> 参数服务器架构下,server 节点的初始化
fleet.run_server <cn_api_paddle_distributed_fleet_Fleet> 参数服务器架构下的进程启动
fleet.save_inference_model <cn_api_paddle_distributed_fleet_Fleet> 保存用于预测的模型
fleet.save_persistables <cn_api_paddle_distributed_fleet_Fleet> 保存全量模型参数
fleet.distributed_optimizer <cn_api_paddle_distributed_fleet_Fleet> 基于分布式并行策略进行模型拆分和优化计算
UtilBase <cn_api_paddle_distributed_fleet_UtilBase> 分布式训练工具的基类,用户集合通信、文件系统操作
utils.HDFSClient <cn_api_paddle_distributed_fleet_utils_HDFSClient> Hadoop 文件系统查看和管理
utils.LocalFS <cn_api_paddle_distributed_fleet_utils_LocalFS> 本地文件系统查看和管理

环境配置和训练启动管理

API 名称 API 功能
is_available <cn_api_paddle_distributed_is_available> 检查分布式环境是否可用
init_parallel_env <cn_api_paddle_distributed_init_parallel_env> 初始化并行训练环境,支持动态图模式
launch <cn_api_paddle_distributed_launch> 启动分布式训练进程,支持集合通信及参数服务器架构
spawn <cn_api_paddle_distributed_spawn> 启动分布式训练进程,仅支持集合通信架构
get_rank <cn_api_paddle_distributed_get_rank> 获取当前进程的 rank 值
get_world_size <cn_api_paddle_distributed_get_world_size> 获取当前进程数
new_group <cn_api_paddle_distributed_new_group> 创建分布式通信组
destroy_process_group <cn_api_paddle_distributed_destroy_process_group> 销毁分布式通信组
get_backend <cn_api_paddle_distributed_get_backend> 获取指定分布式通信组后端的名称

数据加载

API 名称 API 功能
InMemoryDataset <cn_api_paddle_distributed_InMemoryDataset> 数据加载到内存中,在训练前随机整理数据
QueueDataset <cn_api_paddle_distributed_QueueDataset> 流式数据加载

集合通信 API

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

API 名称 API 功能
ReduceOp <cn_api_paddle_distributed_ReduceOp> 规约操作的类型
reduce <cn_api_paddle_distributed_reduce> 规约进程组内的 tensor,随后将结果发送到指定进程
all_reduce <cn_api_paddle_distributed_all_reduce> 规约进程组内的 tensor,随后将结果发送到每个进程
all_gather <cn_api_paddle_distributed_all_gather> 聚合进程组内的 tensor,随后将结果发送到每个进程
all_gather_object <cn_api_paddle_distributed_all_gather_object> 聚合进程组内的 object,随后将结果发送到每个进程
alltoall <cn_api_paddle_distributed_alltoall> 将一组 tensor 分发到每个进程并进行聚合
alltoall_single <cn_api_paddle_distributed_alltoall_single> 将一个 tensor 分发到每个进程并进行聚合
broadcast <cn_api_paddle_distributed_broadcast> 将一个 tensor 发送到每个进程
broadcast_object_list <cn_api_paddle_distributed_broadcast_object_list> 将一组 object 发送到每个进程
scatter <cn_api_paddle_distributed_scatter> 将一组 tensor 分发到每个进程
scatter_object_list <cn_api_paddle_distributed_scatter_object_list> 将一组 object 分发到每个进程
reduce_scatter <cn_api_paddle_distributed_reduce_scatter> 规约一组 tensor,随后将规约结果分发到每个进程
isend <cn_api_paddle_distributed_isend> 异步发送一个 tensor 到指定进程
irecv <cn_api_paddle_distributed_irecv> 异步接收一个来自指定进程的 tensor
send <cn_api_paddle_distributed_send> 发送一个 tensor 到指定进程
recv <cn_api_paddle_distributed_recv> 接收一个来自指定进程的 tensor
barrier <cn_api_paddle_distributed_barrier> 同步路障,阻塞操作以实现组内进程同步

Stream 集合通信高级 API

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

API 名称 API 功能
stream.reduce <cn_api_paddle_distributed_stream_reduce> 规约进程组内的 tensor,随后将结果发送到指定进程
stream.all_reduce <cn_api_paddle_distributed_stream_all_reduce> 规约进程组内的 tensor,随后将结果发送到每个进程
stream.all_gather <cn_api_paddle_distributed_stream_all_gather> 聚合进程组内的 tensor,随后将结果发送到每个进程
stream.alltoall <cn_api_paddle_distributed_stream_alltoall> 分发一组 tensor 到每个进程并进行聚合
stream.alltoall_single <cn_api_paddle_distributed_stream_alltoall_single> 分发一个 tensor 到每个进程并进行聚合
stream.broadcast <cn_api_paddle_distributed_stream_broadcast> 发送一个 tensor 到每个进程
stream.scatter <cn_api_paddle_distributed_stream_scatter> 分发一个 tensor 到每个进程
stream.reduce_scatter <cn_api_paddle_distributed_stream_reduce_scatter> 规约一组 tensor,随后将规约结果分发到每个进程
stream.send <cn_api_paddle_distributed_stream_send> 发送一个 tensor 到指定进程
stream.recv <cn_api_paddle_distributed_stream_recv> 接收一个来自指定进程的 tensor

RPC API

API 名称 API 功能
rpc.init_rpc <cn_api_paddle_distributed_rpc_init_rpc> 初始化 RPC
rpc.rpc_sync <cn_api_paddle_distributed_rpc_rpc_sync> 发起一个阻塞的 RPC 调用
rpc.rpc_async <cn_api_paddle_distributed_rpc_rpc_async> 发起一个非阻塞的 RPC 调用
rpc.shutdown <cn_api_paddle_distributed_rpc_shutdown> 关闭 RPC
rpc.get_worker_info <cn_api_paddle_distributed_rpc_get_worker_info> 获取 worker 信息
rpc.get_all_worker_infos <cn_api_paddle_distributed_rpc_get_all_worker_infos> 获取所有 worker 的信息
rpc.get_current_worker_info <cn_api_paddle_distributed_rpc_get_current_worker_info> 获取当前 worker 的信息

自动并行 API

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

API 名称 API 功能
shard_tensor <cn_api_paddle_distributed_shard_tensor> 创建带有分布式切分信息的分布式 Tensor
shard_layer <cn_api_paddle_distributed_shard_layer> 按照指定方式将 Layer 中的参数转换为分布式 Tensor
reshard <cn_api_paddle_distributed_reshard> 对一个带有分布式信息的 Tensor 重新进行分布/切片
to_static <cn_api_paddle_distributed_to_static> 将带有分布式切分信息的动态图模型转换为静态图分布式模型
Strategy <cn_api_paddle_distributed_Strategy> 配置静态图分布式训练时所使用的并行策略和优化策略