code: def get_surrogate_generation_step() -> GenerationStep:
      return GenerationStep(
          model=Models.BOTORCH_MODULAR,
          num_trials=-1,
          max_parallelism=1,
          model_kwargs={
              "surrogate": Surrogate(
                  botorch_model_class=SaasFullyBayesianSingleTaskGP,
                  input_transform_classes=[Normalize],
                  input_transform_options={
                      "Normalize": {
                          "d": 3,
                          "indices": None,
                          "transform_on_train": True,
                          "transform_on_eval": True,
                          "transform_on_fantasize": True,
                          "reverse": False,
                          "min_range": 1e-08,
                          "learn_bounds": False,
                      }
                  },
                  outcome_transform_classes=[Standardize],
                  outcome_transform_options={
                      "Standardize": {
                          "m": 1,
                          "outputs": None,
                          "min_stdv": 1e-8,
                      }
                  },
              ),
              "botorch_acqf_class": qNoisyExpectedImprovement,
          },
      )
  
imports: from logging import Logger
  from typing import Any, Dict, List, Optional, Type
  import numpy
  from ax.core.base_trial import TrialStatus
  from ax.core.experiment import Experiment
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.parameter import FixedParameter, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.base import ModelBridge
  from ax.modelbridge.dispatch_utils import choose_generation_strategy
  from ax.modelbridge.factory import get_sobol
  from ax.modelbridge.generation_node import GenerationNode
  from ax.modelbridge.generation_strategy import GenerationStep, GenerationStrategy
  from ax.modelbridge.model_spec import ModelSpec
  from ax.modelbridge.registry import Models
  from ax.modelbridge.transforms.base import Transform
  from ax.modelbridge.transforms.int_to_float import IntToFloat
  from ax.modelbridge.transition_criterion import MaxGenerationParallelism, MaxTrials, MinimumPreferenceOccurances, MinTrials
  from ax.models.torch.botorch_modular.surrogate import Surrogate
  from ax.utils.common.logger import get_logger
  from ax.utils.testing.core_stubs import get_experiment, get_search_space, get_search_space_for_value
  from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement
  from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP
  from botorch.models.transforms.input import InputTransform, Normalize
  from botorch.models.transforms.outcome import OutcomeTransform, Standardize
label_desc: Use image node_id 16 for calling a global function with example usage: get_surrogate_generation_step() and returns: GenerationStep