原文链接:DLion (acm.org)
ABS
由于智能手机的普及,边缘设备会获得越来越多的用户数据,但是将所有的用户数据收集到数据中心进行分布式训练是不现实的,这主要设计用户隐私的问题。
同时如果直接将收集到的数据在用户的本地进行计算,当模型太大的时候,由于边缘设备的性能原因,此时训练会力不从心。
由于上述的两点原因作者希望提出一种基于微型云计算的分布式架构。
1 INTRO
边缘设备的普及产生了大量的数据,向传统的方式建立数据中心面临着两个问题:
- 需要移动的数据过多难以实现;
- 用户的隐私问题,用户并不愿意泄露自己的数据。
联邦学习的提出是为了解决隐私问题,该方法会直接在边缘设备进行训练,但是当模型过于大的时候,即使边缘设备需要处理的数据量很少,但是依然会花费很长的时间。(一个比较大的模型可能含有的参数大小是几百兆,也就是对于每个样本需要耗费几百兆的内存,这对于现在智能手机的 8 G B , 6 G B 8GB,6GB 8GB,6GB的内存来说很吃力,这还没有考虑手机与计算机的算力差距)
微型云的性能要远远优于边缘设备,同时使用微型云可以只在局部区域进行数据的上传,这也一定程度上保护了用户的隐私。
F i g u r e 1 Figure\ 1 Figure 1是使用微型云进行分布式计算的一个基本架构:
使用微型云进行计算存在两大挑战:
- 微型云的性能差异以及动态变化性:不同区域的微型云的性能差异可能较大,同时由于一个微型云中的设备可能会被安排处理其他服务,同一个微型云的性能也是随着时间动态变化的;
- 网络资源的不同以及动态性:同一个微型云内部通过 L A N LAN LAN进行通信,而不同的微型云则需要通过 W A N WAN WAN, W A N WAN WAN的资源是非常有限的,同时局域网资源会随着微型云中的结点个数增多而被稀释,即资源会发生动态变化。
大多数的分布式系统并没有考虑资源的不同以及动态性,这会导致训练时间的增长。
本文提出的 D L i o n DLion DLion主要就是为了解决带有异地性以及动态性特点的分布式系统的计算问题。
D L i o n DLion DLion使用了三个关键技术来解决上述的问题:
- W e i g h t e d d y n a m i c b a t c h i n g Weighted\ dynamic\ batching Weighted dynamic batching:该技术用于解决计算性能异地性问题。
- P e r − l i n k p r i o r i t i z e d g r a d i e n t e x c h a n g e Per-link\ prioritized\ gradient\ exchange Per−link prioritized gradient exchange:该技术用于解决网络异地性的问题。
- D i r e c t k n o w l e d g e t r a n s f e r Direct\ knowledge\ transfer Direct knowledge transfer:该技术用于提升模型的精度。
本文的主要贡献:
- 提出了能够解决异地性以及动态性的分布式系统;
- 设计的系统具有概述性和灵活性容易进行修改,可以适用于不同的分布式训练;
- 利用 T e n s o r F l o w TensorFlow TensorFlow建立了系统的原型,同时支持 C P U CPU CPU和 G P U GPU GPU版本。
2 Background and Motivation
2.1 Distributed Deep Learning
这一部分介绍了使用梯度下降的机器学习和使用梯度下降的分布式机器学习。
机器学习:计算梯度更新模型参数;
分布式机器学习:各个工作结点计算各自的梯度,汇总后更新参数。
2.2 Distributed Deep Learning Systems
实现带参数服务器的分布式机器学习的框架例如 T e n s o r F l o w TensorFlow TensorFlow和 M X N e t MXNet MXNet两者均提供了 P S ( P a r a m e t e r S e r v e r ) PS(Parameter\ Server) PS(Parameter Server)的实现。
实现不带参数服务器的分布式计算的机器学习框架: A k o , H o p , P r a g u e Ako, Hop, Prague Ako,Hop,Prague等。
F i g u r e 2 Figure\ 2 Figure 2展示了二者的不同, ( a ) (a) (a)是带有参数服务器, ( b ) (b) (b)是无参数服务器(去中心化)
这些框架能够简化分布式机器学习的过程。
2.3 DL Learning in Micro-Clounds
整体的结构如 F i g u r e 3 Figure\ 3 Figure 3所示,微型云的内部通过局域网连接,云之间则是通过广域网连接。
2.4 Challenges and Motivation
这里介绍的是 S e c t i o n 1 Section\ 1 Section 1中提到了两个挑战,这里不在赘述。
3 Our Approach: DLion
3.1 Design Goals and Overview
设计的框架没有中心的参数服务器。
设计目标:
- 最大化数据并行,最大化数据并行能够减少模型训练所需要的时间,同时需要尽可能减少训练的精度损失。
- 减少通信耗时:减少结点之间的通信耗时的同时,需要尽可能减少模型的精度损失。
- 提升模型准确率:通过共享结点之间的数据来减少负面影响。
上述的三个目标依次对应前面提出的三个关键技术点。 F i g u r e 4 Figure\ 4 Figure 4展示了这三个关键技术点的使用时间以及整个工作流程:
3.2 Weighted Dynamic Batching
首先介绍两个概念:
- L B S LBS LBS: L o c a l B a t c h S i z e Local\ Batch\ Size Local Batch Size每个参与计算的工作结点的本地批量大小。
- G B S GBS GBS:整个分布式系统进行一轮训练的全局批量大小,也就是所有结点各自的 L B S LBS LBS之和。
需要注意的是在传统的分布式系统架构中,各个工作结点所拥有的 L B S LBS LBS是相同。
通常可以通过增加 L B S LBS LBS和结点的个数来增加 G B S GBS GBS,而在这里我们只讨论通过改变 L B S LBS LBS来改变 G B S GBS GBS的情况,而工作结点的个数固定为 n n n。
增加 G B S GBS GBS有好处也有坏处:
- 好处:相当于增加的计算量,训练所需要的时间会减少;
- 坏处:增大 G B S GBS GBS通常会导致最终的训练精度下降。
所以增大 G B S GBS GBS需要找到一个合适的值,这样能够尽可能的减少训练时间,同时不至于损失太多的精度。
之前有文章指出,对于模型的最终收敛精度不一定需要通过控制学习率来提升,也可以通过定期的改变 G B S GBS GBS来实现,本文正是收到这一点的启发,于是设计了能够自动调节的控制器,该控制器能够减少计算时间同时几乎不会损失模型的精确度。
在各个工作结点的计算性能相同并且不变的情况下,将每个节点的 L B S LBS LBS设置为 G B S n \frac {GBS}{n} nGBS是合理的。但是实际情况是每个工作结点的性能并不相同,同时每个过左结点的性能可能会发生波动,如果在这种情况下依然将 L B S LBS LBS设置为相等,那么先完成的节点必须等待最后完成的结点,这会导致模型计算所需要的时间上升。
w e i g h t e d d y n a m i c b a t c h i n g weighted\ dynamic\ batching weighted dynamic batching方法拥有三个组件:
-
G B S C o n t r o l l e r GBS\ Controller GBS Controller:自动的控制 G B S GBS GBS的增减。改组件的设计灵感来源与两个发现:在训练开始的阶段增大 G B S GBS GBS会带来较为严重的精度下降;在后续的阶段增大 G B S GBS GBS带来的精度下降是比较下且稳定的(可以看 F i g u r e 5 Figure\ 5 Figure 5,其中横轴代表在第几个 e p o c h epoch epoch增大 G B S GBS GBS,纵轴代表最终的模型精度)。这两个发现促使作者将该组件的工作流程划分为两个阶段: w a r m − u p warm-up warm−up和 s p e e d − u p speed-up speed−up。在第一个阶段: G B S t + 1 = G B S t + C w a r m u p GBS_{t+1}=GBS_t + C_{warmup} GBSt+1=GBSt+Cwarmup,当增大到总体数据量的 1 % 1\% 1%时将会停止增加(防止过大的增加导致精度下降)。在第二阶段: G B S t + 1 = G B S t × C s p e e d u p GBS_{t+1}=GBS_t\times C_{speedup} GBSt+1=GBSt×Cspeedup,当增大到总体数据量的 10 % 10\% 10%时停止增长(现有的研究发现不应该是 G B S GBS GBS过大),参数 C C C是需要进行设置的。
-
L B S C o n t r o l l e r LBS\ Controller LBS Controller:确定完 G B S GBS GBS后,该组件会确定每个工作结点各自的 L B S LBS LBS。 L B S LBS LBS的设计理念很简单,计算能力强的结点的 L B S LBS LBS会更大,通过计算能力强弱的比例关系进行数据量的分配。(这样能够保证所有结点完成计算的时间接近), F i g u r e 6 Figure\ 6 Figure 6展示了随着训练的进行,各个节点的 L B S LBS LBS的调整情况。 L B S LBS LBS具体的计算公式如下, R C P RCP RCP代表 r e l a t i v e c o m p u t a t i o n p o w e r relative\ computation\ power relative computation power(相对计算能力):
L B S i = G B S R C P i ∑ j = 1 n R C P j LBS_i=GBS\frac{RCP_i}{\sum_{j=1}^{n}RCP_j} LBSi=GBS∑j=1nRCPjRCPi -
w e i g h t e d m o d e l u p d a t e m o d u l e weighted\ model\ update\ module weighted model update module:该模块负责参数的聚合,结点 j j j计算完本题的梯度后得到 g t j g_t^j gtj,结点 k k k收到结点 j j j之后的聚合过程会进行如下的更新:
w t + 1 k = w t k − η 1 n ∑ j = 1 n d b j k g t j d b j k = L B S j L B S k w^k_{t+1}=w^k_t-\eta \frac 1 n\sum_{j=1}^{n}db^k_jg^j_t\\ db^k_j=\frac {LBS_j}{LBS_k} wt+1k=wtk−ηn1j=1∑ndbjkgtjdbjk=LBSkLBSj
3.3 Per-Link Prioritized Gradient Exchange
D a t a q u a l i t y a s s u r a n c e m o d u l e Data\ quality\ assurance\ module Data quality assurance module:该模块负责选择重要的梯度进行更新,使用 M a x N Max\ N Max N算法该算法会选择绝对值大于等于绝对值最大的梯度的 N % N\% N%的梯度进行更新。
F i g u r e 7 Figure\ 7 Figure 7展示了不同的 N N N对于模型的准确率的影响。
T
r
a
n
s
m
i
s
s
i
o
n
s
p
e
e
d
a
s
s
u
r
a
n
c
e
m
o
d
u
l
e
Transmission\ speed\ assurance\ module
Transmission speed assurance module:该模块用于自动确定
M
a
x
N
Max\ N
Max N算法中的
N
N
N。确定方法是需要让网络环境不成为瓶颈的情况下竟可能的选取更大的
N
N
N,在该模块中,结点
i
i
i向结点
j
j
j能够发送的梯度大小是由下列公式进行评估的:
B
W
_
n
e
t
j
I
t
e
r
_
c
o
m
i
B
W
_
n
e
t
j
代表两个结点直接的可用带宽
I
t
e
r
_
c
o
m
i
代表单位时间内结点
i
能够进行的迭代次数
\frac {BW\_{net_j}}{Iter\_com_i}\\ BW\_{net_j}代表两个结点直接的可用带宽\\ Iter\_com_i代表单位时间内结点i能够进行的迭代次数
Iter_comiBW_netjBW_netj代表两个结点直接的可用带宽Iter_comi代表单位时间内结点i能够进行的迭代次数
上式的核心就是让计算时间和通信时间相等。
F i g u r e 8 Figure\ 8 Figure 8是结点 1 1 1向结点 3 3 3和结点 5 5 5发送的梯度大小随着迭代次数的进行的自动调整过程:
3.4 Direct Knowledge Transfer
由于上面介绍的方法中没有使用参数服务器,而且采用了异步的方法,参与训练的各个结点所拥有的参数是可能存在不同的。
该部分的方法就是周期性的进行参数交换:选择出训练效果最好的结点,其他结点从该结点获取参数。
采用该方法需要解决几个问题:
- 训练的什么时候进行;
- 需要向所有的结点都发送吗(这是一笔比较大的开销);
- 对于收到的参数如何进行聚合,是直接替换还是求平均呢?
为了解决上述的三个疑问,作者做了一些实验。
F i g u r e 9 Figure\ 9 Figure 9展示了实验结果:
- (a)代表的是不同的时间进行 D K T DKT DKT训练完成(达到相同的精度)需要的时间, e a r l y D K T early\ DKT early DKT代表的是在训练的早期进行, l a t e D K T late\ DKT late DKT代表在训练的后期进行,作者发现在早期进行 D K T DKT DKT能够获得更好的精度。而上述 D K T 100 i t e r DKT\ 100iter DKT 100iter代表每隔 100 100 100轮进行一次,可以看到如果进行的越频繁由于需要大量的网络资源,所以训练时间会增加,而如果间隔的时间过长,由于没有进行好的参数的交互会导致收敛速度的下降从而导致训练需要更多的时间。
- (b)代表了向不同结点发送的结果:不使用,每次向效果最差的结点发送,每次向所有结点发送。可以看到只向最差的结点发送就能获得很大的精度提升。但是为了更好的准确性后面的实现依然选择发送给所有的结点。
- 使用更新公式: w l o c a l = ( 1 − λ ) w l o c a l + λ w b e s t w_{local}=(1-\lambda)w_{local}+\lambda w_{best} wlocal=(1−λ)wlocal+λwbest,随着 λ \lambda λ的增加,最好的权重占比增加,可以看到在 λ = 0.75 \lambda=0.75 λ=0.75的时候效果最好。
4 Implementation
这里讲了 D L i o n DLion DLion如何实现了,感兴趣的可以查看原文。
4.1 Key Components and Operations
这里介绍了一些关键组件,前文已经介绍了,这里不再赘述。
4.2 Generic and Flexible DLion
这一部分说明了 D L i o n DLion DLion可以很容易的应用在不同的算法中。
5 Evaluation
5.1 Methodology
5.1.1 Applications and Datasets
略。
5.1.2 Experimental Platforms
略。
T a b l e 2 Table\ 2 Table 2是测试出来亚马逊不同地区之间的带宽:
5.1.3 Performance Metrics
- 给定时间模型能达到的准确度;
- 达到某个准确度需要的时间;
- 收敛偶需要的时间;
5.1.4 Comparison Systems
和一些之前的方法进行对比:
- B a s e l i n e Baseline Baseline没轮交换所有梯度,最开始的异步 S G D SGD SGD(这里推测是异步 S G D SGD SGD而不是同步是根据最后一个实验的结果得出的);
- A k o Ako Ako:可以查看之前发过的论文精读——Ako论文精读
- G a i a Gaia Gaia;
- H o p Hop Hop;
5.1.5 Experimental Setup
T a b l e 3 Table\ 3 Table 3是是各个环境的细节,计算中的数字代表各个结点核心数,网络中的数字代表各个结点的带宽:
图中的 N o e m u l a t i o n No\ emulation No emulation应该是指各个节点有相同的计算资源。
5.2 Evaluation Results
5.2.1 System Heterogeneity
这一部分评估网络资源和计算资源都不相同的结点组成的系统上的情况。
F i g u r e 11 Figure\ 11 Figure 11展示了固定时间各个方法在各个配置上能够达到的准确度:
H e t e r o S Y S A Hetero\ SYS\ A Hetero SYS A是计算能力强的结点网络资源也强,而 H e t e r o S Y S B Hetero\ SYS\ B Hetero SYS B则是计算资源强的结点网络资源弱。
5.2.2 System Robustness in Heterogeneous GPU cluster
这一部分使用的模型较大,产生的需要交换的数据量较大(因为在 G P U GPU GPU上训练,所以选择了更大的模型),也就是网络成为了明显的瓶颈。
F i g u r e 12 Figure\ 12 Figure 12同样是固定训练时间后达到的精度:
5.2.3 Heterogeneous Compute Resources
这一部分评估网络资源相同,但是计算资源不同的情况。
F i g u r e 13 Figure\ 13 Figure 13是在各个结点的网络资源相同的环境下固定时间各个方法能够达到的精度:
F I g u r e 14 FIgure\ 14 FIgure 14是达到某个精度所需要的时间,其中 D L i o n − n o − D B W U DLion-no-DBWU DLion−no−DBWU代表不使用动态的批量选择, D L i o n − n o − W U DLion-no-WU DLion−no−WU代表不使用权重聚合更新:
5.2.4 Heterogeneous Network Resources
这一部分评估网络资源不同但是计算资源相同的情况。
F i g u r e 15 Figure\ 15 Figure 15展示了不同系统上固定时间能达到的精度:
F i g u r e 16 Figure\ 16 Figure 16是 M a x − 10 Max-10 Max−10(即 B a s e l i n e Baseline Baseline增加 M a x − 10 Max-10 Max−10)与其他方法的对比(固定时间):
5.2.5 Deviation of Model Accuracy
F i g u r e 17 Figure\ 17 Figure 17展现了模型精度的标准差:
5.2.6 Dynamic Resource Changes
这一部分环境的计算资源以及网络资源会发生动态的变化。
F i g u r e 18 Figure\ 18 Figure 18是实验结果:
F i g u r e 19 Figure\ 19 Figure 19展示了训练过程中各个结点本地批量大小的变化过程:
F i g u r e 20 Figure\ 20 Figure 20展示了训练过程中选择更新的梯度大小的变化过程:
5.2.7 Effect on Improving Model Accuracy
这一部分关注模型最终收敛精度和收敛时间。
F i g u r e 21 Figure\ 21 Figure 21展示了各个方法最终的收敛精度和收敛时间:
6 Related Work
涉及的相关工作如下:
- 分布式深度学习;
- 资源感知的分布式深度学习;
- 联邦学习;
- 边缘设备的深度学习推断;
- 并行计算;
- 根据地理分布的数据分析。
7 Conclusion
提出了适用于微型云的分布式机器学习架构。主要通过三个方面提升速度:
- W e i g h t e d d y n a m i c b a t c h i n g Weighted\ dynamic\ batching Weighted dynamic batching:最大化数据并行;
- P e r − l i n k p r i o r i t i z e d g r a d i e n t e x c h a n g e Per-link\ prioritized\ gradient\ exchange Per−link prioritized gradient exchange:减少通花费;
- D i r e c t k n o w l e d g e t r a n s f e r Direct\ knowledge\ transfer Direct knowledge transfer:提升模型精度。
同时利用 T e n s o r F l o w TensorFlow TensorFlow建立了 D l i o n Dlion Dlion的原型。相比于目前的架构有着不错的速度提升以及准确率提升。