pytorch的DP和DDP
参考
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相关推荐
- Pytorch 并行训练(DP, DDP)的原理和应用
Pytorch 并行训练(DP, DDP)的原理和应用 1. 前言 并行训练可以分为数据并行和模型并行. 模型并行 模型并行主要应用于模型相比显存来说更大,一块 device 无法加载的场景,通过把模 ...
- PyTorch 深度剖析:并行训练的 DP 和 DDP 分别在什么情况下使用及实例
↑ 点击蓝字 关注极市平台 作者丨科技猛兽 编辑丨极市平台 极市导读 这篇文章从应用的角度出发,介绍 DP 和 DDP 分别在什么情况下使用,以及各自的使用方法.以及 DDP 的保存和加载模型的策略, ...
- Pytorch 分布式训练中DP和DDP的原理和用法
一.聊聊DP和DDP pytorch中的有两种分布式训练方式 一种是常用的DataParallel(DP) 另外一种是DistributedDataParallel(DDP) 两者都可以用来实现数据并 ...
- 简单介绍pytorch中分布式训练DDP使用 (结合实例,快速入门)
文章目录 DDP原理 pytorch中DDP使用 相关的概念 使用流程 如何启动 torch.distributed.launch spawn调用方式 针对实例voxceleb_trainer多卡介绍 ...
- 动手实践看懂深度学习的DP和DDP
摘要 为了尽可能加快训练,我们会使用两种GPU并行手段,DP和DDP,但是DP其实只会开一个进程去管理,计算资源分配不均,DDP上我们倾向于一张卡开一个进程,使得我们的计算资源能够最大化的利用.本次的 ...
- 深入理解pytorch分布式并行处理工具DDP——从工程实战中的bug说起
近期博主在使用分布式并行处理工具DDP(DistributedDataParallel)训练单目深度估计模型Featdepth(源码地址:https://github.com/sconlyshoote ...
- 从 DP 到 DDP 到 apex
1.从 DataParallel 到 DistributedDataParallel,最大的改变是启动方式: 从 python a.py 到 python -m torch.distributed.l ...
- 【深度学习框架】pytorch之分布式数据并行化DDP
文章目录 1. 引言 2. Quick Start 3. 基本概念 4. DDP使用流程 4.1 launch启动 4.2 spawn启动 5. 不是很相关的一些bug 参考文献 1. 引言 Dist ...
- PyTorch 多机多卡训练:DDP 实战与技巧
作者丨996黄金一代@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/250471767 编辑丨极市平台 零. 概览 想要让你的PyTorch神经网络在多卡环境上跑得又 ...
最新文章
- angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )
- 硕博研究生期间应该明确的50件事
- 学业水平考试网登录_海南高中学业水平考试成绩查询免费登录入口:http://ea.hainan.gov.cn/(已开通)...
- linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别
- [html] HTML为什么要语义化?语义化有什么好处?
- Linux后台运行java的jar包,java基础面试笔试题
- OAuth 授权的工作原理是怎样的?
- 使用CablleStatement调用存储过程
- flink在k8s上的部署和使用教程
- 【网络文件共享】04、rsync基础
- python复制包到其他环境_Python虚拟环境导出包安装到另一台电脑的方法
- 电子元器件晶体二极管的识别和检测注意事项
- 那些油管上高质量的学习编程的频道 之一
- 焦点较中的网络视频相关
- Intel(R) 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26出现感叹号,USB无法使用
- 获取手机唯一标识插件_H5能获取到手机设备ID或者手机浏览器唯一识别码吗
- EOF while reading packet
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法
- threejs辉光通道01(UnrealBloomPass layers)
- 高数知识点整理——有理分式的不定积分(多项式的除法)
热门文章
- linux安装weblogic10.3.6
- 回顾 2022 年 — 回顾 Elastic 这一年
- 解读|TARS开源项目发布Go语言版本 1
- 求2!+4!+6!+ …… +2n!的和
- windows 2003 R2+IIS ssl证书认证
- GB9706.1-2007名词解释:电气间隙、爬电距离,绝缘、接地等
- JDBC Statement RETURN_GENERATED_KEYS返回自动生成的ID
- 【LeetCode】5454. 统计全 1 子矩形
- python简单名片管理器,一个简单的Python名片管理系统
- Centos8安装常用软件及家用操作命令