Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour
Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour - 中文验证版
英文原文卡片:imagenet_one_hour_2017.md
状态:已翻译。
元数据
- Slug:
imagenet_one_hour_2017 - 年份: 2017
- 出处: arXiv
- 作者: Priya Goyal et al.
- 阅读状态: read complete
- 计算范式: 多 GPU 密集训练
- 主要来源: PDF、抽取文本
计算设置
论文明确描述了硬件系统。实验使用 Facebook Big Basin GPU 服务器。每台服务器包含 8 块 NVIDIA Tesla P100 GPU(通过 NVIDIA NVLink 连接)、3.2TB 本地 NVMe SSD 存储、Mellanox ConnectX-4 50Gbit 以太网卡和 Wedge100 以太网交换机。主要结果使用 256 块 GPU 和 minibatch size 8192 在一小时内训练 ResNet-50。
论文还提供了带宽合理性检查。ResNet-50 约有 2500 万参数,约 100MB(32 位浮点)。单块 Tesla P100 上的反向传播耗时 120ms。因为 allreduce 传输约两倍缓冲区字节,作者估计峰值网络需求约每 0.125 秒 200MB,即 12.8Gbit/s,适配 50Gbit 以太网。基线为单台 8-GPU Big Basin 服务器,minibatch 256;大规模运行使用 32 台服务器,每台 8 块 GPU。
瓶颈
瓶颈是在不显著改变优化问题的前提下扩展同步 SGD。更多 GPU 仅在每次同步覆盖足够多样本时才增加吞吐,因此全局 minibatch 增长。但大 minibatch 改变早期优化动态,如果学习率简单从一开始就提高,可能破坏训练稳定性。通信是另一瓶颈:每块 GPU 必须在下一步更新前收到求和梯度,如果 allreduce 未与反向传播重叠,可能消除加速。
批归一化增加了不那么明显的约束。论文论证改变每个 worker 的 batch size 会改变 BN 统计量,从而改变了优化所针对的损失函数。配方保持每个 worker 样本数 n 固定为 32,同时增加 worker 数 k,因此全局 batch kn 增长而不改变 BN minibatch 定义。
方法适配
训练方法是硬件缩放配方。线性缩放规则将学习率设为与全局 minibatch size 成比例:eta = 0.1 × kn / 256。对 8192-minibatch 运行,得到 eta = 3.2。因为该速率在初始化时过于激进,论文在前 5 个 epoch 使用渐进预热,从 eta = 0.1 开始线性增至缩放值。所有模型仍训练标准 90 epoch,在 epoch 30、60 和 80 处衰减。
分布式实现将通信适配到 P100 集群。每层梯度准备好后立即 allreduce,同时反向传播继续计算下层。服务器内规约和广播对足够大的缓冲区使用 NCCL,服务器间通信使用 Gloo。论文比较了环形和折半/倍增 allreduce,报告在 32 台服务器上折半/倍增对相关较小缓冲区比环形快 3 倍。本地规约、跨服务器 allreduce 和广播在可能处 pipeline 化。
数据管线也很重要。每个 epoch 使用跨 worker 分区的单次随机洗牌;论文警告不正确的多 worker 洗牌可能污染缩放结论。
证据
基线 ResNet-50 运行使用 8 块 P100 GPU,minibatch 256,top-1 验证误差 23.60%±0.12。大规模运行使用 256 块 GPU,minibatch 8192,学习率 3.2 和渐进预热,达到 23.74%±0.09。无预热为 24.84%±0.37,恒定预热为 25.88%±0.56,表明大 batch 失败主要是早期优化问题而非不可避免的泛化惩罚。
Wall-clock 证据是本卡片核心。论文陈述 8-P100 设置训练 ResNet-50 耗时 29 小时,而 256-GPU 系统在一小时内完成相同的 90-epoch ImageNet 工作负载。时间图显示略低于理想的吞吐缩放,约 90% 效率,352 块 GPU 时实现在约 30 秒内完成约 128 万张 ImageNet 训练图像的一次遍历。论文将效率主要归因于将 allreduce 通信隐藏在梯度计算之后。
该方法存在断裂点。验证误差从 minibatch 64 到 8192 保持稳定,然后开始上升;超过 64K 后,在线性缩放规则下训练发散。ImageNet-5k(约 5 倍大数据集)显示类似曲线,表明仅靠数据集规模不自动允许更大的有用 minibatch。
历史影响
本文将 ImageNet 训练转变为同步多 GPU 训练的系统基准。它将计算问题从"一个 GPU 能否训练 CNN?"转变为"如何在使用数百个 GPU 时保留 SGD 行为?"答案结合了优化器缩放、BN 语义、数据洗牌和通信重叠,使大 batch 分布式 SGD 成为密集视觉模型的标准配方。
局限
该结果针对 ResNet/ImageNet 式密集数据并行调优。它不处理模型并行或内存受限的巨型模型。准确率在超出 8K-minibatch 范围后下降,在所述规则下超过 64K 发散。配方依赖稳定的每 worker BN 大小、正确的全局洗牌和可隐藏在反向传播下的通信;不同网络或较慢互连可能不共享相同缩放行为。
链接
- 所属计算范式:compute spine
- 相关卡片:SGD large-scale learning 2010
- 方法索引:sgd、parallelism、normalization
- Ledger 更新:compute bottlenecks