Haochen-Wang409 / U2PL

[CVPR'22] Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
Apache License 2.0
424 stars 59 forks source link

DDP loss计算疑问 #152

Closed wade0604 closed 11 months ago

wade0604 commented 11 months ago

您好! 请问在loss = sup_loss + unsup_loss + contra_loss中,为什么只对contra_loss进行dist.reduce操作,而sup_loss和unsup_loss都没有进行这个操作,我也看了一些其他DDP训练的loss计算方式,好像有不进行reduce操作直接backward的,也有先reduce再backward的,请问下这两种方式有区别吗?

Haochen-Wang409 commented 11 months ago

contrastive loss 进行 reduce 是因为有可能某张卡采样到了 query,loss 正常计算;而另一张卡没有采样到 query,loss 直接跳过计算了。这样会导致不同卡之间的计算速度差距过大,有一定可能停止通讯。因此,我们让 contrastive loss 在各个卡之间统一。

其他的 loss 则没有这个问题,都会正常计算,因此无需人为地通讯。

wade0604 commented 11 months ago

非常感谢您的解答!