0. 概览
数据并行(Data Parallelism):在不同的GPU上运行同一批数据的不同子集;
流水并行(Pipeline Parallelism):在不同的GPU上运行模型的不同层;
模型并行(Model Parallelism):将单个数学运算(如矩阵乘法)拆分到不同的GPU上运行;
流水线并行(Pipeline Parallelism)是一种在分布式计算环境中实现模型并行的技术,主要用于深度学习领域,特别是在处理大规模神经网络模型时。通过将模型的不同部分(如神经网络的层)分配到不同的计算节点上,流水线并行能够在不牺牲训练效率的情况下,利用集群中的多台机器共同完成模型训练。
数据并行参考:
《训练中的数据并行DP详细讲解》
1. 简单流水并行
我们将模型拆分成多个部分,并将每个部分分配给一个 GPU。然后,我们在小批量上进行常规训练,在拆分模型的边界处插入通信步骤。
我们以 4 层顺序模型为例:
o u t p u t = L 4 ( L 3 ( L 2 ( L 1 ( i n p u t ) ) ) ) output=L_4(L_3(L_2(L_1(input)))) output=L4(L3(L2(L1(input))))
我们将计算划分到两个 GPU 上,如下所示:
- GPU1 计算:
i n t e r m e d i a t e = L 2 ( L 1 ( i n p u t ) ) intermediate = L_2(L_1(input)) intermediate=L2(L