code: def __init__(self, tracking_uri=None, log_artifacts: bool = True):
      self.logged_steps = set()
  
      if tracking_uri:
          mlflow.set_tracking_uri(tracking_uri)
      self.tracking_uri = mlflow.get_tracking_uri()
  
      active_run = mlflow.active_run()
      if active_run is not None:
          # Use experiment already set in the current environment
          self.run = active_run
          self.experiment_id = self.run.info.experiment_id
          self.experiment_name = mlflow.get_experiment(
              self.experiment_id
          ).name
          self.external_run = True
      else:
          # Will create an experiment at training time
          self.run = None
          self.experiment_id = None
          self.experiment_name = None
          self.external_run = False
  
      self.run_ended = False
      self.training_set_metadata = None
      self.config = None
      self.save_in_background = True
      self.save_fn = None
      self.save_thread = None
      self.log_artifacts = log_artifacts
  
imports: import logging
  import os
  import queue
  import threading
  from ludwig.api_annotations import DeveloperAPI, PublicAPI
  from ludwig.callbacks import Callback
  from ludwig.constants import TRAINER
  from ludwig.globals import MODEL_HYPERPARAMETERS_FILE_NAME, TRAIN_SET_METADATA_FILE_NAME
  from ludwig.types import TrainingSetMetadataDict
  from ludwig.utils.data_utils import chunk_dict, flatten_dict, save_json, to_json_dict
  from ludwig.utils.package_utils import LazyLoader
label_desc: Use image node_id 1 to create a new MlflowCallback object from inherited base classes: Callback with example: obj = MlflowCallback(tracking_uri, log_artifacts)