code: def test_hyperopt_old_config(csv_filename, tmpdir, ray_cluster_7cpu):
      old_config = {
          "ludwig_version": "0.4",
          INPUT_FEATURES: [
              {
                  "name": "cat1",
                  TYPE: "category",
                  "encoder": {"vocab_size": 2},
              },
              {"name": "num1", TYPE: "number"},
          ],
          OUTPUT_FEATURES: [
              {"name": "bin1", TYPE: "binary"},
          ],
          TRAINER: {"epochs": 2, BATCH_SIZE: 128},
          HYPEROPT: {
              EXECUTOR: {
                  TYPE: "ray",
                  "time_budget_s": 200,
                  "cpu_resources_per_trial": 1,
              },
              "sampler": {
                  TYPE: "ray",
                  "scheduler": {
                      TYPE: "async_hyperband",
                      "max_t": 200,
                      "time_attr": "time_total_s",
                      "grace_period": 72,
                      "reduction_factor": 5,
                  },
                  "search_alg": {
                      TYPE: HYPEROPT,
                      "random_state_seed": 42,
                  },
                  "num_samples": 2,
              },
              "parameters": {
                  "trainer.batch_size": {
                      "space": "choice",
                      "categories": [64, 128, 256],
                  },
                  "trainer.learning_rate": {
                      "space": "loguniform",
                      "lower": 0.001,
                      "upper": 0.1,
                  },
              },
          },
      }
  
      input_features = old_config[INPUT_FEATURES]
      output_features = old_config[OUTPUT_FEATURES]
      rel_path = generate_data(
          input_features, output_features, csv_filename
      )
  
      hyperopt(
          old_config,
          dataset=rel_path,
          output_directory=tmpdir,
          experiment_name="test_hyperopt",
      )
  
imports: import json
  import os
  import os.path
  import uuid
  from typing import Dict, Tuple
  import pytest
  from ludwig.backend import initialize_backend
  from ludwig.constants import ACCURACY, AUTO, BATCH_SIZE, CATEGORY, COMBINER, EXECUTOR, HYPEROPT, INPUT_FEATURES, MAX_CONCURRENT_TRIALS, MODEL_ECD, MODEL_GBM, MODEL_TYPE, NAME, OUTPUT_FEATURES, RAY, TEST, TEXT, TRAINER, TRAINING, TYPE, VALIDATION
  from ludwig.globals import HYPEROPT_STATISTICS_FILE_NAME
  from ludwig.hyperopt.results import HyperoptResults
  from ludwig.hyperopt.run import hyperopt
  from ludwig.hyperopt.utils import update_hyperopt_params_with_defaults
  from ludwig.schema.model_config import ModelConfig
  from ludwig.utils import fs_utils
  from ludwig.utils.data_utils import load_json, use_credentials
  from tests.integration_tests.utils import category_feature, generate_data, minio_test_creds, private_param, remote_tmpdir, text_feature
  from ludwig.hyperopt.execution import get_build_hyperopt_executor, RayTuneExecutor
label_desc: Use image node_id 10 for calling a global function with example usage: test_hyperopt_old_config(csv_filename, tmpdir, ray_cluster_7cpu) without return types