在使用pytorch的DataParallel进行多GPU并行训练过程中,参考了很多博客,其中两个博客的内容有误, 会导致多GPU训练时loss不能正常下降,且运行过程中不会有报错, 下面做简单的说明。
有问题的博客链接:
https://blog.youkuaiyun.com/daniaokuye/article/details/79110365
https://blog.youkuaiyun.com/qq_19598705/article/details/80396325
以上两个博客的主要问题为将优化器也使用DataParallel包装:
optim_opt = config["optim"]
optimizer = optim.SGD(net.parameters(), lr = optim_opt["lr"], \
momentum = optim_opt["momentum"], \
nesterov = optim_opt["nesterov"], \
weight_decay=optim_opt['weight_decay'])
optimizer = nn.DataParallel(optimizer, device_ids = [0, 1, 2, 3])
使用DataParallel包装后,optimizer的所有操作都需要获取modu