流水线并行策略虽能有效分割模型,但在运行过程中仍存在较高的空泡率,影响了整体性能。
为了解决这一问题,虚拟流水并行技术被提出,旨在通过进一步细分计算任务,降低空泡比率,提升训练效率。
NPU 0: [1, 2] [9, 10] NPU 1: [3, 4] [11, 12] NPU 2: [5, 6] [13, 14] NPU 3: [7, 8] [15, 16]
前向的顺序为NPU 0 -> NPU 1 -> NPU 2 -> NPU 3 -> NPU 0 -> NPU 1 -> NPU 2 -> NPU 3。
虚拟流水并行技术适用于以下场景:
性能优化需求:旨在进一步降低空泡比率,提升模型训练的性能和效率。
--num-layers-per-virtual-pipeline-stage N # N表示每个虚拟流水线阶段的层数,要求模型总层数L % N == 0,且--pipeline-model-parallel-size > 2
通过虚拟流水并行策略,成功降低了空泡比率,进一步提升了模型训练的性能和资源利用率。