返回课堂

不同层排成流水线

E06/b0 · 先走第一个微批次

流水线并行 PP:不同层组放在不同设备,微批次沿层顺序经过
设备/阶段时刻 1时刻 2时刻 3时刻 4时刻 5
GPU 0 · 层组 1μ1空闲空闲空闲空闲
GPU 1 · 层组 2空闲μ1空闲空闲空闲
GPU 2 · 层组 3空闲空闲μ1空闲空闲
GPU 3 · 层组 4空闲空闲空闲μ1空闲
先看 μ1 单独通过:前面的设备结束后,后面的设备才拿到输入。

这里只展开前向时间线;完整训练还需安排反向与激活保存。

先走第一个微批次

这里四张卡真的各自负责不同的层了。为了和刚才分片数据并行区分,我们把卡上的标签改成阶段一、二、三、四。先只送一小份数据进去,这种小份叫微批次。第一张卡处理它的时候,后面三张还没有输入,只能等。然后它往第二张卡移动,前面那张如果没有新工作,也会空下来。图上浅色的格子是空闲时间,也就是流水线里的空泡。空闲并不表示设备能力不足,而是依赖关系暂时没有给它工作。添加设备如果没有改变这些等待关系,就不一定能按比例缩短时间。

教师备课:指图与模拟问答

指图与推进 · 不朗读教师指向当前高亮对象,随后推进。

E06/b1 · 第二个跟上

流水线并行 PP:不同层组放在不同设备,微批次沿层顺序经过
设备/阶段时刻 1时刻 2时刻 3时刻 4时刻 5
GPU 0 · 层组 1μ1μ2空闲空闲空闲
GPU 1 · 层组 2空闲μ1μ2空闲空闲
GPU 2 · 层组 3空闲空闲μ1μ2空闲
GPU 3 · 层组 4空闲空闲空闲μ1μ2
后续微批次进入,可让不同阶段同时工作;开头与尾部仍有空泡。

这里只展开前向时间线;完整训练还需安排反向与激活保存。

第二个跟上

现在让第二个微批次跟进。第一份走到第二阶段,第二份就在第一阶段计算,设备开始同时有活可做。持续送入更多微批次,能提高利用率,但开始的填充、结束的排空,以及最慢阶段的等待仍然存在。这里为了看清因果,只画前向;真正训练还要安排反向和中间激活。Megatron 处理这类大模型并行组织,NCCL 提供设备之间的集合通信。记住它们各自负责哪一层工作,比记住缩写更有用。多卡让大任务有机会执行,下一步我们看一张卡内部:为什么同样的注意力数学计算,还能有更有效率的执行方法?

教师备课:指图与模拟问答

指图与推进 · 不朗读教师指向当前高亮对象,随后推进。

补充推导、边界与来源

流水线并行(PP)把连续层分配给不同设备。一个微批次经过第一阶段,才能进入第二阶段;在流水线刚启动时,下游设备没有可处理的输入,因此空闲。第二个微批次进入第一阶段时,第一个可以在第二阶段运行,从而形成重叠。

微批次是一个训练批次里的更小份数据。完整训练还要安排反向计算、保留或重算激活、汇总多个微批次的梯度。图中的前向时序用于辨认填充和排空,不是完整最优训练调度。GPipe、1F1B 等策略以不同方式安排前向和反向;阶段耗时不均衡也会造成等待。TP、PP 与数据并行可组合,但组合后仍须核对设备分组及每类通信。

本页证据与条件

A21;A23

进入主题正文