code: def check_gbm_horovod_incompatibility(
      config: "ModelConfig",
  ) -> None:  # noqa: F821
      """Checks that GBM model type isn't being used with the horovod backend.
  
      TODO(Justin): This is fine for now because we don't validate on the backend, but can be removed in the future when
      backend is schema-fied (separate schemas for ECD and GBM).
      """
      if config.backend is None:
          return
      # TODO (jeffkinnison): Revert to object access when https://github.com/ludwig-ai/ludwig/pull/3127 lands
      if (
          config.model_type == MODEL_GBM
          and config.backend.get("type") == "horovod"
      ):
          raise ConfigValidationError(
              "Horovod backend does not support GBM models."
          )
  
imports: from abc import ABC, abstractmethod
  from re import findall
  from typing import Callable, TYPE_CHECKING
  from transformers import AutoConfig
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import AUDIO, BINARY, CATEGORY, IMAGE, IN_MEMORY, MIN_QUANTIZATION_BITS_FOR_MERGE_AND_UNLOAD, MODEL_ECD, MODEL_GBM, MODEL_LLM, NUMBER, SEQUENCE, SET, TEXT, TIMESERIES, VECTOR
  from ludwig.error import ConfigValidationError
  from ludwig.utils.metric_utils import get_feature_to_metric_names_map_from_feature_collection
  from ludwig.utils.misc_utils import merge_dict
label_desc: Use image node_id 6 for calling a global function with example usage: check_gbm_horovod_incompatibility(config) without return types