DAPPLE

References & Notations

Item Instructions
Title DAPPLE: A Pipelined Data Parallel Approach for Training Large Models
Authors Shiqing Fan, Yi Rong, Chen Meng, Zongyan Cao, Siyu Wang, Zhen Zheng, Chuan Wu, Guoping Long, Jun Yang, Lixue Xia, Lansong Diao, Xiaoyong Liu, Wei Lin
Conference PPoPP’21

Notations

Item Instructions
M 将global batchsize 切分成 M个micro batchsize
L Pipeline Latency: a single global batch的执行时间
pivot stage 有最少的bubble的stage
Q id of pivot stage
$T_w$ warmup阶段的时间
$T_s$ steady阶段的时间
$T_e$ ending阶段的时间
$F_i$ 第i个stage的前向计算时间
$B_i$ 第i个stage的反向计算时间
$P_i$ 第i个stage的参数
$g_s$ 第i个stage的梯度
$AR(P_i, g_i)$ 对第i个stage做Allreduce的时间
$T_{PL}(j,m,\cal{g})$ 对前j个layers,使用m个GPUs,这m个GPUs的id set是$\cal{g}$,得到的最小的$L$,剩下的layers组成最后一个stages,并且replicate到剩下的(G-m)个GPUs

Abstract

流水线并行的两个问题:

  1. 如何在确保收敛的同时提高计算效率
  2. 如何在不增加计算的情况下减少内存使用

作者提出了DAPPLE:结合数据并行与流水线并行的一个同步训练框架。

  1. a novel parallelization strategy _planner_: 解决partition和placement问题,探索DP与PP结合的最佳方案(对应上面的问题1)
  2. a new runtime scheduling algorithm: 降低内存占用,同时与重计算方式正交,并且不影响吞吐量。(对应上面的问题2)

DAPPLE的实验结果:

  1. 相比于PipeDream,有3.23x的提升(啥的提升,没写清楚)
  2. 相比于GPipe,吞吐量有1.6x的提升,内存节省12%。

Introduction

Previous Work

现有的Pipeline Parallelism工作大致可以分为以下两类

  1. sync,代表工作有Gpipe,Pipe-Torch。需要在相邻两个iteration之间插入梯度同步操作以确保收敛。会有显著的内存峰值过高的问题,重计算等工作可以解决这类问题。
  2. async, 代表工作有PipeDream。

Previous Problem

  1. 对于async类,PipeDream改善了time-to-accuracy的性能,但是由于采用的异步训练,考虑到收敛性问题,工业界不常用这个,这个在阿里巴巴报告中有展示;另外异步训练需要存储多个版本的Weights。
  2. 对于sync类,均需要非常高的内存占用:因为前向的所有小批次结束前不能调度反向传播。用重计算解决会降低训练速度。

Solution & Challenge

DAPPLE:结合了Pipeline Parallelism & Data Parallelism。属于sync类,保证了收敛性,用async的方法,避免存储多个版本的参数

总结一下,DAAPLE解决了两个挑战:

  1. (模型结构+硬件配置)—> 最优的并行策略。其中目标空间:DP,PP,DP+PP。
    提出了a _sync_ pipeline planner: 自动生成最优的并行策略,可以最小化一次迭代训练的执行时间;将layer划分成多个stages。
  2. 如何调度流水线阶段的计算。
    提出了DAPPLE schedule:以低的内存峰值来实现较高的执行效率;关键是以deterministic and interleaved方式来调度前后向阶段,尽早释放内存。

Evaluation

  1. 模型类型: image classification, machine translation, language modeling.
  2. 硬件环境:3种

此外,DAPPLE也适用于VGG这种大weights小activations的模型。

Contributions

  1. 探索了结合DP与PP。
  2. 提出了DAPPLE planner,解决了partition和placement问题,并探索了数据和流水线并行的最佳混合策略。
  3. 不需要存储多个版本的参数,不增加计算的前提下降低内存占用量,并且可以结合重计算进一步降低。

The DAPPLE Approach Overview

  • Profiler: (DNN model) $\rightarrow$ (每个层的执行时间、ACTIVATION大小、Parameters大小)
  • Planner: (Profiler的结果、_global batch size_) $\rightarrow$ (parallelization plan)
  • Runtime: (Planner的结果, 原始model graph) $\rightarrow$ pipelined parallel graph.

