DataParallel、DataDistributedParallel、SyncBN、BN

DataParallel简称DP,它不支持SyncBN(即同步BN),同步BN只在DataDistributedParallel(DDP)中才支持。如果单卡batch size太小,使用SyncBN可以提高性能;如果batch size较大的时候不需要使用SyncBN,因为同步时GPU之间的通信会导致训练速度变慢。

DP中的BN与DDP支持的SyncBN
当使用 torch.nn.DataParallel 将代码运行在多张 GPU 卡上时,PyTorch 的 BN 层是非同步的,默认操作是各卡上数据独立地计算均值和标准差,并在单卡上维护自己的参数,只在每一个GPU上对样本进行归一化,相当于减少了batch size的大小,训练的时候实际的 BN 层的 batch-size 为B a t c h S i z e /G P U 数 量 ;

SyncBN的意思是每张卡上使用相同的统计量:均值和方差。同步 BN 使用所有卡上的数据(全局样本数据)一起计算 BN 层的均值和标准差,缓解了当批量大小(batch size)比较小时对均值和标准差估计不准的情况

猜你喜欢

转载自blog.csdn.net/weixin_42809268/article/details/130860088
BN