def METHOD_NAME(self, df, args={}):
    """Makes forecasts with the NeuralForecast Handler.
    NeuralForecast is setup to predict for all groups, so it won't handle
    a dataframe that's been filtered to one group very well. Instead, we make
    the prediction for all groups then take care of the filtering after the
    forecasting. Prediction is nearly instant.
    """
    # Load model arguments
    model_args = self.model_storage.json_get("model_args")
    prediction_df = transform_to_nixtla_df(df, model_args)
    groups_to_keep = prediction_df["unique_id"].unique()
    neural = NeuralForecast.load(model_args["model_folder"])
    forecast_df = neural.METHOD_NAME()
    if model_args["hierarchy"]:
        training_df = dill.loads(self.model_storage.file_get("training_df"))
        hier_df = dill.loads(self.model_storage.file_get("hier_df"))
        hier_dict = dill.loads(self.model_storage.file_get("hier_dict"))
        reconciled_df = reconcile_forecasts(training_df, forecast_df, hier_df, hier_dict)
        results_df = reconciled_df[reconciled_df.index.isin(groups_to_keep)]
    else:
        results_df = forecast_df[forecast_df.index.isin(groups_to_keep)]
    return get_results_from_nixtla_df(results_df, model_args)