def make_epoch_step(self, runner: "IRunner") -> None:
        """Perform scheduler step and update epoch metrics

        Args:
            runner: current runner
        """
        if self._use_metric_reduction:
            reduced_metric = runner.epoch_metrics[self.loader_key][self.metric_key]
        else:
            reduced_metric = None
        lr_list, momentum_list = self._scheduler_step(
            scheduler=self.scheduler, reduced_metric=reduced_metric
        )
        # @TODO: remove trick to save pure epoch-based metrics, like lr/momentum
        self._update_lr_and_momentum_in_metrics_dict(
            runner.epoch_metrics["_epoch_"], lr_list, momentum_list
        )
Perform scheduler step and update epoch metrics

        Args:
            runner: current runner
        
catalyst/callbacks/scheduler.py