code: def schedule_experiments(self, exp_paths):
      for exp_path in exp_paths:
          if exp_path in self.exp_paths:
              continue
          else:
              self.exp_paths.add(exp_path)
              with open(exp_path, "r") as fd:
                  exp = hjson.load(fd)
                  exp["exp_id"] = self.experiment_count
                  self.experiment_count += 1
  
                  result_dir = exp["result_dir"] = os.path.join(
                      self.results_dir, exp["name"]
                  )
                  if AUTOTUNING in exp["ds_config"]:
                      metric_file = os.path.join(
                          result_dir, "metrics.json"
                      )
                      exp["ds_config"][AUTOTUNING][
                          AUTOTUNING_METRIC_PATH
                      ] = metric_file
                  stderr_file = os.path.join(result_dir, "stderr.log")
                  model_info_file = os.path.join(
                      result_dir, "model_info.json"
                  )
                  metric_file = os.path.join(result_dir, "metrics.json")
  
                  # skip existing experiments (except for the ones that were interrupted)
                  if os.path.exists(result_dir) and os.path.exists(
                      stderr_file
                  ):
                      if not was_interruptted(stderr_file):
                          err = search_error(stderr_file)
                          exp_id = exp["exp_id"]
                          self.finished_experiments[exp_id] = (exp, err)
                          if (
                              err
                              or os.path.exists(metric_file)
                              or os.path.exists(model_info_file)
                          ):
                              logger.info(
                                  f"Skipping exp {exp['name']} whose result already exists"
                              )
                              continue
  
                  self.experiment_queue.append(exp)
  
imports: import copy
  from numpy import BUFSIZE
  import json
  import subprocess
  import sys
  import threading
  import time
  import base64
  import os
  import hjson
  from tqdm import tqdm
  from ..utils import logger
  from .constants import AUTOTUNING, AUTOTUNING_METRIC_PATH
  from .utils import get_val_by_key, search_error, was_interruptted
  from deepspeed import comm
label_desc: Use image node_id 2 for calling the ResourceManager obj's underlying member method code with example usage: obj.schedule_experiments(exp_paths) without return types