文章目录

  • 数据并行

单机多卡训练,即并行训练。并行训练又分为数据并行 (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],[1]对数据并行和模型并行进行了很好地区分,因此这里推荐给大家. ∇\nabla∇ 联系方式: e-mail: FesianXu@gmail.com QQ: 973926198 gi ...

  2. 深度学习的分布式训练--数据并行和模型并行

    <div class="htmledit_views"> 在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况).我自己在刚刚接触到一机多卡,或者分布式 ...

  3. 综述:解决目标检测中的样本不均衡问题

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SFXiang 来源丨AI算法修炼营 编辑丨极市平台 极市导 ...

  4. [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行

    [源码解析] 模型并行分布式训练 Megatron (4) - 如何设置各种并行 文章目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...

  5. [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush

    [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 文章目录 [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 0 ...

  6. [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

    [源码解析] 模型并行分布式训练Megatron (2) - 整体架构 文章目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...

  7. 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络

    使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...

  8. Pytorch在训练过程中常见的问题

    1 Input type (CUDAFloatTensor) and weight type (CPUFloatTensor) should be the same 仔细看错误信息,CUDA和CPU, ...

  9. pytorch训练过程中loss出现NaN的原因及可采取的方法

    在pytorch训练过程中出现loss=nan的情况 1.学习率太高. 2.loss函数 3.对于回归问题,可能出现了除0 的计算,加一个很小的余项可能可以解决 4.数据本身,是否存在Nan,可以用n ...

最新文章

  1. python表白源代码加音乐_python炫酷烟花表白源代码
  2. Sqlserver 2000 迷你、便携企业管理器(10M),支持Dts编辑
  3. Only tensors or tuples of tensors can be output from traced functions
  4. 沸腾了!苏宁全员涨薪,每月最高多1万6!网友:这一刻,我希望我是苏宁人...
  5. SQL基础【六、and与or】
  6. 课程设计完成之后要考虑的问题
  7. cmd小游戏_使用pygame制作Flappy bird小游戏
  8. 搜狗浏览器怎么实现图标旋转 搜狗浏览器实现图标旋转的方法
  9. 项目总结-vue分页组件集成
  10. 协程入门(一):启动与挂起
  11. 学计算机是为了什么演讲稿,求大学计算机协会职位申请书和演讲稿
  12. 如何判断web应用是否添加到主屏幕
  13. ubuntu 学习笔记2--安装tomcat
  14. 【POJ2299】Ultra-QuickSort(逆序对,归并排序)
  15. 保存更新失败,事务回滚,但是MQ消息发送成功。
  16. mysql 因单个表过大导致导入数据库失败
  17. 怎么删除映射网络里的计算机,如何映射网络驱动器 删除映射网络驱动器的方法...
  18. Vue项目url中的BASE_URL解析
  19. Springboot RabbitMQ
  20. ps和sketch常用快捷键总结

热门文章

  1. ajax respon有数据,Ajax怎么通过response在后台传递数据?(附代码)
  2. php生成图片文件流,php如何将base64数据流文件转换为图片文件?
  3. c语言08,标准C语言08_01.doc
  4. php7 二维数组排序,PHP二维数组排序
  5. 给出一个数:(1)求解有几位数,(2)分别输出每一位数字(3)按逆序输出各位数字
  6. 如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF...
  7. mysql每次查询1000条数据库_30多条mysql数据库优化方法,千万级数据库记录查询轻松解决...
  8. python pandas合并多个excel_python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)...
  9. 信息管理系统 github_Java+MySQL实现学生信息管理系统
  10. 在日常生活中,经常会遇到某些需求对文件名称进行修改,借助刚学过的文件操作,编写一个可以批量修改文件名的小程序。