jia-zhuang / pytorch-multi-gpu-training

整理 pytorch 单机多 GPU 训练方法与原理
706 stars 80 forks source link

DDP多卡训练模型时候各个gpu上的模型不一致。 #7

Open chunnankang opened 2 months ago

chunnankang commented 2 months ago

哈喽,想请教个问题,我在使用ddp去并行多卡训练一个模型的时候,发现各个gpu上的模型参数并不一致,您知道是什么原因吗?如图所示,我使用的是DDP的形式去加载模型和分发数据,查阅资料说这种形式,会自动的在每个batch时各个gpu上的模型进行梯度同步,在主gpu上进行更新同步,确保各个模型的gpu上参数是一致的,但是通过我这么打印日志发现各个gpu上的模型并不一致,您知道是什么原因吗? image image image

jia-zhuang commented 2 months ago

我理解是每次同步后各个GPU上的模型参数应该是一样的,然后各GPU用自己分配到的训练数据训练(每个GPU分配到训练数据肯定是不一样的)并更新各自的参数,参数更新后参数肯定不一样了,要到下次同步之后才会变一样。 你确认下打日志是在上述的哪个阶段