code: def build(self, data: InputData) -> BaseTuner:
      if len(self.metric) > 1:
          if self.tuner_class is OptunaTuner:
              self.additional_params.update(
                  {"objectives_number": len(self.metric)}
              )
          else:
              raise ValueError(
                  "Multi objective tuning applicable only for OptunaTuner."
              )
      objective = MetricsObjective(
          self.metric, is_multi_objective=len(self.metric) > 1
      )
      data_splitter = DataSourceSplitter(
          self.cv_folds, validation_blocks=self.validation_blocks
      )
      data_producer = data_splitter.build(data)
      objective_evaluate = PipelineObjectiveEvaluate(
          objective,
          data_producer,
          time_constraint=self.eval_time_constraint,
          eval_n_jobs=self.n_jobs,  # because tuners are not parallelized
          validation_blocks=data_splitter.validation_blocks,
      )
      tuner = self.tuner_class(
          objective_evaluate=objective_evaluate,
          adapter=self.adapter,
          iterations=self.iterations,
          early_stopping_rounds=self.early_stopping_rounds,
          timeout=self.timeout,
          search_space=self.search_space,
          n_jobs=self.n_jobs,
          **self.additional_params,
      )
      return tuner
  
imports: from datetime import timedelta
  from typing import Iterable, Sequence, Type, Union
  from golem.core.tuning.optuna_tuner import OptunaTuner
  from golem.core.tuning.simultaneous import SimultaneousTuner
  from golem.core.tuning.tuner_interface import BaseTuner
  from golem.utilities.data_structures import ensure_wrapped_in_sequence
  from fedot.core.constants import DEFAULT_TUNING_ITERATIONS_NUMBER
  from fedot.core.data.data import InputData
  from fedot.core.optimisers.objective import PipelineObjectiveEvaluate
  from fedot.core.optimisers.objective.data_source_splitter import DataSourceSplitter
  from fedot.core.optimisers.objective.metrics_objective import MetricsObjective
  from fedot.core.pipelines.adapters import PipelineAdapter
  from fedot.core.pipelines.pipeline_composer_requirements import PipelineComposerRequirements
  from fedot.core.pipelines.tuning.search_space import PipelineSearchSpace
  from fedot.core.repository.metrics_repository import MetricIDType, MetricsEnum
  from fedot.core.repository.tasks import Task
  from fedot.utilities.define_metric_by_task import MetricByTask
label_desc: Use image node_id 15 for calling the TunerBuilder obj's underlying member method code with example usage: obj.build(data) and returns: tuner