code: def _normalize_params(
      mod: IRModule,
      target: Union[Target, str],
      params: Optional[Dict[str, NDArray]],
      pass_config: Mapping[str, Any],
      executor: Optional["relay.backend.Executor"],
      runtime: Optional["relay.backend.Runtime"],
  ) -> Tuple[
      IRModule,
      Target,
      Dict[str, NDArray],
      Dict[str, Any],
      Optional["relay.backend.Executor"],
      Optional["relay.backend.Runtime"],
  ]:
      from tvm import relay  # pylint: disable=import-outside-toplevel
  
      if isinstance(mod, relay.Function):
          mod = IRModule.from_expr(mod)
      if not isinstance(target, Target):
          target = Target(target)
      if params is None:
          params = {}
      relay_params = {}
      for name, param in params.items():
          if isinstance(param, np.ndarray):
              param = nd.array(param)
          relay_params[name] = param
  
      if executor is None:
          executor = relay.backend.Executor("graph")
  
      if runtime is None:
          runtime = relay.backend.Runtime("cpp")
  
      if mod.get_attr("executor") is None:
          mod = mod.with_attr("executor", executor)
      else:
          executor = mod.get_attr("executor")
  
      pass_config = dict(pass_config)
      return mod, target, relay_params, pass_config, executor, runtime
  
imports: from contextlib import contextmanager
  from types import MappingProxyType
  from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, Sequence, Set, Tuple, Union
  from typing_extensions import Literal
  import numpy
  from tvm import nd
  from tvm._ffi import get_global_func
  from tvm.ir import IRModule, transform
  from tvm.ir.instrument import PassInstrument
  from tvm.runtime import NDArray
  from tvm.target import Target
  from .builder import Builder
  from .cost_model import CostModel
  from .database import Database
  from .extracted_task import ExtractedTask
  from .logging import get_loggers_from_work_dir
  from .measure_callback import MeasureCallback
  from .profiler import Profiler
  from .runner import Runner
  from .search_strategy import SearchStrategy
  from .space_generator import SpaceGenerator
  from .task_scheduler import TaskScheduler
  from .tune import tune_tasks
  from .tune_context import TuneContext
  from .utils import fork_seed
label_desc: Use image node_id 2 for calling a global function with example usage: _normalize_params(mod, target, params, pass_config, executor, runtime) and returns: mod,  target,  relay_params,  pass_config,  executor,  runtime