class_docstr: Synchronize model buffers such as running_mean and running_var in BN at
  the end of each epoch.
  
  Args:
      distributed (bool): Whether distributed training is used. It is
        effective only for distributed training. Defaults to True.
class_docstr_tok: ["Synchronize","model","buffers","such","as","running_mean","and","running_var","in","BN","at","the","end","of","each","epoch",".","Args",":","distributed","(","bool",")",":","Whether","distributed","training","is","used",".","It","is","effective","only","for","distributed","training",".","Defaults","to","True","."]
docstr: All-reduce model buffers at the end of each epoch.
docstr_tok: ["All-reduce","model","buffers","at","the","end","of","each","epoch","."]
code: def after_epoch(self, runner):
      """All-reduce model buffers at the end of each epoch."""
      if self.distributed:
          allreduce_params(runner.model.buffers())
  
imports: from ..dist_utils import allreduce_params
  from .hook import HOOKS, Hook
label_desc: Use image node_id 2 for calling the SyncBuffersHook obj's underlying member method code with example usage: obj.after_epoch(runner) without return types