IMerge Evaluation部分

原文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
\section{实验评估}
\label{sec:Evaluation}

在本节中,我们基于 Pytorch 框架实现的多参数服务器原型系统上,对四个典型卷积神经网络 (CNNs) 进行了实验,以评估 IMerge 的性能表现。

\subsection{Methodology}
\textbf{Testbed Setup.}
我们的实验平台是由两台深度学习服务器组成的小型GPU集群,服务器间通过 ssh 免密连接。每台服务器配备 8 张 NVIDIA Tesla K80 GPU(12GB 显存)以及 1 张带宽为 100Gbps 的InfiniBand 网卡。且每张物理显卡又可虚拟出两张 GPU 卡,故该集群最多可支持的GPU卡数为32。实验中每一张 GPU 卡为一个 worker 节点,执行梯度计算的任务,一个 CPU核为一个 PS 节点,负责模型参数的更新,且保证worker 与 PS 的数量之比为 1:1。集群的完整软硬件环境分别如表 ~\ref{tab:hardware}和表~\ref{tab:software_env}所示。

\begin{table}[htbp]
\centering
\caption{硬件环境}
\begin{tabular}{lll}
\toprule
组件 & 配置 & 厂商 \\
\midrule
深度学习服务器 & SYS-4028GR-TR & Supermicro \\
CPU & Intel Xeon E5-2680 v4 @ 2.40GHz & Intel \\
GPU & Tesla K80 & NVIDIA \\
NIC & ConnectX-4 & Mellanox \\
\bottomrule
\end{tabular}
\label{tab:hardware}
\end{table}

\begin{table}[H]
\centering
\caption{软件环境}
\label{tab:software_env}
\begin{tabular}{p{0.25\linewidth} p{0.2\linewidth} p{0.45\linewidth}}
\toprule
\textbf{软件} & \textbf{版本} & \textbf{提供方} \\
\midrule
Ubuntu & 16.04 & Canonical \\
Python & 3.6 & Python Software Foundation \\
PyTorch & 1.8.0 & Facebook \\
CUDA & 10.1 & NVIDIA \\
\bottomrule
\end{tabular}
\end{table}

\textbf{Benchmarks.}
我们使用 CIFAR-10 数据集用于训练,包含5万张训练图像并且跨越10个类。
我们选择四个具有代表性的卷积神经网络:ResNet18、Vgg16、AlexNet 与 ResNet50。,其中ResNet18 和 ResNet50 属于计算密集型的任务,而 Vgg16 和 AlexNet 属于通信密集型的任务。

\textbf{Baselines.}
首先,我们将 IMerge 提出的基于 PS 通信模型的自适应融合策略,与两种代表性融合基线进行对比:(1)基于静态阈值的融合(阈值为 500,000);(2)基于 AllReduce 模型的自适应融合 []。
然后,我们将IMerge与三种典型的调度策略进行对比:(1)默认 PS 训练流程(未添加调度优化策略);(2)Wait-Free Backpropagation (WFBP),即主流框架的默认优化策略;(3)基于优先级的调度 [6](切片阈值 100,000)。此外前文所述的融合通信方案的结果也将一同加入作为对比。
以上所有对比方案均整合进前文所搭建的多 PS 原型系统中,并在双机环境下于不同 GPU 节点规模下进行评估。

我们主要关注能衡量IMerge性能的指标。测试指标主要包括系统吞吐量和加速比(扩展效率)。吞吐量指系统每秒处理的样本数,是最直观的训练速度指标;加速比为处理同一任务时单节点训练的时间与分布式训练的时间之比(加速比除以节点数即为扩展效率,二者本质上是相同的),理想情况下使用N张 GPU卡的训练时间为单张卡的 1/ N,即达到线性的加速比(扩展效率为 1),但通信开销使得实际表现低于理想值。因此,加速比也反映了通信与计算重叠的程度。加速比越高,说明通信延迟被更好地隐藏,调度策略越有效。

\subsection{融合通信策略对比}
我们首先对不同的融合通信策略进行对比,对比的方案包括三种:(1)固定阈值的静态融合(阈值设为 500000);(2)基于 AllReduce 通信模型的自适应融合;(3)基于 PS 通信模型对融合条件修正后的自适应融合策略。实验在双机场景、不同GPU节点规模下对系统吞吐量进行测试,实验结果如图~\ref{fig:fusion_throughput_comparison}所示。

\begin{figure}[H]
\centering
\subfigure[ResNet18]{
\includegraphics[width=0.45\linewidth]{figures/ResNet18 Throughput.pdf}
\label{fig:resnet18}
}
\hfill
\subfigure[Vgg16]{
\includegraphics[width=0.45\linewidth]{figures/Vgg16 Throughput.pdf}
\label{fig:vgg16}
}

