2017《AdaComp:Adaptive Residual Gradient Compression for Data-Parallel Distributed Training》

作者:Chia-Yu Chen

写在前面:

这片论文的引用量目前只有被Hansong引用过,感觉算不上是经典论文,但提出了自适应的思路,因此看了一下。

Abstract

1.压缩率:对于全连接层:200倍压缩;对于CNN,40倍压缩。

2.优势:适用于各种领域(vision、speech、language),各种数据集,各种优化器。

3.方法:稀疏化和量化

4.总结:AdaComp是基于本地的梯度累积进行选择,并且可以本地情况自动调节压缩率。

1.Introduction

3.之前的工作都是对全连接层进行压缩,本文提出的工作还适用于卷积层等多种复合结构,并且准确率和收敛率的损失可以忽略不计。

2.Residual gradient compression

Background

Strom 2015:只有梯度值超过指定阈值,才会被量化为1bit进行传输。

之前的工作都没有讨论如何选择阈值。

Dryden:不是选择固定阈值,而是固定每次的传输百分比,但需要预先对所有梯度进行排序,这是一个代价比较高的计算任务。

所有的工作都基于一个准则:未被发送的梯度都累积了下来。

Observations

第一个发现:

对于裁剪来说,不应该只考虑梯度的大小,还应该考虑数据和数据对特征活跃度的影响。因为可能有的梯度虽然值很小,但它们可能连接的高活跃度的输入特征。

累积梯度对特征活跃度几乎没有什么影响。

第二个发现:

对于神经网络来说,网络结构、层的类型、minibatch的大小、其他参数都会影响压缩率,因此需要动态地、自动地调整压缩率。

最后,为了减小成本,本文避免了排序,并且基于本地数据进行压缩。

Adaptive Residual Gradient Compression(AdaComp) Technique

1.其实核心思路就是将所有参数进行了分桶(第一段记录了策略:根据网络结构进行分桶),先找到每一个bin中的累积量的最大值,然后一旦(累积量+factor*新的梯度)超过了这个最大值,就把(累积量+新的梯度)发送出去。

伪代码

residue:之前的累积量

dW:本轮计算的梯度

1 G=residue+dW
2 H=G+dW(其实就是H= residue+2*dW,2就是factor)
3 对于所有的桶:
     计算该桶中的最大值,记为gmax
4 对于每一个桶:
     对于桶中的每一个值:
         若 Hi>gmax:
             就将G进行量化、发送
             residual记录了量化误差
         否则:
             residual记录了G,保存在本地。

3.实验

这个没来得及看,后续看一下。

4.讨论

这个没来得及看,后续看一下。