def _generate_trials(self, num_samples, unresolved_spec, output_path="", points_to_evaluate=None): """Generates Trial objects with the variant generation process. Uses a fixed point iteration to resolve variants. All trials should be able to be generated at once. See also: `ray.tune.suggest.variant_generator`. Yields: Trial object """ if "run" not in unresolved_spec: raise TuneError("Must specify `run` in {}".format(unresolved_spec)) points_to_evaluate = points_to_evaluate or [] while points_to_evaluate: config = points_to_evaluate.pop(0) for resolved_vars, spec in get_preset_variants( unresolved_spec, config): trial_id = self._uuid_prefix + ("%05d" % self._counter) experiment_tag = str(self._counter) self._counter += 1 yield create_trial_from_spec( spec, output_path, self._parser, evaluated_params=flatten_resolved_vars(resolved_vars), trial_id=trial_id, experiment_tag=experiment_tag) num_samples -= 1 if num_samples <= 0: return for _ in range(num_samples): for resolved_vars, spec in generate_variants(unresolved_spec): trial_id = self._uuid_prefix + ("%05d" % self._counter) experiment_tag = str(self._counter) if resolved_vars: experiment_tag += "_{}".format(format_vars(resolved_vars)) self._counter += 1 yield create_trial_from_spec( spec, output_path, self._parser, evaluated_params=flatten_resolved_vars(resolved_vars), trial_id=trial_id, experiment_tag=experiment_tag)
def _generate_resolved_specs(self, num_samples, unresolved_spec): """Needed for slurm_cluster.py """ for _ in range(num_samples): # Iterate over list of configs for unresolved_cfg in unresolved_spec["config"]: unresolved_spec_variant = deepcopy(unresolved_spec) unresolved_spec_variant["config"] = unresolved_cfg resolved_base_vars = CustomVariantGenerator._extract_resolved_base_vars(unresolved_cfg, unresolved_spec["config"]) print("Resolved base cfg vars", resolved_base_vars) for resolved_vars, spec in generate_variants(unresolved_spec_variant): resolved_vars.update(resolved_base_vars) print("Resolved vars", resolved_vars) trial_id = "%05d" % self._counter experiment_tag = str(self._counter) if resolved_vars: experiment_tag += "_{}".format( format_vars({k: v for k, v in resolved_vars.items() if "tag" in k})) self._counter += 1 yield { "spec": spec, "evaluated_params": flatten_resolved_vars(resolved_vars), "trial_id": trial_id, "experiment_tag": experiment_tag }
def _generate_trials(self, unresolved_spec, output_path=""): """Generates Trial objects with the variant generation process. Uses a fixed point iteration to resolve variants. All trials should be able to be generated at once. See also: `ray.tune.suggest.variant_generator`. Yields: Trial object """ if "run" not in unresolved_spec: raise TuneError("Must specify `run` in {}".format(unresolved_spec)) for _ in range(unresolved_spec.get("num_samples", 1)): for resolved_vars, spec in generate_variants(unresolved_spec): trial_id = "%05d" % self._counter experiment_tag = str(self._counter) if resolved_vars: experiment_tag += "_{}".format(format_vars(resolved_vars)) self._counter += 1 yield create_trial_from_spec( spec, output_path, self._parser, evaluated_params=flatten_resolved_vars(resolved_vars), trial_id=trial_id, experiment_tag=experiment_tag)
def create_trial(self, resolved_vars, spec): trial_id = self.uuid_prefix + ("%05d" % self.counter) experiment_tag = str(self.counter) # Always append resolved vars to experiment tag? if resolved_vars: experiment_tag += "_{}".format(format_vars(resolved_vars)) self.counter += 1 return create_trial_from_spec( spec, self.output_path, self.parser, evaluated_params=flatten_resolved_vars(resolved_vars), trial_id=trial_id, experiment_tag=experiment_tag)
def _generate_trials(self, num_samples, unresolved_spec, output_path=""): """Generates Trial objects with the variant generation process. Uses a fixed point iteration to resolve variants. All trials should be able to be generated at once. See also: `ray.tune.suggest.variant_generator`. Yields: Trial object """ if "run" not in unresolved_spec: raise TuneError("Must specify `run` in {}".format(unresolved_spec)) for _ in range(num_samples): # Iterate over list of configs for unresolved_cfg in unresolved_spec["config"]: unresolved_spec_variant = deepcopy(unresolved_spec) unresolved_spec_variant["config"] = unresolved_cfg resolved_base_vars = CustomVariantGenerator._extract_resolved_base_vars(unresolved_cfg, unresolved_spec["config"]) print("Resolved base cfg vars", resolved_base_vars) for resolved_vars, spec in generate_variants(unresolved_spec_variant): resolved_vars.update(resolved_base_vars) print("Resolved vars", resolved_vars) trial_id = "%05d" % self._counter experiment_tag = str(self._counter) if resolved_vars: experiment_tag += "_{}".format( format_vars({k: v for k, v in resolved_vars.items() if "tag" in k})) self._counter += 1 yield create_trial_from_spec( spec, output_path, self._parser, evaluated_params=flatten_resolved_vars(resolved_vars), trial_id=trial_id, experiment_tag=experiment_tag)