数据并行:torch.nn.DataParallel的数据并行原理
优化器则对梯度进行聚合,在主GPU更新模型参数,再把新的参数分发到每个GPU。当然数据并行也可以选择主GPU分发梯度(直接接受梯度,加和,分发,标准的all_reduce),这样每个GPU分别更新参数,理论上效果相同。把输入和label都分别分发到不同的卡上,然后每个卡可以分别计算自己的loss,然后all_reduce一次loss(简单的加和再分发),之后每张卡分别更新自己的梯度即可。将各个GPU上计算得到的梯度加和,并在主GPU上更新模型参数,然后将更新后的参数分发到每个GPU上。
原创
2023-04-10 21:01:01 ·
799 阅读 ·
0 评论