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.
code: def _update_benchmark_state(self, benchmark, job):
      # Job state has changed, record it.
      benchmark["slurm_state"] = job.state
  
      if job.done():
          # Upload metrics files.
          benchmark["metrics"] = self._get_benchmark_metrics(benchmark)
  
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 17 for calling the BenchmarkSuiteScheduler obj's underlying member method code with example usage: obj._update_benchmark_state(benchmark, job) without return types