参考

https://andrew.gibiansky.com/blog/machine-learning/baidu-allreduce/#

https://zhuanlan.zhihu.com/p/343951042

本文只记录一下,为什么DDP的通信比DP的高效。

1、DP

假设共有K个GPU,GPU的通信带宽是B,每个GPU要发送的数据量是P(所有参数的梯度信息),那GPU0接收完所有信息,需要耗时(K-1)P/B,GPU0更新完参数后,需要同步给其他GPU,又需要耗时(K-1)P/B,所以每迭代训练一次,通信耗时2(K-1)P/B,耗时和GPU数量线性相关。

2、DDP

DDP 支持 Ring AllReduce,其通信成本是恒定的,与 GPU 数量无关。

DDP模式下,GPU会把要同步的数据分成K份,K为GPU的个数,每次循环每个GPU需要接收和发送的数据量为P/K。

首先是Scatter-reduce过程,下图第一次循环的情况:

第一次循环后,每个GPU会把收到的数据和自己的数据进行相加,然后进行下一个循环:

经过K-1次后,每个GPU都有其中一部分参数的完整数据,比如GPU0有完整的b,GPU1有完整的c。

经过上述的Scatter-reduce后,后续再进行Allgather。

Allgather第一次循环:

第二次循环:

经过K-1次后,所有的GPU都有所有参数的完整数据:

所以整个同步过程需要时间为2(K-1)(P/K)/B,耗时不会随着GPU数量增加而等比增加,大大提高了GPU之间的数据同步效率。

pytorch的DP和DDP相关推荐

  1. Pytorch 并行训练(DP, DDP)的原理和应用

    Pytorch 并行训练(DP, DDP)的原理和应用 1. 前言 并行训练可以分为数据并行和模型并行. 模型并行 模型并行主要应用于模型相比显存来说更大,一块 device 无法加载的场景,通过把模 ...

  2. PyTorch 深度剖析:并行训练的 DP 和 DDP 分别在什么情况下使用及实例

    ↑ 点击蓝字 关注极市平台 作者丨科技猛兽 编辑丨极市平台 极市导读 这篇文章从应用的角度出发,介绍 DP 和 DDP 分别在什么情况下使用,以及各自的使用方法.以及 DDP 的保存和加载模型的策略, ...

  3. Pytorch 分布式训练中DP和DDP的原理和用法

    一.聊聊DP和DDP pytorch中的有两种分布式训练方式 一种是常用的DataParallel(DP) 另外一种是DistributedDataParallel(DDP) 两者都可以用来实现数据并 ...

  4. 简单介绍pytorch中分布式训练DDP使用 (结合实例,快速入门)

    文章目录 DDP原理 pytorch中DDP使用 相关的概念 使用流程 如何启动 torch.distributed.launch spawn调用方式 针对实例voxceleb_trainer多卡介绍 ...

  5. 动手实践看懂深度学习的DP和DDP

    摘要 为了尽可能加快训练,我们会使用两种GPU并行手段,DP和DDP,但是DP其实只会开一个进程去管理,计算资源分配不均,DDP上我们倾向于一张卡开一个进程,使得我们的计算资源能够最大化的利用.本次的 ...

  6. 深入理解pytorch分布式并行处理工具DDP——从工程实战中的bug说起

    近期博主在使用分布式并行处理工具DDP(DistributedDataParallel)训练单目深度估计模型Featdepth(源码地址:https://github.com/sconlyshoote ...

  7. 从 DP 到 DDP 到 apex

    1.从 DataParallel 到 DistributedDataParallel,最大的改变是启动方式: 从 python a.py 到 python -m torch.distributed.l ...

  8. 【深度学习框架】pytorch之分布式数据并行化DDP

    文章目录 1. 引言 2. Quick Start 3. 基本概念 4. DDP使用流程 4.1 launch启动 4.2 spawn启动 5. 不是很相关的一些bug 参考文献 1. 引言 Dist ...

  9. PyTorch 多机多卡训练:DDP 实战与技巧

    作者丨996黄金一代@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/250471767 编辑丨极市平台 零. 概览 想要让你的PyTorch神经网络在多卡环境上跑得又 ...

最新文章

  1. angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )
  2. 硕博研究生期间应该明确的50件事
  3. 学业水平考试网登录_海南高中学业水平考试成绩查询免费登录入口:http://ea.hainan.gov.cn/(已开通)...
  4. linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别
  5. [html] HTML为什么要语义化?语义化有什么好处?
  6. Linux后台运行java的jar包,java基础面试笔试题
  7. OAuth 授权的工作原理是怎样的?
  8. 使用CablleStatement调用存储过程
  9. flink在k8s上的部署和使用教程
  10. 【网络文件共享】04、rsync基础
  11. python复制包到其他环境_Python虚拟环境导出包安装到另一台电脑的方法
  12. 电子元器件晶体二极管的识别和检测注意事项
  13. 那些油管上高质量的学习编程的频道 之一
  14. 焦点较中的网络视频相关
  15. Intel(R) 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26出现感叹号,USB无法使用
  16. 获取手机唯一标识插件_H5能获取到手机设备ID或者手机浏览器唯一识别码吗
  17. EOF while reading packet
  18. VS2010 调试C++项目 fatal error LNK1123 错误解决办法
  19. threejs辉光通道01(UnrealBloomPass layers)
  20. 高数知识点整理——有理分式的不定积分(多项式的除法)

热门文章

  1. linux安装weblogic10.3.6
  2. 回顾 2022 年 — 回顾 Elastic 这一年
  3. 解读|TARS开源项目发布Go语言版本 1
  4. 求2!+4!+6!+ …… +2n!的和
  5. windows 2003 R2+IIS ssl证书认证
  6. GB9706.1-2007名词解释:电气间隙、爬电距离,绝缘、接地等
  7. JDBC Statement RETURN_GENERATED_KEYS返回自动生成的ID
  8. 【LeetCode】5454. 统计全 1 子矩形
  9. python简单名片管理器,一个简单的Python名片管理系统
  10. Centos8安装常用软件及家用操作命令