Communication Efficient Large-Scale Training with Adam's Convergence Speed

Seide F., Fu H., Droppo J., Li G. and Yu D. 1-bit stochastic gradient descent and its application to data-parallel distributed training of speed dnns. 2014.

Tang H., Gan S., Awan A. A., Rajbhandari S., Li C., Lian X., Liu J., Zhang C. and He Y. 1-bit Adam: Communication efficient large-scale training with adam's convergence speed. ICML, 2021.

本文提出了一种 Adam 预训练的 1-bit SGD 优化方法.

1-bit Adam

  • 在数据并行的分布式训练中, 需要将各个节点的梯度 allreduce 在一起, 这里面不可避免存在一些通信代价.

  • 为此, 本文希望在梯度交换前, 先将梯度进行(量化)压缩, 以减少通信代价.

1-bit SGD

  • 首先, 我们讲实现 1-bit SGD 的可能性.

  • vanilla SGD:

    xt+1=xtγgt=x0γs=0tgs.

  • SGD 带压缩的梯度:

    xt+1=xtγCω[gt]=xtγ(gtδt)=x0γs=0tgs+γs=0tδshistory compression error.

    这里 Cw=1Nn=1NQ1Q(g;n), N 表示总的节点数, Q,Q1 分别表示量化与反量化操作.

  • 显然如果不进行任何处理, 累积的误差是非常惊人的. 幸而, 之前的工作提出了一种误差补偿 (error compensation) 机制:

    xt+1=xtγCω[gt+δt1]=xtγ(gtδt+δt1error cancellation)=x0γs=0tgs+γs=0t(δsδs1)=x0γs=0tgs+γδt.

    因此误差不会累积.

  • 这里需要说明一下具体的流程:

    1. 每个 node 计算得到梯度 gt, 以及上一次量化的误差 δt1, 传递如下信号:

      Q(gt+δt1).

    2. 计算当前的误差累积:

      δt=gtQ1Q(gt+δt1).

  • 因此, 1bit-SGD 是没法降低显存在占用的, 因为我们要维护额外的 δt, 它的作用主要是降低平均梯度时所带来的通信代价.

  • 然而, 上面的推导依赖对梯度的线性累积, 如果是 Adam 这种非线性的优化器, 误差补偿也没法阻止误差的累积. 因此, 本文所提出的 1-bit Adam 的流程如下:

    1. 在一开始, 采用正常的 Adam 进行更新, 得到二阶动量的一个估计 (因为作者发现, Adam 的二阶动量在训练一段时间后趋于稳定);
    2. 固定二阶动量, 并开始量化梯度, 转而采用 1-bit SGD 的格式更新.

  • 所以本质上, 1-bit Adam 还是一个 1-bit SGD 方法, 相当于设置了一个更合理的学习率? 实际上, 作者的二阶动量会逐步区域稳定的这个假设也是不合理的, 至少我做实验的经常会观察的逐步增加的二阶动量.

代码

[DeepSpeed]

posted @   馒头and花卷  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2020-02-13 Are Loss Functions All the Same?
点击右上角即可分享
微信分享提示