作者:Frank Seide 、 Dong Yu
摘要:
1.主要思想:只要量化损失(quantization error)被带到下一个minibatch,就可以实现1-bit的无损压缩。
2.方法:和Adagrad、自动minibatch大小调节、双缓冲、模型并行结合。
3.压缩率:没有提及。只是说了提速多少。
Introduction
4.R-prop方法好像可以直接丢弃上一个minibatch的信息(这个不确定,后续调研一下R-prop方法)
5.介绍其他加速训练的方法:低阶近似(low-rank approximations)、二阶方法(Hessian Free)、模型平均、ADMM。(这些方法都不了解,后续可以看一下,但是都好像和梯度压缩无关,所以暂时略过)。
6.第六段和DNN的关系比较大,后续问问wamingchen。
和Hogwild/ASGD不同,该方法是确定性不改变收敛性能的方法。(比较怀疑这个说辞)
2
2.1数据并行分布式SGD
讨论了通信时间和计算时间的关系,并由两者确定最佳的节点数量K。(其中的公式没有看懂,后续一定要再看一下!)
2.2利用双缓存对minibatch进行切分
将minibatch分成前一半和后一半。push前一半梯度的同时,计算后一半的梯度。(文献19、8应该是介绍了这个技术)
3. 1-bitSGD with Error Feedback
1.量化误差不应该被抛弃,否则会导致不收敛。
2.通过公式可以看出来,就是计算出量化误差,然后累加到下一个minibatch当中。(下标表示什么没有看明白)
3.将0作为量化阈值(如何量化得????)
3.1集成梯度
每一个minibatch需要经历两次quantization。(这里也没想明白,回头再看看!)
4系统描述
1.增加minibatch大小可以增加数据并行度,但是太大容易导致模型不收敛(这个还不理解为什么?)。因此这个系统前期先在小数据上确定可以最大的minibatch size。
2.训练过程中使用交叉验证动态调整学习率的衰减系数。
3.使用了Adagrad,它可以收敛得更快,并且允许更大的minibatch size。
4.可以在三个地方使用Adagrad:
4.1 量化之前
4.2 量化之后:先集成子梯度,然后进行Adagrad
4.3 进行动量平滑之后
目前看,4.2效果最好。(文章也不知道为什么这样效果最好)
5实验
5.2 1-bit量化的影响
1.前期阶段没有使用梯度量化和并行化(冷启动:冷启动和热启动的区别是啥?)
2.error feedback很关键,一定要加上。