只用了 224 秒!索尼在 ImageNet 上训练出了 ResNet-50

阅读数:1579 2018 年 12 月 3 日 14:27

只用了224秒!索尼在ImageNet上训练出了ResNet-50

近日,索尼公司的研究人员宣布,他们在 ImageNet 上只花了 224 秒就训练出了一个 ResNet 50 架构。

得到的网络在 ImageNet 的验证集上具有 75% 的 top-1 准确率。他们通过使用 NVIDIA 的 2.100 Tesla V100 Tensor Core GPU 实现了这一记录。除了这个记录,他们还使用 1.088 Tesla V100 Tensor Core GPU 获得了 90% 的 GPU 伸缩效率。

将神经网络训练成多台机器有两个主要的挑战:要训练的批大小和梯度的同步。

为了减少训练神经网络的时间,可以使用一个小规模批处理来快速地将网络权重“推到正确的方向”。为了更新权重,错误会给出一个梯度,指示需要更新权重的“方向”。当使用小规模批处理时,您可以非常快速频繁地确定这个方向。

然而,小规模微批处理使得神经网络倾向于找到局部性能的最小值。索尼使用批处理大小控制解决了这个问题,这是一种最近被越来越多地使用的技术。通过对批处理尺寸的控制,逐渐增大小规模批处理的尺寸,避免局部最小的损失情况。通过观察更多的图像,神经网络对需要改进的平均误差方向有了更好的认识,而不是仅仅根据几个小样本确定误差方向。索尼将前 5 个轮次视为热身轮次,批大小较低,而之后的轮使用了较大规模的批处理。索尼还使用了混合精度训练,在 FP16 中进行向前 / 向后计算。

第二个问题是,在机器之间梯度的同步可能很慢。对于不同 GPU 之间的通信,需要大量的带宽。索尼的研究人员采用了 2D-Torus all reduce 算法来减少通信开销。在这种通信算法中,GPU 被放置在一个虚拟网格中。首先,梯度水平传递,然后垂直地传递到所有列,然后在最后一次传递中再次水平传递。这意味着,如果 X 是水平方向上的 GPU 数量,则需要 2(X-1) GPU 到 GPU 的操作。

索尼的研究人员使用工具神经网络库 (NLL) 及其 CUDA 扩展作为 DNN 培训框架。对于 GPU 之间的通信,他们使用了 NVIDIA Collective Communications Library (NCCL) version 2。

去年,多个团队试图在尽可能短的时间内训练 ResNet 50 架构。在 2017 年 9 月, InfoQ 报道 IBM 在 50 分钟内培训了相同的神经网络架构。当时,IBM 实现了更高的可伸缩性效率,但只使用了 256 个 GPU。在问答中,Hillery Hunter 说批处理的大小是最具挑战性的事情之一,但是他们希望他们的方法可以扩展到更多的 GPU。在本文中,他们研究了多个 GPU 的 GPU 伸缩效率,在使用 3264 GPU 进行训练时,效率为 52.47%。

索尼公司的研究人员将他们的研究结果发表在《ImageNet/ResNet-50 Training in 224 Seconds》上,您可以在 arXiv 上找到这篇论文

评论

发布