class_docstr: CLI describes a command line interface for interacting with Ludwig.
  
  Functions are described below.
code: def __init__(self):
      parser = argparse.ArgumentParser(
          description="ludwig cli runner",
          usage=f"""\n{get_logo("ludwig cli", LUDWIG_VERSION)}
  ludwig <command> [<args>]
  
  Available sub-commands:
     train                 Trains a model
     predict               Predicts using a pretrained model
     evaluate              Evaluate a pretrained model's performance
     forecast              Forecast the next n data points in a timeseries using a pretrained model
     experiment            Runs a full experiment training a model and evaluating it
     hyperopt              Perform hyperparameter optimization
     benchmark             Run and track experiments on a number of datasets and configs, and export experiment artifacts.
     serve                 Serves a pretrained model
     visualize             Visualizes experimental results
     collect_summary       Prints names of weights and layers activations to use with other collect commands
     collect_weights       Collects tensors containing a pretrained model weights
     collect_activations   Collects tensors for each datapoint using a pretrained model
     datasets              Downloads and lists Ludwig-ready datasets
     export_torchscript    Exports Ludwig models to Torchscript
     export_triton         Exports Ludwig models to Triton
     export_carton         Exports Ludwig models to Carton
     export_neuropod       Exports Ludwig models to Neuropod
     export_mlflow         Exports Ludwig models to MLflow
     preprocess            Preprocess data and saves it into HDF5 and JSON format
     synthesize_dataset    Creates synthetic data for testing purposes
     init_config           Initialize a user config from a dataset and targets
     render_config         Renders the fully populated config with all defaults set
     check_install         Runs a quick training run on synthetic data to verify installation status
     upload                Push trained model artifacts to a registry (e.g., Predibase, HuggingFace Hub)
  """,
      )
      parser.add_argument("command", help="Subcommand to run")
      # parse_args defaults to [1:] for args, but you need to
      # exclude the rest of the args too, or validation will fail
      args = parser.parse_args(sys.argv[1:2])
      if not hasattr(self, args.command):
          print("Unrecognized command")
          parser.print_help()
          exit(1)
      # use dispatch pattern to invoke method with same name
      getattr(self, args.command)()
  
imports: import argparse
  import sys
  import ludwig.contrib
  from ludwig.globals import LUDWIG_VERSION
  from ludwig.utils.print_utils import get_logo
label_desc: Use image node_id 1 to create a new CLI object  with example: obj = CLI()