摘要
DP,即数据并行,是一种在多GPU上并行处理数据以加速深度学习模型训练的技术。其基本原理是将一个batchsize的输入数据均分到多个GPU上分别进行计算,每个GPU处理一部分数据,并独立进行前向传播和反向传播。计算过程如下:
-
数据划分:
- 在DP模式中,输入数据(一个batch)会被均分到多个GPU上。这里需要注意的是,为了有效划分数据,batchsize通常需要大于或等于GPU的个数。
- 数据划分是并行的,即每个GPU都会接收到一部分数据,并独立进行处理。
-
模型复制:
- 在DP模式中,整个模型会被复制到每个GPU上,这样每个GPU都拥有模型的完整副本。
- 模型复制确保了每个GPU都能独立地进行前向传播和反向传播计算。
-
主GPU角色:
- 在DP模式中,通常会有一个主GPU(如cuda:0),它扮演参数服务器的角色。
- 主GPU会向其他GPU广播其参数,并在梯度反向传播后收集各GPU的梯度。
- 主GPU对收集到的梯度进行平均后更新参数,并将更新后的参数统一发送到其他GPU上。
-
前向传播与反向传播:
- 每个GPU都会独立地对其负责的数据子集进行前向传播