《Deep Gradient Compression》
作者韩松,清华电子系本科,Stanford PhD,深鉴科技联合创始人。主要的研究方向是,神经网络模型压缩以及硬件架构加速。
论文链接:https://arxiv.org/pdf/1712.01887.pdf
本篇文章发表在 ICLR 2018,韩松之前有一系列模型压缩的研究,比如其博士毕业论文《EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING》,以及获得 ICLR 2016最佳论文的《Deep Compression:Compressing deep neural networks with pruning trained quantization and Huffman coding》。
算法与模型压缩这个方向,前期的主要工作都是针对于模型的Inference阶段,现在的情况是,Inference compression已经做得很不错了。所以自然得考虑Training阶段的模型压缩。
本篇文章即主要针对模型的Training过程进行压缩。因为Training的领域这么多年都没有什么大的变化,基本上都是围绕着GD(Gradient Descent)以及其变体(比如SGD、momentum、Adam)做文章。所以本文针对distributed SGD进行压缩,主要思想是,小于一定阈值的gradient对于系统的每一次迭代影响是非常小的,可以将其积累到一定的阈值,而后一并传递。但是这样的流程,会产生一定的时延效应影响进度,所以文章又采取了一些方法来克服这种方式的时延带来的影响。
下面是文章的主体梳理:
【Abstract】
多节点分布式训练会遇到带宽限制的问题,尤其是在移动设备上的训练。本文发现99.9%的gradint传递都是冗余的,所以提出一种Deep Gradient Compression(DGC)的方法来减少通信带宽communication bandwidth。
为了防止压缩导致精度损失,DGC采用四种方法:①动量修正(momentum correction)、②局部梯度修剪(local gradient clipping)、③动量因子掩藏(momentum factor masking)、④预训练(warm-up training)。
DGC可以达到270x到600x的无损压缩率,梯度大小,ResNet50从97M降到0.35M。可以在1G以太网中完成大规模分布式训练。
一、介绍
讲了一些分布式训练的工作,同步SGD是主流的方法。但是问题在于网络通信带宽成为进一步扩大训练规模的瓶颈,在移动设备上尤为严重(更低的网络带宽、断续的网络连接、更昂贵的移动数据协议)。
引出DGC是用来解决训练高通信带宽的问题,其实贡献主要的压缩率的方法(积累梯度传播)是另两篇文献提出的,DGC方法整合了这些方法,同时解决了这些方法(延时效应)的精度损失问题。
实验测试,测试了三种应用,用CNN图像分类(CIFAR10和ImageNet),RNN语言模型(Penn Treebank),语音识别(Librispeech Corpus)。结果显示最高可以无损压缩600倍。
二、相关工作
相关工作有,异步SGD。主要有梯度量化、梯度稀疏两大类压缩方法。
a) 梯度量化
二值SGD(1 bit),语音应用10X加速。QSGD。TernGrad三值SGD(对应于三值网络)。
b) 梯度稀疏
Aji&Heafield(2017)提出Gradient Dropping(文中多次提到这份工作),
三、DGC
a) 梯度稀疏 gradient sparsification
想法是通过只传送重要的gradient来降低通信带宽,可以简要概括成 稀疏化更新。 重要的梯度,简单认为是大于一定阈值的梯度。为了防止信息损失,其余“不重要”的梯度,被局部累加起来。当其累加到阈值的时候再进行传送。算法流程如下表1:
表