class_docstr: Class that defines the methods necessary to hook into process.
class_docstr_tok: ["Class","that","defines","the","methods","necessary","to","hook","into","process","."]
code: def aim_track(self, progress_tracker):
      logger.info(
          f"aim.aim_track() called for epoch {progress_tracker.epoch}, step: {progress_tracker.steps}"
      )
  
      if self.aim_run:
          for key, value in progress_tracker.log_metrics().items():
              if "metrics" in key and "best" not in key:
                  (
                      metrics_dict_name,
                      feature_name,
                      metric_name,
                  ) = key.split(".")
  
                  self.aim_run.track(
                      value,
                      name=metric_name,
                      context={metrics_dict_name: feature_name},
                      epoch=progress_tracker.epoch,
                      step=progress_tracker.steps,
                  )
  
file_path: ludwig/ludwig/contribs/aim.py
imports: import json
  import logging
  from ludwig.api_annotations import PublicAPI
  from ludwig.callbacks import Callback
  from ludwig.utils.data_utils import NumpyEncoder
  from ludwig.utils.package_utils import LazyLoader
label_desc: Use image node_id 3 for calling the AimCallback obj's underlying member method code with example usage: obj.aim_track(progress_tracker) without return types