本文主要是介绍解决DDP的参数未参与梯度计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
将find_unused_parameters改成False之后,如果出现模型有些参数未参与loss计算等错误。
可以用环境变量来debug查看log。
export TORCH_DISTRIBUTED_DEBUG=DETAIL
代码上可以用以下方法查看。
# check parameters with no grad
for n, p in model.named_parameters():if p.grad is None and p.requires_grad is True:print('No forward parameters:', n, p.shape)
可以将这些未用到的参数注释掉。
或者,乘以0与模型的loss进行相加,使未用到的参数也参入了loss计算。
for p in self.parameters():loss += 0.0 * p.sum()
这篇关于解决DDP的参数未参与梯度计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!