分布式训练本质上是为了加快模型的训练速度,面对较为复杂的深度学习模型以及大量的数据。单机单GPU很难在有限的时间内达成模型的收敛。这时候就需要用到分布式训练。

分布式训练又分为模型并行和数据并行两大类。

1. 数据并行

数据并行在于将不同batch的数据分别交给不同的GPU来运算。如下图所示,灰色部分表示数据,蓝色表示模型。

数据并行中的一类就是参数平均,比如将第一个Batch的256个数据交给第一个U
第二个batch的256个数据交给第二个U
参数平均就是在他们分别通过整个神经网络计算出结果后取平均值,再修改模型中的参数。这样实现实际上在不考虑多GPU与CPU的通信成本上,与单GPU以batchsize为512来进行训练是一样的,但因为同时进行了两个batch的运算,运算速度在理想情况下是线性增加的。参数平均同时也是一个同步更新的过程,多个GPU的运算结果会统一结束并计算平均参数,这在我们使用同算力GPU的时候可以做到效率最大化。

除了同步更新,我们还有异步随机梯度下降。这意味着不同的GPU不需要等待每一个epoch中所有GPU的运算完毕就可以直接更新参数。这很显然进一步提升了多个U的效率,因为我们不再需要保证多个GPU的同步性,更大加快了模型的收敛。但不可避免地是,由于异步的特点,当某一个GPU完成运算并更新参数的时候,可能这时候模型中的全局参数已经经过了多次的改变,这可能会导致绝对误差的放大,优化过程可能不稳定。

2. 模型并行

说完了数据并行,我们来看一下专门用于优化非常复杂的深度学习网络的模型并行。与数据并行不同的是,这次我们通过将模型拆分为几个小的部分,分别交给多个GPU来进行运算。每次仍然给每个模型一个batch的数据来进行计算,将多个GPU作为节点。最后将运算结果进行合并。实际上是一种将模型切割为几个子模型按顺序计算的过程。

参考文本 :
【深度学习】— 分布式训练常用技术简介
【分布式深度学习part1】:神经网络的分布式训练

深度学习分布式训练小结相关推荐

  1. 程序如何在两个gpu卡上并行运行_深度学习分布式训练相关介绍 - Part 1 多GPU训练...

    本篇文章主要是对深度学习中运用多GPU进行训练的一些基本的知识点进行的一个梳理 文章中的内容都是经过认真地分析,并且尽量做到有所考证 抛砖引玉,希望可以给大家有更多的启发,并能有所收获 介绍 大多数时 ...

  2. [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案

    [源码解析] 深度学习分布式训练框架 horovod (11) - on spark - GLOO 方案 文章目录 [源码解析] 深度学习分布式训练框架 horovod (11) --- on spa ...

  3. [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark

    [源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...

  4. 张量模型并行详解 | 深度学习分布式训练专题

    随着模型规模的扩大,单卡显存容量无法满足大规模模型训练的需求.张量模型并行是解决该问题的一种有效手段.本文以Transformer结构为例,介绍张量模型并行的基本原理. 模型并行的动机和现状 我们在上 ...

  5. 一文提升你对深度学习分布式训练的整体认知!

    分布式技术是深度学习技术的加速器. 同时利用多个工作节点,分布式地.高效地训练出性能优良的神经网络模型,能够显著提高深度学习的训练效率.进一步增大其应用范围. <首席AI架构师--分布式高性能深 ...

  6. 如何理解深度学习分布式训练中的large batch size与learning rate的关系?

    问题详情: 在深度学习进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练,但large batch一般较于小的baseline的batch size性能更差,请问 ...

  7. 聊一聊深度学习分布式训练

    作者 | 杨阳 整理 | NewBeeNLP https://zhuanlan.zhihu.com/p/365662727 在深度学习时代,训练数据特别大的时候想要单卡完成训练基本是不可能的.所以就需 ...

  8. 深度学习分布式训练框架 horovod (3)

    2.1 如何运行 官方给出的 Hovorod 运行范例之一如下: horovodrun -np 2 -H localhost:4 --gloo python /horovod/examples/ten ...

  9. 利用多 GPU 加速深度学习模型训练

    01 - 前言 深度学习模型通常使用 GPU 训练,因为 GPU 具有相比 CPU 更高的计算能力,以 Tesla V100 为例,使用 Tensor Core 加速的半精度浮点计算能力达到 125 ...

最新文章

  1. Win Form登录机制的实现
  2. 我所理解的IRepository
  3. 2018-2019-2 20165234 《网络对抗技术》 Exp5 MSF基础应用
  4. Spring Cloud Sleuth + Zipkin 监控微服务(一)
  5. txt doc rtf html,JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例.docx
  6. Azure Data Studio:Postgres 专用的超强开源 GUI 编辑器了解一下?
  7. 大数据分析的环节有哪些
  8. 大数据系统应包含哪些功能模块
  9. TensorFlow中tf.ConfigProto()配置Sesion运算方式
  10. secoclient在Mac下使用无法上网的解决办法
  11. linux虚拟键盘onboard设置,求助,安装屏幕虚拟键盘onboard出错。
  12. u3d学习:helloworld
  13. Cobbler 3.x 部署实战
  14. C#中Dev配色修改
  15. 医学院交换去计算机学院,第一临床学院成功举办2018年国际医学生SCOPE交换项目...
  16. ArcGIS干货教程:DEM数字高程模型数据的生成
  17. 界面仅允许扫码枪录入禁止手工键盘输入
  18. 使用Python修改可执行文件-EXE的图标
  19. EMQ-保留消息 概述和案例
  20. AlarmManager详解

热门文章

  1. c++ array学习
  2. 160 - 39 damn
  3. 《MySQL——InnoDB与Memory以及临时表》
  4. Java Thread类的静态布尔型interrupted()方法(带示例)
  5. source insight使用教程
  6. anaconda matplotlib 输出动画_Python+Matplotlib 制作排序算法的动画
  7. CodeForces 560A,B,C
  8. 忘记手势密码的解决办法
  9. mysql row_id为什么是6字节?为什么是8字节
  10. 数据结构--双链表的创建和操作