def METHOD_NAME(self, arch, task, metric):
    """
    get the best epoch status with respect to a certain metric (equiv. to early stopping at best validation metric)
    Args:
        arch: architecture string
        task: task name
        metric: metric name specified in the metrics_dict
    Returns: a status dict of the best epoch
    """
    assert metric in self.metrics_dict[task], \
        f"metric {metric} is not available for task {task}! Must in {self.metrics_dict[task]}!"
    metric_list = self.get_single_metric(arch, task, metric, mode="list")
    best_epoch = max(range(len(metric_list)), key=lambda i: metric_list[i])  # return argmax
    best_ep_status = self.get_epoch_status(arch, task, epoch=best_epoch)
    return best_ep_status