code: def get_schema(model_type: str = MODEL_ECD):
      # Force populate combiner registry:
      import ludwig.combiners.combiners  # noqa: F401
      from ludwig.schema.model_types.base import (
          model_type_schema_registry,
      )
  
      cls = model_type_schema_registry[model_type]
      props = unload_jsonschema_from_marshmallow_class(cls)[
          "properties"
      ]
  
      # TODO: Replace with more robust required logic later.
      required = ["input_features", "output_features"]
      if model_type == MODEL_LLM:
          required += [BASE_MODEL]
  
      return {
          "type": "object",
          "properties": props,
          "title": "model_options",
          "description": "Settings for Ludwig configuration",
          "required": required,
          "additionalProperties": True,  # TODO: Set to false after 0.8 releases.
      }
  
file_path: ludwig/ludwig/config_validation/validation.py
imports: from functools import lru_cache
  from threading import Lock
  import jsonschema.exceptions
  from jsonschema import Draft7Validator, validate
  from jsonschema.validators import extend
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import BASE_MODEL, MODEL_ECD, MODEL_LLM, MODEL_TYPE
  from ludwig.error import ConfigValidationError
  from ludwig.schema.combiners.utils import get_combiner_jsonschema
  from ludwig.schema.features.utils import get_input_feature_jsonschema, get_output_feature_jsonschema
  from ludwig.schema.hyperopt import get_hyperopt_jsonschema
  from ludwig.schema.trainer import get_model_type_jsonschema, get_trainer_jsonschema
  from ludwig.schema.utils import unload_jsonschema_from_marshmallow_class
label_desc: Use image node_id 1 for calling a global function with example usage: get_schema(model_type) and returns: dict