code: def start(self, run: "Run"):
      if run.distributed_rank == run.distributed_main_rank:
          self.app_tracker.add_handler(
              AppUrlResponseHandler(
                  self.open_browser, "Monitor experiment at "
              )
          )
  
      with self.lock:
          from labml.internal.computer.configs import computer_singleton
  
          computer_uuid = computer_singleton().uuid
  
          self.data.update(
              dict(
                  name=run.name,
                  comment=run.comment,
                  computer=computer_uuid,
                  python_file=run.python_file,
                  repo_remotes=run.repo_remotes,
                  commit=run.commit,
                  commit_message=run.commit_message,
                  is_dirty=run.is_dirty,
                  start_step=run.start_step,
                  load_run=run.load_run,
                  tags=run.tags,
                  notes=run.notes,
                  pid=run.pid,
              )
          )
  
      self.app_tracker.has_data(self)
  
      from labml.internal.app.logs import APP_CONSOLE_LOGS
  
      APP_CONSOLE_LOGS.set_app_tracker(
          self.app_tracker, frequency=LOGS_FREQUENCY
      )
  
imports: import threading
  import time
  from typing import Dict, Optional, TYPE_CHECKING
  from .None import AppTracker, Packet, AppTrackDataSource, AppTrackResponseHandler
  from .dynamic import DynamicUpdateHandler
  from .url import AppUrlResponseHandler
  from ..configs.processor import ConfigsSaver
label_desc: Use image node_id 5 for calling the AppExperiment obj's underlying member method code with example usage: obj.start(run) without return types