首页 > 教程 > 并行训练-流水线

并行训练-流水线

时间:2024-06-27 | 来源: | 阅读:161

话题: S

并行训练-流水线 简述 并行训练主要有三种策略: 数据并行训练加速比最高,但要求每个设备上都备份一份模型,显存占用比较高,但缺点是通信量大。 张量并行,通信量比较高,适合在机器内做模型并行。 流水线并行,训练设备容易出现空闲状态,加速效率没有DP高;但能减少通信边界支持更多的层数,适合在机器间使用。

并行训练主要有三种策略:

  1. 数据并行训练加速比最高,但要求每个设备上都备份一份模型,显存占用比较高,但缺点是通信量大。
  2. 张量并行,通信量比较高,适合在机器内做模型并行。
  3. 流水线并行,训练设备容易出现空闲状态,加速效率没有DP高;但能减少通信边界支持更多的层数,适合在机器间使用。

流水线并行

Micro-batch(Gpipe)将网络结构进行纵向拆分, 每张卡训练其中的几层. 如果是按照纯粹的mini-batch训练, 每层之间是纯串行的. 后面的卡会始终等待前面的卡. 所以引入了micro-batch的概念. 把mini-batch进行更细粒度的拆分, 这样在完成batch0的fp之后, 卡0可以进行batch1的fp, 卡1就能开始batch0的fp. 从而提高并行度.

存在的问题:

  1. 存在bubble_time: 每张卡的空闲时间 = (stage_num - 1) * (fp_time + bp_time)

实际应用中 当mico-batch个数大于stageNum的4倍时, 可以忽略bubble_time

  1. 显存浪费: 当进行stage3的micro-batch 3时, 还需要保存前面所有mico-batch的fp中间结果用于bp.
  2. 在每个mini-batch之间无法并行. 因为下一个minibatch需要等当前所有的micro-batch更新完参数


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网