If this is not going to work, what is the right way to use  convert_sync_batchnorm  for those models with  BatchNorm1d ?

I think the fix here is to ensure you always have a batch dimension. Potentially adding an .unsqueeze(0) to your input.

Then why doesn’t  SyncBatchNorm  explicitly check whether the module to wrap is  BatchNorm1d  or  BatchNorm2d  instead of the general  _BatchNorm  in  convert_sync_batchnorm ?

This would be a nice addition, we would be happy to merge a PR that adds this feature!