code: def main(config: DictConfig):
      # Remove config keys that start with '__'. These are meant to be used only in computing
      # other entries in the config.
      config = dictconfig_filter_key(
          config, lambda k: not k.startswith("__")
      )
  
      # Imports should be nested inside @hydra.main to optimize tab completion
      # Read more here: https://github.com/facebookresearch/hydra/issues/934
      from src.train import train
      from src.eval import evaluate
      from src.utils import utils
  
      # A couple of optional utilities:
      # - disabling python warnings
      # - forcing debug-friendly configuration
      # - verifying experiment name is set when running in experiment mode
      # You can safely get rid of this line if you don't want those
      utils.extras(config)
  
      # Pretty print config using Rich library
      if config.get("print_config"):
          utils.print_config(config, resolve=True)
  
      # Train model
      mode = config.get("mode", "train")
      if mode not in ["train", "eval"]:
          raise NotImplementedError(f"mode {mode} not supported")
      if mode == "train":
          if not config.get("fine_tune", False):
              return train(config)
      elif mode == "eval":
          return evaluate(config)
  
imports: from typing import Callable
  import dotenv
  import hydra
  from omegaconf import OmegaConf, DictConfig
  import torch.backends
label_desc: Use image node_id 2 for calling a global function with example usage: main(config) and returns: train, evaluate