code: def epoch_end(self, estimator, *args, **kwargs):
      logs = {}
      for metric in estimator.train_metrics:
          metric_name, metric_val = metric.get()
          logs[metric_name] = metric_val
      for metric in estimator.val_metrics:
          metric_name, metric_val = metric.get()
          logs[metric_name] = metric_val
      self._logger.record_metrics(logs, self.current_epoch)
      self.current_epoch += 1
  
file_path: mlflow/mlflow/gluon/_autolog.py
imports: from mxnet.gluon.contrib.estimator import EpochEnd, TrainBegin, TrainEnd
  from mxnet.gluon.nn import HybridSequential
  import mlflow
  from mlflow.utils.autologging_utils import ExceptionSafeClass, get_autologging_config
label_desc: Use image node_id 2 for calling the __MLflowGluonCallback obj's underlying member method code with example usage: obj.epoch_end(estimator) without return types