Pytorch并行和分布式

本文介绍了PyTorch从v1.6.0版本开始的分布式和并行训练功能,包括分布式数据并行训练(DDP)、基于RPC的分布式训练以及c10d集体通信库。DDP用于在多个进程中复制模型并处理梯度同步,RPC则适用于不适应数据并行的复杂结构,c10d库提供集体和点对点通信API,支持跨进程张量传递。尽管DDP和RPC通常足够使用,但在特定场景下,开发者可能需要直接利用c10d API进行更细粒度的通信控制。
摘要由CSDN通过智能技术生成

从PyTorch v1.6.0开始,中的功能torch.distributed可以分为三个主要组件:

  • 分布式数据并行培训 (DDP)是一种广泛采用的单程序多数据培训范例。使用DDP,可以在每个流程上复制模型,并且每个模型副本都将获得一组不同的输入数据样本。DDP负责梯度通信,以保持模型副本同步,并使其与梯度计算重叠,以加快训练速度。
  • 基于RPC的分布式培训 (RPC)旨在支持无法适应数据并行培训的常规培训结构,例如分布式管道并行性,参数服务器范式以及DDP与其他培训范式的组合。它有助于管理远程对象的生命周期,并将自动分级引擎扩展到机器范围之外。
  • 集体通信 (c10d)库支持跨组内的进程发送张量。它提供了集体通信API(例如 all_reduce 和all_gather)和P2P通信API(例如 send 和isend)。DDP和RPC(ProcessGroup后端)是从v1.6.0版本起的c10d构建的,其中前者使用集体通信,而后者使用P2P通信。通常,开发人员无需直接使用此原始通信API,因为上述DDP和RPC功能可以满足许多分布式培训方案的需求。但是,在某些情况下,此API仍然很有帮助。一个示例是分布式参数平均,其中应用程序希望在向后传递之后计算所有模型参数的平均值,而不是使用DDP来传递梯度。这可以使通信与计算脱钩,并允许对通信内容进行更细粒度的控制,但另一方面,它也放弃了DDP提供的性能优化。在 与PyTorch编写分布式应用程序 显示了使用c10d通信API的示例。

 待续。。。。。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值