摘要:
问题: 大网络和大数据集导致训练时间增长,distributed synchronous SGD通过划分SGD minibatches over a pool of parallel workers 解决这个问题,然而per-worker workload 必须大,导致了nontrivial growth in SGD minibatch size, 削弱了效率。
在imagenet数据集上大的minibatch导致优化困难,但是当addressed的时候网络能没有精度损失。
方法:1. 使用了hyper-parameter-free linear scaling rule for adjusting learning rates as a function of minibatch size. 2. a new warmup scheme to overcome optimization challenges early in training.
效果:caffe2训练resnet50,minibatch size 8192 在256 gpu上花费一小时,精度与小minibatch 相同。使用商品硬件实现了90%的scaling efficiency 当从8到256 gpu时。加速互联网级别的视觉训练
1.介绍
大网络和数据集导致训练时间增长
方法:
1.提出无需超参数的linear scaling rule调整学习率,高效的linear scaling要求nontrivial communicaiton algotithms
2.提出warmup 策略,一开始使用低的学习率克服早期的优化问题
效果:
实验在caffe2框架和big basin gpu servers上进行,实现与baseline 验证集错误率相同,训练错误率曲线和mini batch相同,在mask r-cnn上实验证明在object detection and instance segmentation上也有用
工业界训练internet-scale数据集,研究界从单gpu到多gpu简化migrating 算法而无需超参数搜索,实验中将faster r-cnn和resnets上从1块gpu迁移到8块gpu。
large minibatch sgd
2.1 大minibatch的学习率
linear scaling rule:minibatch size乘k,学习率乘k。
linear scaling rule保证和小minibatch的精度相同,并且训练曲线相同
比较了k minibatch,每个batch size为n,迭代k次,学习率 η \eta η ;和一个大小为kn的大的minibatch 学习率 η ^ \hat{\eta} η^ ,
在这里插入图片描述
但是这个假设在两种情况下不存在,一种是训练初期,网络变化的很快(提出warmup 解决)。第二种是 minibatch size 不可以无限的缩放,虽然结果在很大的 size 时也会保持很高的精度,但是在超过某个点后会迅速的下降
2.2warmup
提出warmup解决大minibatch中使用linear scaling rule训练早期网络变化快的问题。
constant warmup:前5个epoch采用低学习率 η \eta η,之后采用 η ^ \hat{\eta} η^学习率。优化效果不好,训练错误。
gradual warmup:逐渐增长学习率。
2.3batch normalization with large minibatches
3. Subtleties and pitfalls of distributed SGD
这部分说当采用distributed SGD进行训练时,需要对weight decay等参数进行修改
weight decay: 如果没有 weight decay , 就会有很多种方法来缩放学习率,例如缩放loss 的梯度项,但是缩放 loss 和缩放学习率并不等价
momentum correction:如果将学习率引入冲量SGD之后,在改变学习率之后应用momentum correction
gradient aggregation: 对于 k 个 worker,每一个 worker 的 minibatch size 为 n,梯度更新的时候除以 kn ,而 loss layer 通常会将每一个 worker 的平均梯度加起来
data shuffling :Remark 4: Use a single random shufflfling of the training data (per epoch) that is divided amongst all k workers.
4.communication
4.1 gradient aggregation
梯度需要通过allreduce进行聚合,每个gpu本地计算的梯度随着参数量增加聚合困难。
通过优化的allreduce实现near-linear SGD scaling
https://zhuanlan.zhihu.com/p/79030485
https://zhuanlan.zhihu.com/p/276122469
三步实现服务器之间和服务器内的通信: (1) buffers from the 8 GPUs within a server are summed into a single buffer for each server, (2) the results buffers are shared and summed across all servers. (3) the results are broadcast onto each GPU.
intraserver服务器内的通信:NCCL使用GPU kernel加速intraserver collective,
interserver服务器间通信:实现了两种带宽受限场景下的算法。1.recursive halving and doubling algorithm 2.bucket algorithm (also ring algorithm)
halving/doubling 更快
5.实验
实现在imagenet 数据集上使用256worker 一个小时训练resnet50,精度和小minibatch相同,无需额外的超参数,mini batch可达8k。
5.1实验设计
Imagenet 数据集,1.28 million训练图片,top1错误率在50000验证图片上
resnet50模型,无论minibatch size大小训练90epoch,
5.2优化和泛化
比较三个warmup策略,no warmup, constant warmup 和 gradual warmup
training error :large minibatch sizes are challenged by optimizaiton difficulties in early training. If these difficulties are addressed, the training error and its curve can match a small minibatch baseline closely.
validation error: if the optimizaition issues are addressed, there is no apparent generalizaiton degradation boserved using large minibatch training.
5.3分析实验
Minibatch size vs error: validation error 基本不变当mini batch从64-8k
training curves for various minibatch sizes: 发现当最后validation error curve和baseline接近的时候,training curve也接近。不接近的时候,training curve也不接近
alternative learning rate rules:改变学习率会改变训练曲线,即使最后错误率近似,
batch normalization initialization:大minibatch更容易被optimiziation difficulties影响
5.4 generalization to detection and segmentation
从大的minibatch中学到的特征在不同任务(classification, detection, segmentation)和不同数据集(imagenet coco)都具有普适性