Pytorch:数据并行和模型并行,解决训练过程中内存分配不均衡的问题
文章目录
- 数据并行
单机多卡训练,即并行训练。并行训练又分为数据并行 (Data Parallelism) 和模型并行两种。
数据并行指的是,多张 GPU 使用相同的模型副本,但是使用不同的数据批进行训练。而模型并行指的是,多张GPU 分别训练模型的不同部分,使用同一批数据。
数据并行
torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)
【参数】
module : 要进行并行的 module。这里隐含了一点 ,即网络中的某一层也是可以进行数据并行的,但是一般不会这么使用。
device_ids : CUDA 列表,可以为 torch.device 类型,也可以是编号组成的 int 列表。默认使用全部 GPU
output_device : 某一 GPU 编号或 torch.device 。指定输出的 GPU,默认为第一个,即 device_ids[0]
数据并行的具体原理流程为:
1.将模型加载至主设备上,作为 controller,一般设置为 cuda:0
在每次迭代时,执行如下操作:
2.将 controller 模型复制(broadcast)到每一个指定的 GPU 上
将总输入的数据 batch,进行均分,分别作为各对应副本的输入 (scatter)
3.每个副本独立进行前向传播,并进行反向传播,但只是求取梯度
4.将各副本的梯度汇总(gather)到 controller 设备,并进行求和 (reduced add) During the backwards pass, gradients from each replica are summed into the original module.
5.更具总体度,更新 controller 设备上的参数
Pytorch:数据并行和模型并行,解决训练过程中内存分配不均衡的问题相关推荐
- 数据并行和模型并行的区别
此文翻译自[1],[1]对数据并行和模型并行进行了很好地区分,因此这里推荐给大家. ∇\nabla∇ 联系方式: e-mail: FesianXu@gmail.com QQ: 973926198 gi ...
- 深度学习的分布式训练--数据并行和模型并行
<div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...
- 综述:解决目标检测中的样本不均衡问题
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SFXiang 来源丨AI算法修炼营 编辑丨极市平台 极市导 ...
- [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行
[源码解析] 模型并行分布式训练 Megatron (4) - 如何设置各种并行 文章目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...
- [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush
[源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 文章目录 [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 0 ...
- [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
[源码解析] 模型并行分布式训练Megatron (2) - 整体架构 文章目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...
- 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络
使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...
- Pytorch在训练过程中常见的问题
1 Input type (CUDAFloatTensor) and weight type (CPUFloatTensor) should be the same 仔细看错误信息,CUDA和CPU, ...
- pytorch训练过程中loss出现NaN的原因及可采取的方法
在pytorch训练过程中出现loss=nan的情况 1.学习率太高. 2.loss函数 3.对于回归问题,可能出现了除0 的计算,加一个很小的余项可能可以解决 4.数据本身,是否存在Nan,可以用n ...
最新文章
- python表白源代码加音乐_python炫酷烟花表白源代码
- Sqlserver 2000 迷你、便携企业管理器(10M),支持Dts编辑
- Only tensors or tuples of tensors can be output from traced functions
- 沸腾了!苏宁全员涨薪,每月最高多1万6!网友:这一刻,我希望我是苏宁人...
- SQL基础【六、and与or】
- 课程设计完成之后要考虑的问题
- cmd小游戏_使用pygame制作Flappy bird小游戏
- 搜狗浏览器怎么实现图标旋转 搜狗浏览器实现图标旋转的方法
- 项目总结-vue分页组件集成
- 协程入门(一):启动与挂起
- 学计算机是为了什么演讲稿,求大学计算机协会职位申请书和演讲稿
- 如何判断web应用是否添加到主屏幕
- ubuntu 学习笔记2--安装tomcat
- 【POJ2299】Ultra-QuickSort(逆序对,归并排序)
- 保存更新失败,事务回滚,但是MQ消息发送成功。
- mysql 因单个表过大导致导入数据库失败
- 怎么删除映射网络里的计算机,如何映射网络驱动器 删除映射网络驱动器的方法...
- Vue项目url中的BASE_URL解析
- Springboot RabbitMQ
- ps和sketch常用快捷键总结
热门文章
- ajax respon有数据,Ajax怎么通过response在后台传递数据?(附代码)
- php生成图片文件流,php如何将base64数据流文件转换为图片文件?
- c语言08,标准C语言08_01.doc
- php7 二维数组排序,PHP二维数组排序
- 给出一个数:(1)求解有几位数,(2)分别输出每一位数字(3)按逆序输出各位数字
- 如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF...
- mysql每次查询1000条数据库_30多条mysql数据库优化方法,千万级数据库记录查询轻松解决...
- python pandas合并多个excel_python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)...
- 信息管理系统 github_Java+MySQL实现学生信息管理系统
- 在日常生活中,经常会遇到某些需求对文件名称进行修改,借助刚学过的文件操作,编写一个可以批量修改文件名的小程序。