class_docstr: A plugin that wraps all batch normalization layers of a model with synchronization logic for multiprocessing.
  
  This plugin has no effect in single-device operation.
docstr: Convert the wrapped batchnorm layers back to regular batchnorm layers.
  
  Args:
      model: Reference to the current LightningModule
  
  Return:
      LightningModule with regular batchnorm layers that will no longer sync across processes.
docstr_tok: ["Convert","the","wrapped","batchnorm","layers","back","to","regular","batchnorm","layers",".","Args",":","model",":","Reference","to","the","current","LightningModule","Return",":","LightningModule","with","regular","batchnorm","layers","that","will","no","longer","sync","across","processes","."]
code: def revert(self, model: Module) -> Module:
      """Convert the wrapped batchnorm layers back to regular batchnorm layers.
  
      Args:
          model: Reference to the current LightningModule
  
      Return:
          LightningModule with regular batchnorm layers that will no longer sync across processes.
  
      """
      # Code adapted from https://github.com/pytorch/pytorch/issues/41081#issuecomment-783961547
      # Original author: Kapil Yedidi (@kapily)
      converted_module = model
      if isinstance(model, torch.nn.modules.batchnorm.SyncBatchNorm):
          # Unfortunately, LayerSync does not store the original class - if it did
          # we could return the one that was originally created.
          converted_module = _BatchNormXd(
              model.num_features,
              model.eps,
              model.momentum,
              model.affine,
              model.track_running_stats,
          )
          if model.affine:
              with torch.no_grad():
                  converted_module.weight = model.weight
                  converted_module.bias = model.bias
          converted_module.running_mean = model.running_mean
          converted_module.running_var = model.running_var
          converted_module.num_batches_tracked = (
              model.num_batches_tracked
          )
          if hasattr(model, "qconfig"):
              converted_module.qconfig = model.qconfig
      for name, child in model.named_children():
          converted_module.add_module(name, self.revert(child))
      del model
      return converted_module
  
file_path: pytorch-lightning/src/lightning/pytorch/plugins/layer_sync.py
imports: from abc import ABC, abstractmethod
  import torch
  from torch import Tensor
  from torch.nn import Module
  from typing_extensions import override
label_desc: Use image node_id 2 for calling the TorchSyncBatchNorm obj's underlying member method code with example usage: obj.revert(model) and returns: converted_module