class_docstr: The Autogluon surrogate uses autogluon to fit one of many possible models
  on the performances of the models.
code: def _fit(
      self, X: List[Config[ModelConfig]], y: npt.NDArray[np.float32]
  ) -> None:
      X_numpy = self.config_transformer.fit_transform(X)
  
      # We need to train one predictor per output feature
      self.predictors = []
      for i in range(y.shape[1]):
          df = pd.DataFrame(
              np.concatenate([X_numpy, y[:, i : i + 1]], axis=-1)
          )
          predictor = TabularPredictor(
              df.shape[1] - 1,
              problem_type="regression",
              eval_metric="root_mean_squared_error",
          )
          predictor.fit(df, time_limit=self.time_limit, verbosity=0)
          self.predictors.append(predictor)
  
file_path: gluonts/src/gluonts/nursery/tsbench/src/tsbench/surrogate/autogluon.py
imports: from typing import List, Optional
  import numpy
  import numpy.typing
  import pandas
  from autogluon.tabular import TabularPredictor
  from tsbench.config import Config, ModelConfig
  from tsbench.evaluations.tracking import ModelTracker
  from ._base import DatasetFeaturesMixin, OutputNormalization, Surrogate
  from ._factory import register_surrogate
  from .transformers import ConfigTransformer
label_desc: Use image node_id 2 for calling the AutoGluonSurrogate obj's underlying member method code with example usage: obj._fit(X, y) without return types