class_docstr: The Slurm Evaluator is a class designed to continuously monitor VISSL pretrainings
  and launch evaluations as checkpoints become available. The method takes a
  config dictionary consisting of the training checkpoint directory, an array of
  benchmarks, and information on how often to evaluate the trainings.
docstr: Create the /evaluations directory inside the training checkpoints dir.
  Upload json file to the parent evaluation directories, as well as
  to each child evaluation directories.
docstr_tok: ["Create","the","\/evaluations","directory","inside","the","training","checkpoints","dir",".","Upload","json","file","to","the","parent","evaluation","directories",",","as","well","as","to","each","child","evaluation","directories","."]
code: def save_evaluation_benchmarks(self):
      """
      Create the /evaluations directory inside the training checkpoints dir.
      Upload json file to the parent evaluation directories, as well as
      to each child evaluation directories.
      """
      # Upload all checkpoints evaluations to parent checkpoint directory.
      evaluation_dir = self.evaluation_dir()
      parent_metrics_file = os.path.join(
          evaluation_dir, "evaluation_metrics.json"
      )
  
      makedir(evaluation_dir)
  
      self._write_json_file(
          self.evaluation_results, parent_metrics_file
      )
  
      # Upload each checkpoint's evaluations to child directories.
      for checkpoint_str, benchmarks in self.evaluation_results.items():
          child_metrics_dir = os.path.join(
              evaluation_dir, checkpoint_str
          )
          child_metrics_file = os.path.join(
              child_metrics_dir, "evaluation_metrics.json"
          )
  
          makedir(child_metrics_dir)
  
          self._write_json_file(benchmarks, child_metrics_file)
  
      logging.info("Saved benchmarks json file.")
  
imports: import collections
  import json
  import logging
  import os
  import time
  from datetime import datetime
  from pathlib import Path
  from typing import List
  import submitit
  from iopath.common.file_io import g_pathmgr
  from vissl.config.attr_dict import AttrDict
  from vissl.utils.distributed_launcher import launch_distributed_on_slurm
  from vissl.utils.hydra_config import compose_hydra_configuration, convert_to_attrdict
  from vissl.utils.io import load_file, makedir
  from vissl.utils.misc import flatten_dict, retry
label_desc: Use image node_id 4 for calling the BenchmarkSuiteScheduler obj's underlying member method code with example usage: obj.save_evaluation_benchmarks() without return types