完整深入材料 · 保留原页与全部停点。回到相关主讲
分开保管,也能共同更新同一个模型
N48/b0 · 从各卡 loss 反向
继续看刚才那四张卡。它们根据自己的数据得到损失,再从后往前计算梯度。当前层若需要没有驻留的参数,就按训练安排重新取得。现在,同一个参数会收到来自四批数据的梯度贡献;不能让四张卡各自悄悄改一片、完全不交换信息,否则得到的就不是共同训练的这一个模型。
教师备课:指图与模拟问答
指图与推进 · 不朗读沿每卡loss逆层序看到各参数分片颜色梯度。
N48/b1 · 同参数梯度共同归约
看颜色相同的梯度。以负责零号片的卡为例,它接收数据A、B、C、D对同一片参数的贡献,汇总后只留下自己负责的结果。其他颜色分别送给各自负责的卡。这种一边归约、一边按保存责任分散结果的动作叫 reduce-scatter。这里加的是同一个参数的贡献,不是把不同参数混在一起。
进一步解释
图中Σg强调贡献的归约关系。实际梯度取求和还是平均,以及按何种 batch 权重缩放,必须与训练损失的定义一致。
教师备课:指图与模拟问答
指图与推进 · 不朗读选一色,指四批贡献及其Σg结果,再指其他颜色各自的归属;不沿卡编号把不同参数相加。
N48/b2 · 所属卡更新所属片
拿到汇总梯度的卡,读取自己保存的主权重和 m、v,完成所属片的更新。新的主权重和更新历史继续留在负责卡,主权重也形成新的工作权重分片。其他卡不必长期保存这一片的完整梯度和优化器状态;它们下一次需要参数时,再取得共同更新后的版本。
教师备课:指图与模拟问答
指图与推进 · 不朗读沿本卡 Σg→Adam 更新→新 θ 指读;在更新框内指出主权重与 m/v 的读取,明确新 θ 是工作参数片,主权重与 m/v 也保存更新结果。
N48/b3 · 下一轮使用共同新参数
到下一轮,需要这一层时,大家取得的是共同更新后的参数。于是一次训练闭环完成了:各卡处理自己的数据,必要参数临时取齐,梯度共同汇总,各片由负责者更新。我们改了保存与通信的组织,没有把训练目标拆成四个无关目标。临时视图可以释放,通信和激活仍会影响峰值。这个办法回答了怎样少存重复状态;接下来还要回答,在一张卡里面,数据为什么可能搬得比算得更费事。
教师备课:指图与模拟问答
指图与推进 · 不朗读揭示新参数完整视图,沿下方闭环回到下一轮。
补充推导、边界与来源
同一参数在不同数据批次上产生不同梯度贡献。reduce-scatter 将同一个参数的贡献归约,并把结果交给负责该分片的卡;不把不同参数的梯度混加。若训练目标用批次平均损失,归约时还需要与目标口径一致的缩放。
本卡拿到所属参数的共同梯度后,使用自己保存的主权重和 m/v 更新所属片。下一轮 all-gather 取得这些共同更新后的参数,因此所有数据仍在训练同一个模型。完整闭环是:各卡数据前向→需要时取齐层参数→反向产生梯度→按同参数归约分散→所属卡更新→释放临时量→下一轮取得新参数。
本页证据与条件
8B / 四卡混合精度 Adam 教学构造;ZeRO 机制,非硬件实测