def METHOD_NAME(self, max_iter=500, tolerance=1e-5) -> Tensor:
    """
    Estimates average hessian trace for each parameter
    :param max_iter: maximum number of iterations for Hutchinson algorithm
    :param tolerance: - minimum relative tolerance for stopping the algorithm.
    It's calculated  between mean average trace from previous iteration and current one.
    :return: Tensor with average hessian trace per parameter
    """
    avg_total_trace = 0.0
    avg_traces_per_iter = []  # type: List[Tensor]
    mean_avg_traces_per_param = None
    for i in range(max_iter):
        avg_traces_per_iter.append(self._calc_avg_traces_per_param())
        mean_avg_traces_per_param = self._get_mean(avg_traces_per_iter)
        mean_avg_total_trace = torch.sum(mean_avg_traces_per_param)
        diff_avg = abs(mean_avg_total_trace - avg_total_trace) / (avg_total_trace + self._diff_eps)
        if diff_avg < tolerance:
            return mean_avg_traces_per_param
        avg_total_trace = mean_avg_total_trace
        nncf_logger.debug(f"{i}# difference_avg={diff_avg} avg_trace={avg_total_trace}")
    return mean_avg_traces_per_param