def after_train_epoch(self, runner: Runner) -> None:
        """Calculate prcise BN and broadcast BN stats across GPUs.

        Args:
            runner (obj:`Runner`): The runner of the training process.
        """
        # if use `EpochBasedTrainLoop``, do perform precise every
        # `self.interval` epochs.
        if isinstance(runner.train_loop,
                      EpochBasedTrainLoop) and self.every_n_epochs(
                          runner, self.interval):
            self._perform_precise_bn(runner)
Calculate prcise BN and broadcast BN stats across GPUs.

        Args:
            runner (obj:`Runner`): The runner of the training process.
        
mmpretrain/engine/hooks/precise_bn_hook.py