code: def sub_new_params(config: dict, new_param_vals: dict):
      new_config = copy.deepcopy(config)
      for param, val in new_param_vals.items():
          config_section = param.split(".")[0]
          param_name = param.split(".")[1]
          new_config[config_section][param_name] = val
      return new_config
  
imports: import copy
  import logging
  import math
  from collections import OrderedDict
  from typing import List
  import psutil
  from ludwig.api import LudwigModel
  from ludwig.backend import initialize_backend
  from ludwig.constants import AUTO, AUTOML_DEFAULT_TEXT_ENCODER, AUTOML_LARGE_TEXT_DATASET, AUTOML_MAX_ROWS_PER_CHECKPOINT, AUTOML_SMALLER_TEXT_ENCODER, AUTOML_SMALLER_TEXT_LENGTH, AUTOML_TEXT_ENCODER_MAX_TOKEN_LEN, HYPEROPT, MINIMUM_BATCH_SIZE, PREPROCESSING, SPACE, TEXT, TRAINER
  from ludwig.data.preprocessing import preprocess_for_training
  from ludwig.features.feature_registries import update_config_with_metadata
  from ludwig.schema.model_config import ModelConfig
  from ludwig.utils.automl.utils import get_model_type
  from ludwig.utils.torch_utils import initialize_pytorch
label_desc: Use image node_id 6 for calling a global function with example usage: sub_new_params(config, new_param_vals) and returns: new_config