阅读了Yang You等的系列论文(现在才发现其实以下四篇实际是两篇。。)
1. Scaling SGD Batch Size to 32K for ImageNet Training. https://arxiv.org/abs/1708.03888v1
2. Large Batch Training of Convolutional Networks. https://arxiv.org/abs/1708.03888v3
3. 100-epoch ImageNet Training with AlexNet in 24 Minutes. https://arxiv.org/abs/1709.05011v1
4. ImageNet training in minutes. https://arxiv.org/abs/1709.05011v10
加速大型卷积网络训练的一种常见方法是增加计算单元, 随着节点数量的增加,batch size增长。 但是,大batch size训练通常会导致模型精度低。 我们认为目前大批量训练(线性学习速率缩放与预热,在Facebook的文章中有描述:Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour)的方法不够普遍,不同的模型训练可能会不同。 为了克服这种优化困难,提出了一种基于层自适应速率缩放(LARS)的新训练算法。 使用LARS,将Alexnet的batch size缩放到8K,并将Resnet-50缩放到32K,而不会降低准确性。
LARS算法如下:
LARS算法中,每个层都有一个本地学习率(local LR),每层的local LR的值有该层的权重及梯度有关,不同层的local LR不同。
具体实现在 https://github.com/borisgin/nvcaffe-0.16
前几天看好像nvidia已经将此实现加入nvcaffe-0.17中了,https://github.com/nvidia/caffe/tree/caffe-0.17
