Ejemplo n.º 1
0
    def reduce_configs(self):
        """Reduce the experiments to restart."""
        experiment_ids = self.get_reduced_configs()
        experiments = self.experiment_group.experiments.filter(
            id__in=experiment_ids)
        self.create_iteration(experiment_ids=experiment_ids)
        iteration_config = self.experiment_group.iteration_config
        params_config = self.experiment_group.params_config
        n_resources = self.experiment_group.search_manager.get_resources_for_iteration(
            iteration=iteration_config.iteration)
        resource_value = self.experiment_group.search_manager.get_n_resources(
            n_resources=n_resources,
            bracket_iteration=iteration_config.bracket_iteration)
        resource_name = params_config.hyperband.resource.name
        resource_value = params_config.hyperband.resource.cast_value(
            resource_value)

        # Check if we need to resume or restart the experiments
        for experiment in experiments:
            declarations = experiment.declarations
            declarations[resource_name] = resource_value
            declarations_spec = {'declarations': declarations}
            specification = ExperimentSpecification(values=[
                experiment.specification.parsed_data, declarations_spec
            ])
            status_message = 'Hyperband iteration: {}, bracket iteration: {}'.format(
                iteration_config.iteration, iteration_config.bracket_iteration)

            if params_config.hyperband.resume:
                experiment.resume(declarations=declarations,
                                  config=specification.parsed_data,
                                  message=status_message)
            else:
                experiment.restart(experiment_group=self.experiment_group,
                                   declarations=declarations,
                                   config=specification.parsed_data)
Ejemplo n.º 2
0
 def specification(self):
     return ExperimentSpecification(
         values=self.config) if self.config else None