\vspace{0.2cm}

\subfigure[AlexNet]{
\includegraphics[width=0.45\linewidth]{figures/Alexnet Throughput.pdf}
\label{fig:alexnet}
}
\hfill
\subfigure[ResNet50]{
\includegraphics[width=0.45\linewidth]{figures/ResNet50 Throughput.pdf}
\label{fig:resnet50}
}

\caption{不同融合策略下的吞吐量对比}
\label{fig:fusion_throughput_comparison}
\end{figure}

静态阈值融合策略仅以参数大小作为划分依据,确保合并后的参数量不超过预设阈值。该方法避免了小参数独立通信,保证了一定的通信粒度并使得网络流量相对均匀。然而,该策略未考虑实际训练中计算与通信时间分布的差异,因此无法保证最优的计算-通信重叠效果。同时,阈值的选择较为困难:过大可能导致通信等待时间增加,过小则带来额外的启动开销,并且不同模型的最优阈值存在差异,难以通过经验统一确定。从图中可以看出,在小规模集群下,静态阈值融合与本文提出的策略性能接近;然而随着节点规模增大,二者差距逐渐扩大。这是因为通信在总训练时间中的占比上升,因此需要根据计算与通信的时间分布特性动态选择通信时机,以更好地隐藏通信开销。

基于 allreduce 模型的自适应融合策略使用的是简单的线性通信模型,并不契合
参数服务器的流量模式,未考虑潜在的网络拥塞,且通信并发数的取值存在误差,故
虽然也利用了计算与通信的时间分布信息作为判断依据,但不恰当的通信模型容易推
导出错误的融合分组,反而对训练性能产生负面影响。从图中可以看出,随着节点规模的增大,该方案与其它二种方案相比逐渐处于劣势,且差距不断加。原因在于,该方案在 16 节点与 32 节点规模下,错误的将模型的所有层归为一组,导致在反向传播结束后才触发一次针对模型全部参数的通信,致使吞吐量出现剧烈的下滑。

相比之下,本文基于 PS 模型修正后的自适应融合策略能够对通信时间作出准确
估计,从而产生合适的融合分组,在恰当的通信时机以恰当的通信粒度发送参数,保
证了调度的有效性,如图~\ref{fig:fusion_throughput_comparison} 所示,在 32 节点规模下,该策略相较基于静态阈值的融合方式对于 ResNet18、Vgg16 和 AlexNet 模型分别可获得约 13.3%、4.3%和 2.1%的加速增益,在 ResNet50 模型上的表现与静态阈值方案接近。

\subsection{通信调度策略对比}
\label{sec:scheduling-comparison}
进一步,我们将IMerge与三种典型的调度策略进行对比:(1)默认 PS 训练流程(未添加调度优化策略);(2)Wait-Free Backpropagation (WFBP),即主流框架的默认优化策略;(3)基于优先级的调度(切片阈值 100,000)。此外前文所述的融合通信策略的结果也将一同加入作为对比。实验结果如图~\ref{fig:throughput_compare} 所示。

在默认的PS训练流程中,通信与计算严格串行,因此通信开销完全没有被隐藏,对集群中的网络资源利用效率十分低下,从图中可以看出,在大多数情况下,默认的训练方式表现都是最差的,且随着节点规模的增加,与其它调度方案的差距也在增大。

WFBP 能部分重叠计算与通信,因此吞吐量较默认的训练方式有一定改善,当工作节点数不大时,模型多数层的通信开销能被相邻层的计算时间所隐藏,故无等待反向传播能获得较优的加速效果,但当节点规模扩大至 32 时,多数层的通信开销将无法做到与计算时间的完全重叠,整体来看通信时间占比仍较大,所以训练速度的提升有限,在ResNet18、Vgg16、AlexNet 和ResNet50 模型上相较默认的训练方式分别可获得约 34.6\%、61.1\%、37.3\%和 45.3\%的加速。

基于优先级传输的方案根据各层参数在模型中的位置给予不同的优先级,同时为了保证高优先级参数能及时发起通信抢占,以切片后的参数作为传输的基本单元,该方案在构思上十分巧妙,考虑到了前向传播过程中计算与通信的重叠,但实际测试效果并不理想,在节点数达到 32 时,训练吞吐甚至要低于默认的训练方式,且在 ResNet50 模型下出现了吞吐量崩溃的情况,这是因为切片的做法使得网络中通信的次数更加频繁,带来大量额外的启动开销,阻碍了训练的进程。

