说明
这篇论文比较短,但是提出的方法确很不错。联邦学习或者分布式机器学习中减少通信开销一般有两种方法:
- 减少发送的数据量;
- 通过改变通信的拓扑结构;
本文通过选取重要的梯度进行更新而减少通信的开销,属于第一种方式。
本篇论文是2018年的论文,属于比较新的论文(现在是2023年)。
论文的原文链接:eSGD: Communication Efficient Distributed Deep Learning on the Edge
ABS
在边缘设备上训练越来越流行,但是在边缘设备上进行训练,需要进行参数聚合,而参数聚合需要消耗大量的通信资源。
现在已经有很多方法能够减少通信资源的消耗。而eSGD
是另外一种方法,该方法重点根据两个机制实现:
- 梯度是稀疏的(指梯度中有很多项接近 0 0 0),由这一点得到了不同参数的梯度拥有着不同的重要程度,所以可以只选择某些重要的梯度进行参数的聚合,而不需要选择所有的梯度;
- 为了防止未被选择的梯度严重严重影响准确性,为没有被选中的梯度提供了残余机制,该机制能够让没有被选中的梯度的更新在本地进行累计,当达到一定值的时候再发送给服务器。
eSGD
在MNIST
上的效果不戳,即使每次只选择 12.5 % 12.5\% 12.5%的梯度进行更新准确度也能达到 81.5 81.5% 81.5。
1 INTRO
我们将所有的参数依次进行编号,如果有两层,第一层编号为 1 , 2 , 3 1,2,3 1,2,3,那么第二层的参数应该从 4 4 4进行编号。这样我们就可以通过 g i g_i gi来表示第 i i i维的梯度。
之前已经有论文发现:大量的参数的值在参与训练后非常接近于 0 0 0(可以理解这一部分的值更新量非常少)。这也就说明了有许多的梯度的值非常接近 0 0 0(只有梯度的值接近 0 0 0才回出现相对应的参数不会有太大的变化,参数才有可能稳定在 0 0 0附近)。而由于每个边缘设备拥有的数据量是非常少的,这就导致会有更多的数据的梯度接近 0 0 0。这些特性使得只选取少量重要的梯度进行参数聚合成为可能。作者设置了一个 H H H变量,其中 H i H_i Hi用来表示编号为 i i i梯度的重要程度,该值是动态更新的,每一轮会根据选择更新的梯度来更新对应的 H H H值,这意味着重要的梯度会越来越重要,这也是符合常识的(例如财富会向少数富人聚集)。
除了重要的梯度之外,作者还发现,即使有的梯度非常接近 0 0 0,但是一旦这些梯度参与更新,那么整个模型的准确性会有巨大的变化,所以作者不打算直接舍弃这些小梯度,而是使用了一种方法将这类小的梯度进行累计起来,当达到一定值的时候,在选择参与更新。
2 Related Work
有两类相关工作来减少通信发送的数据量:
Vector Quantization:通过降低梯度的精度,或者使用近似值来代替原有的梯度,从而使得通信所需要传递的数据量减少。
Gradient Sparsification:作者所做的工作属于这一范畴,每次选择一部分重要的梯度进行参与更新。例如之前提出了,固定的threshold
只有梯度大于 t h r e s h o l d threshold