Exemple #1
0
    def test_hyperband_iteration_config(self):
        config = {
            'iteration': 1,
            'bracket_iteration': 0,
            'experiment_ids': [1, 2, 3],
            'experiments_metrics': [[1, 0.5], [2, 0.8], [3, 0.8]],
        }

        assert HyperbandIterationConfig.from_dict(config).to_dict() == config
    def test_hyperband_iteration_config(self):
        config = {
            'iteration': 1,
            'bracket_iteration': 0,
            'experiment_ids': [1, 2, 3],
            'experiments_metrics': [[1, 0.5], [2, 0.8], [3, 0.8]],
        }

        assert HyperbandIterationConfig.from_dict(config).to_dict() == config
Exemple #3
0
    def create_iteration(self, num_suggestions=0):
        """Create an iteration for the experiment group."""
        from db.models.experiment_groups import ExperimentGroupIteration

        search_manager = self.experiment_group.search_manager
        iteration_config = self.experiment_group.iteration_config

        if iteration_config is None:
            iteration = 0
            bracket_iteration = 0
        else:
            should_reschedule = search_manager.should_reschedule(
                iteration=iteration_config.iteration,
                bracket_iteration=iteration_config.bracket_iteration)
            should_reduce_configs = search_manager.should_reduce_configs(
                iteration=iteration_config.iteration,
                bracket_iteration=iteration_config.bracket_iteration)
            if should_reschedule:
                iteration = iteration_config.iteration + 1
                bracket_iteration = 0
            elif should_reduce_configs:
                iteration = iteration_config.iteration
                bracket_iteration = iteration_config.bracket_iteration + 1
            else:
                raise ValueError(
                    'Hyperband create iteration failed for `{}`, '
                    'could not reschedule ot reduce configs'.format(
                        self.experiment_group.id))

        # Create a new iteration config
        iteration_config = HyperbandIterationConfig(
            iteration=iteration,
            num_suggestions=num_suggestions,
            bracket_iteration=bracket_iteration)
        iteration_config.experiment_ids = []
        return ExperimentGroupIteration.objects.create(
            experiment_group=self.experiment_group,
            data=iteration_config.to_dict())