code: def setup(self, args=None, state=None, model=None):
      if state and not state.is_world_process_zero:
          return
  
      if not self._run:
          if self._run_hash:
              self._run = Run(
                  self._run_hash,
                  repo=self._repo_path,
                  system_tracking_interval=self._system_tracking_interval,
                  capture_terminal_logs=self._capture_terminal_logs,
              )
          else:
              self._run = Run(
                  repo=self._repo_path,
                  experiment=self._experiment_name,
                  system_tracking_interval=self._system_tracking_interval,
                  log_system_params=self._log_system_params,
                  capture_terminal_logs=self._capture_terminal_logs,
              )
              self._run_hash = self._run.hash
  
      if args:
          combined_dict = {**args.to_sanitized_dict()}
          for key, value in combined_dict.items():
              self._run.set(("hparams", key), value, strict=False)
      if model:
          self._run.set(
              "model",
              {
                  **vars(model.config),
                  "num_labels": getattr(model, "num_labels", None),
              },
              strict=False,
          )
  
file_path: aim/aim/sdk/adapters/hugging_face.py
imports: from logging import getLogger
  from typing import Optional, List, Dict
  from difflib import SequenceMatcher
  from collections import defaultdict
  from aim.ext.resource.configs import DEFAULT_SYSTEM_TRACKING_INT
  from aim.sdk.num_utils import is_number
  from aim.sdk.run import Run
label_desc: Use image node_id 3 for calling the AimCallback obj's underlying member method code with example usage: obj.setup(args, state, model) without return types