class_docstr: This class defines the interface for any surrogate model which attempts to
  predict performance metrics from model configurations.
  
  Subclasses may decide to only predict some performance metrics.
class_docstr_tok: ["This","class","defines","the","interface","for","any","surrogate","model","which","attempts","to","predict","performance","metrics","from","model","configurations",".","Subclasses","may","decide","to","only","predict","some","performance","metrics","."]
docstr: The number of CPUs required for fitting the surrogate.
docstr_tok: ["The","number","of","CPUs","required","for","fitting","the","surrogate","."]
code: def required_cpus(self) -> int:
      """
      The number of CPUs required for fitting the surrogate.
      """
      return 1
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from typing import Generic, List, Literal, Optional, TypeVar
  import numpy
  import numpy.typing
  from sklearn.preprocessing import LabelEncoder, QuantileTransformer, StandardScaler
  from tsbench.config import Config, EnsembleConfig, ModelConfig
  from tsbench.evaluations.metrics import Performance
  from tsbench.evaluations.tracking import Tracker
  from .transformers import PerformanceTransformer
label_desc: Use image node_id 2 for calling the Surrogate obj's underlying member method code with example usage: obj.required_cpus() and returns: int