GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism
1、Title
GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism
Author: Google AI
来源:NeurIPS 2019
2、Main idea:
划分stage
所有卷积神经网络都可以看作是L个层的堆叠,每一层都由一个 正向计算的函数fi和一组对应的参数wi组成;可以把整个L层的 卷积神经网络划分为K个复合层,每个复合层放到一个worker节 点上;这K个复合层的每一层还是拥有着正向计算函数和一组对 应的参数。模型组成的基本单位是layer,PipeDream将这些layer 划分在不同的stage,不同的的stage部署在不同的机器上。
将模型划分为连续的几个stage,每个stage各自对应一个设备(一 台加速器)。这样就使得模型的大小可以突破单个设备内存的大 小,因为一台设备只需要能够容纳部分模型的参数和计算;划分stage之后,处理最慢的stage会成为瓶颈。所以应该平均分 配算力。(加速器:可以是GPU,也可以是一台计算设备)Mini-batch划分为更小的micro-batch
mini-batch进一步划分成更小的micro-batch,同时利用流水线方 案,每次处理一个micro-batch的数据,得到结果后,将该 micro-batch的结果发送给下游设备,同时开始处理后一个 micro-batch的数据,通过这种方法减小设备中的Bubble(设备空 闲的时间称为 Bubble)提高设备计算资源的利用率
使用重计算
Re-Materialization是指在前向计算过程中,GPipe只记录stage划 分处的输出,在计算梯度时,GPipe会重新执行前向计算逻辑,从 而得到前向结果,然后再计算梯度结果。
如图,反向传播过程中,在计算第四层的梯度信息时,需要先进行一次L3到L4的一次正向计算,得到L4的输出特征信息,再利用L5的梯度信息一起计算L4的梯度。也就是说利用了正向计算的时间换取了存储网络模型参数的内存空间,即以时间换空间的思想。通过减少保存的激活值,进而压缩模型占用空间
实验证明,当M>=4×K 时,训练中的bubble开销可以忽略不计。梯度累积
梯度累加本质上就是累加 accumulation_steps 个 batch_size/accumulation_steps 的梯度, 再根据累加的梯度来更新网络参数,以达到真实梯度类似batch_size 的效果。在使用时,需要注意适当的扩大学习率。
也就是说:
首先将整个dataset分成多个batch,每个 batch size = 32,且假定 accumulation steps = 8 ;
因为 batch size = 32,太大了,单机显卡无法跑,于是我们在前向传播的时候以 batch_size = 32 / 8 = 4 来计算梯度;
这样就再分别将每个batch分成多个batch size 为 4 的小批次,将每个小批次逐一喂给神经网络;
每个小批次虽然计算梯度,但是在每次反向传播(在反向传播的时候,会将mean_loss也除以8)后,先不进行优化器的迭代更新。
经过 accumulation steps 个小批次后(即一个batch中的所有小批次),用每个小批次计算梯度的累积和去进行优化器迭代更新参数。
最后进行梯度清零的操作。
处理下一个batch。
这样就跟把 32 batch size 一次性送入模型进行训练效果一样了。
3、Experiment & Conclusion
最后在两个任务上进行了测试:(i)图像分类:在ImageNet-2012上训练了一个5.57亿参数的AmoebaNet模型,并获得了84.4%的top-1准确率,(ii)多语言神经机器翻译:在一个跨越100多种语言的语料库上训练了一个60亿参数的128层Transformer模型,并获得了比所有双语模型更好的质量。
不足:
假如一个minibatch被分为 n 个micro-batch,则需要缓存 n 份activation(正向计算的结果)。这个 n 是梯度累加的次数,为了尽可能流水,通常这个累加次数都比较大,一般大于两倍 stage 数目。那么即使只缓存少数 Tensor,这种策略依然需要较多显存。
GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism相关推荐
- Flexpoint: An Adaptive Numerical Format for Efficient Training of Deep Neural Networks:弯曲点:一种有效训练深度神
2017.:Flexpoint: An Adaptive Numerical Format for Efficient Training of Deep Neural Networks:弯曲点:一种有 ...
- 【阅读】A Comprehensive Survey on Distributed Training of Graph Neural Networks——翻译
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] (本文中,涉及到公式部分的翻译不准确,请看对应原文.) 另一篇:[阅读]Distributed Graph Neural Networ ...
- 二值网络训练--Training Competitive Binary Neural Networks from Scratch
Training Competitive Binary Neural Networks from Scratch https://github.com/hpi-xnor/BMXNet-v2 MXNet ...
- Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读
Paper:Xavier参数初始化之<Understanding the difficulty of training deep feedforward neural networks>的 ...
- Paper之DL之BP:《Understanding the difficulty of training deep feedforward neural networks》
Paper之DL之BP:<Understanding the difficulty of training deep feedforward neural networks> 目录 原文解 ...
- 经典DL论文研读(part1)--Understanding the difficulty of training deep feedforward neural networks
学习笔记,仅供参考,有错必纠 文章目录 Understanding the difficulty of training deep feedforward neural networks Abstra ...
- 论文略读1《Direct training for spiking neural networks:faster,larger,better》
发布时间2019-07-17,AAAI 文章链接Direct Training for Spiking Neural Networks: Faster, Larger, Better | Procee ...
- 2018:MIXED PRECISION TRAINING OF CONVOLUTIONAL NEURAL NETWORKS USING INTEGER OPERATIONS利用整数运算对卷积神经网络
@[TOC](2018:MIXED PRECISION TRAINING OF CONVOLUTIONAL NEURAL NETWORKS USING INTEGER OPERATIONS(利用整数运 ...
- Spatio-Temporal Backpropagation for Training High-performance Spiking Neural Networks笔记
<Spatio-Temporal Backpropagation for Training High-performance Spiking Neural Networks>笔记 ABST ...
- 【Deep Learning】笔记:Understanding the difficulty of training deep feedforward neural networks
这几天读了这篇论文,在这里将大致内容写在这里. Abstract 介绍这篇论文的主要内容就是尝试更好的理解为什么使用"标准随机初始化"来计算使用标准梯度下降的网络效果通常来讲都不是 ...
最新文章
- 【直播回顾及资料下载】小程序云应用入门实操系列课程第一讲...
- euler‘s formula
- EPIC《禅意花园》项目开放下载
- php与drupal,php-将网站转换为Drupal-噩梦已经开始
- 23种设计模式(3)-原型模式
- PHP 删除文件,文件下的目录
- linux通过编辑文档来网络互通,No.277 记录一下:隔离网络环境下,使用WPS 2019 for Linux无痕编辑Office文档(2019-08-04)...
- epub与txt的区别是什么?有什么好用的IOS手机epub阅读器
- R项目:使用R分析人力资源数据
- 023.二叉树的最近公共祖先
- 图片加载框架Glide
- Xen Introduction
- 大数据集群硬盘资源监控
- Java软路由_J4105四口i211 千兆软路由 简单开箱
- 树莓派应用——每日天气预报邮件
- 共享单车管理系统_长沙市首个共享单车管理及运维调度系统在天心区上线
- NFS Mout错误对应:clnt_create: RPC: Program not registered
- 案例11-生产环境重大事故
- linux firefox 显示PDF,Firefox 19 Beta 已内置 PDF 阅读器
- 英飞凌XMC4000系列开发板软件系统复位死机的问题
热门文章
- 【模式串匹配】Aho-Corasick algorithm - AC字符串匹配算法实现与测试【Python】
- 方舟怎么看服务器信息,方舟怎么看服务器ip地址
- B树、B+树、B*树
- 微软面试案例分析,绝!
- 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第二节XML框架的建立
- html主菜单和子菜单,刻录dvd光盘设置dvd菜单 只要子菜单可以吗 不要主菜单的
- Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not b
- 10种方法缓解所显示器造成的眼睛疲劳
- iNode用户win10开热点手机连接时总显示获取IP中的解决方法
- C++实验3个人所得税计算器