DAPPLE Schedule

Limitations of GPipe Schedule

GPipe的原理
中间的Activations必须在反向结束后才能释放,会占用大量内存。DAPPLE采取重计算来节约内存,但是带来了的20%的额外计算。 DAPPLE的解决方法: _early backward scheduling_ ## Early backward scheduling ![](https://raw.githubusercontent.com/zzqq2199/pic_for_public/pic/img/20210402203946.png) 1. 不一次性将所有M个micro-batches注入,而是注入K(K一个调度示意图

_pivot stage_: 拥有最少bubble的stage。
_warmup phase_: 开始$\rightarrow$ _pivot stage_ 的第一个前向阶段
_ending phase_: _pivot stage_ 的最后一个反向阶段 $\rightarrow$ 最后
_steady phase_: 介于 _warmup phase_ 和 _ending phase_ 之间的阶段。
_L_: 上述三个阶段的和。

有如下公式:

其中$T_s$的估计中忽略了其中存在的bubble

Device Assignment

对于异步类的(PipeDream),决定整体性能的是单个stage的速度;
对于同步类的,决定整体性能的是单个iteration的速度。

提供了3种分配设备的方式:

Planning Algorithm

寻找最优的(partition, replication, placement strategy) $\rightarrow$ minimize $L$.

Determining The Pivot Stage Q.

估计Q的公式(heuristic)

Algorithm Formula

使用$T_{PL}(N,G,\cal{G})$来表示结果,于是可以采用动态规划的方式求解。(实际上就是穷举$N,G,\cal{G}$的组合,避免重复计算)

显而易见,$T_{PL}$可以用动态规划来解决。

Contributions over previous work

Uneven Pipeline Partitioning with Fewer Stages

按以下方法对模型进行划分会得到更好的性能:

  1. 尽可能少的stages(GPipe也提出)
  2. 不必严格均分
    参考下图:

Versatile Device Placement

这里前面没看懂,但是举得例子看懂了。
对于一些Activation size >> Weights size的模型,利用高速NVLink来传输activation,利用低速的Ethernet来做Allreduce。

DAPPLE Runtime

实现在TF1.12中,TF1.12能根据DAG与其中的数据/控制依赖来调度整个图的执行。

DAPPLE Runtime: (模型,Planner的结果) $\rightarrow$ (流水行并行的图,并将之执行在分布式设备上)
流程:

  1. 对于每个pipeline stage,构建一个前向/反向的图
  2. 相邻层之间需要对activation做通信,所以在相邻层之间加入额外的split/concat节点(为什么是这两个类型?)
  3. 构建一个子图用来执行weights updates.

后面为实现细节,暂时略过。

Evaluation

Experimental Setup

Benchmarks


用到的数据集分别是WMT16 En-DE(Translation), SQuAD2.0(Language Model), ImageNet(Image Classification)。

Hardware Configurations

3种硬件配置:配置A在GPU集群中最常见,但是比较贵。为了照顾买不起的一些机构或个人,也在配置B与C中进行了测试。

软件版本:64bits CentOS + CUDA 9.0 + cuDNN v7.3 + NCCL 2.4.2 + TF-1.12

BatchSize and Training Setup

参考Table1的最后一列。

Planning Results


表的解释:

  • Plan:
    • P:Q 两个stage,第一个stage replicates到P个GPUs,第二个stage replicates到Q个GPUs
    • DP Data Parallelism
    • Straight 16个stages?
  • Split Position: 表示模型按照对应比例,切分成两个stages
  • ACR: 没看懂

结果:

  • ResNet50: 全部DP,因为ResNet50的网络模型小(100MB),计算密集
  • VGG-19: 在Config A&B中采用DP,因为模型大小适中(548MB),内联带宽较大;在Config C中,根据15:1做切分(估计根据VGG-19的前15/16部分是计算,后1/16部分有大量的params和gradients)
  • GNMT-16/BERT-48/XLNet-36等:暂略
  • AmoebaNet-36: 暂略。

Performance Analysis

Related Work

Conclusion

Question

Q: DAPPLE中每个GPU的内存使用量的情况如何?

其中,红色、紫色、绿色分别表示DAPPLE组别中GPU0,GPU1,GPU2的Peak Memory Usage。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。