融合通信的测试结果在前文已有展示,这里仍然将其加入以作对比,与基于优先
级传输方案中参数切片的做法相反,融合通信的思想是将参数通信粒度增大,克服启
动时延的影响,从图中可以看出,相较于前两种调度方案,融合通信的表现始终是更优的,在 32 节点规模下相较默认的训练方式对于 ResNet18、Vgg16、AlexNet 和ResNet50 模型分别可加速约 72.3\%、123\%、64.6\%和 83.2\%。

交错融合通信策略是基于融合通信机制的进一步改善,用以缓解参数服务器架构下潜在的网络拥塞问题,在实验中取得了最优的结果,在融合通信的基础上仍有可观的吞吐提升,相较默认的训练方式在 32 节点规模下对于 ResNet18、Vgg16、AlexNet 和 ResNet50 模型分别加速约 84.4\%、211.5\%、100.9\%和 157.5\%,训练速度得到了显著的改善,证明了其调度决策的有效性。

\begin{figure}[H]
\centering
\subfigure[ResNet18 吞吐量]{
\includegraphics[width=0.45\linewidth]{figures/ResNet18_throughput2.pdf}
\label{fig:ResNet18_throughput}
}
\hfill
\subfigure[Vgg16 吞吐量]{
\includegraphics[width=0.45\linewidth]{figures/Vgg16_throughput2.pdf}
\label{fig:Vgg16_throughput}
}

\vspace{0.2cm}

\subfigure[AlexNet 吞吐量]{
\includegraphics[width=0.45\linewidth]{figures/Alexnet_throughput2.pdf}
\label{fig:Alexnet_throughput}
}
\hfill
\subfigure[ResNet50 吞吐量]{
\includegraphics[width=0.45\linewidth]{figures/ResNet50_throughput2.pdf}
\label{fig:Resnet50_throughput}
}
\caption{不同调度策略下的吞吐量对比}
\label{fig:throughput_compare}
\end{figure}

为了更直观地反映出不同调度方案的扩展性能,图~\ref{fig:speedup_compare} 给出了各方案在不同 GPU 规模下的加速比结果。我们以理想线性伸缩(使用 $N$ 张 GPU 获得 $N$ 倍加速)为参照。从图中可以看出,随着节点规模的增加,所有调度方案的加速比都呈上升趋势,其中本文设计的IMerge在不同节点规模、不同模型下始终能获得最优的加速比,表明通过合理的调度,使通信开销得到了有效的隐藏,降低了通信计算比,提升了训练效率。尤其在 Vgg16模型下,交错融合通信策略更是达到了几乎线性的加速扩展,这是因为 Vgg16 属于通信密集型的任务,通信发生较为频繁,因此可优化的空间也较大,能获得的提升更为明显。而对于AlexNet 模型,所有调度方案的加速比普遍不高,其中表现最好的IMerge约可获得 50%的扩展效率,有接近一半的时间用于通信,这是由模型自身的性质决定的,当通信时间占比远超计算时间,模型中必然有部分的通信开销始终无法被完全隐藏,因此调度算法所能取得的加速增益将存在上界,除非直接对通信开销进行压缩,否则训练速度将无法获得进一步的提升。

\begin{figure}[H]
\centering
\subfigure[ResNet18 加速比]{
\includegraphics[width=0.45\linewidth]{figures/ResNet18 Speedup.pdf}
\label{fig:resnet18_speedup}
}
\hfill
\subfigure[Vgg16 加速比]{
\includegraphics[width=0.45\linewidth]{figures/Vgg16 Speedup.pdf}
\label{fig:vgg16_speedup}
}

\vspace{0.2cm}

\subfigure[AlexNet 加速比]{
\includegraphics[width=0.45\linewidth]{figures/Alexnet Speedup.pdf}
\label{fig:alexnet_speedup}
}
\hfill
\subfigure[ResNet50 加速比]{
\includegraphics[width=0.45\linewidth]{figures/ResNet50 Speedup.pdf}
\label{fig:resnet50_speedup}
}
\caption{不同调度策略下的加速比对比}
\label{fig:speedup_compare}
\end{figure}

1
2
3
4


In this section, we evaluate the performance of IMerge on a prototype multi-PS parameter server system implemented with PyTorch (v1.8). Four representative convolutional neural networks (CNNs) are used as benchmarks to assess its effectiveness.

\caption{Throughput comparison of different scheduling strategies across four CNN models.
Legends: Default = original PS workflow;
WFBP = wait-free backpropagation;
Priority-based = layer-priority scheduling (slice threshold 100,000);
Merge = gradient fusion strategy;
IMerge = proposed interleaved merged communication strategy.}