Following the discussion in #4597, notify the user on the default behavior of sync_batchnorm when it is not explicitly passed to pl.Trainer by the user in multi-processing backends, e.g. DDP.
Make the transition from training on single GPU/single process backend, e.g. DP, to multi-processing multi-GPU seamless
Users may be unfamiliar/unaware of the default behavior of batchnorm layers when using multi-processing backends and may expect batchnorm layers to be synced and updated during backpropagation.
SyncBatchNorm is mostly beneficial when batch_size is small (only few samples per GPU), however, the frequent gather operations may slow down training.
Alternatives:
Set to True by default and notify user: 'Running in
Set to False by default and notify user: 'Running in
@PyTorchLightning/core-contributors any thoughts here?
I prefer the current False default, but I imagine a message reminding you to turn it on when it's not your intention might get annoying...
@Borda I agree with the fact that the default syncbn behavior should be False and a warning to the users could be annoying. Setting syncbn to True is not required in majority of the cases.