@staticmethod
def _fit_one_forecaster_compute(task, **func_kwargs):
    """
        A function that is used to fit a model. This function can be passed
        as a callable to any of the compute backends that support `ComputeJobType.ForecasterUnion`
        job types.

        param task: Tuple of forecaster_name and its corresponding estimator.                    
        type task: tuple.
        param func_args: Keyword fit parameters passed on to the forecaster fit methods.
                        These arguments should have the form,
                        ```<Forecaster name>[<Parameter name>]=<Parameter value>```
        type func_args: dict.

        :return: Tuple containing the estimator name and its fitted Model
        :rtype: tuple
        """
    if task is None:
        raise Exception('task argument is invalid or not a tuple')
    if func_kwargs is None:
        raise Exception('func_args argument is invalid')
    _X = func_kwargs.pop('X')
    _y = func_kwargs.pop('y')
    _fit_param_dict = func_kwargs.pop('forecaster_fit_params')
    _forecaster_name = task[0]
    _forecaster = task[1]
    return _forecaster_name, _forecaster.fit(_X, _y, **_fit_param_dict[
        _forecaster_name])
