in benchmarking/blackbox_repository/tabulated_benchmark.py [0:0]
def _run_job_and_collect_results(
self, trial_id: int,
config: Optional[dict] = None) -> (str, List[dict]):
"""
:param trial_id:
:return: (final status, list of all results reported)
"""
assert trial_id in self._trial_dict, \
f"Trial with trial_id = {trial_id} not registered with back-end"
if config is None:
config = self._trial_dict[trial_id].config
# Seed for query to blackbox. It is important to use the same
# seed for all queries for the same `trial_id`
seed = None
if self._seed is not None:
seed = self._seed
elif isinstance(self.blackbox, BlackboxTabular):
seed = self._seed_for_trial.get(trial_id)
if seed is None:
seed = np.random.randint(0, self.blackbox.num_seeds)
self._seed_for_trial[trial_id] = seed
# Fetch all results for this trial from the table
all_results = self.config_objectives(config, seed=seed)
# Compute and append `elapsed_time_attr` if not provided
if self._time_this_resource_attr is not None:
cumulative_sum = 0
for result in all_results:
cumulative_sum += result[self._time_this_resource_attr]
result[self.elapsed_time_attr] = cumulative_sum
status = Status.completed
num_already_before = self._last_metric_seen_index[trial_id]
if num_already_before > 0:
assert num_already_before <= len(all_results), \
f"Found {len(all_results)} total results, but have already " + \
f"processed {num_already_before} before!"
results = all_results[num_already_before:]
# Correct `elapsed_time_attr` values
elapsed_time_offset = all_results[num_already_before - 1][
self.elapsed_time_attr]
for result in results:
result[self.elapsed_time_attr] -= elapsed_time_offset
else:
results = all_results
return status, results