Esempio n. 1
0
 def convert(search_space, vals):
     assignments = []
     for param in search_space.params:
         if param.type == INTEGER:
             assignments.append(Assignment(param.name, int(vals[param.name][0])))
         elif param.type == DOUBLE:
             assignments.append(Assignment(param.name, vals[param.name][0]))
         elif param.type == CATEGORICAL or param.type == DISCRETE:
             assignments.append(
                 Assignment(param.name, param.list[vals[param.name][0]]))
     return assignments
Esempio n. 2
0
 def convert(search_space, skopt_suggested):
     assignments = []
     for i in range(len(search_space.params)):
         param = search_space.params[i]
         if param.type == INTEGER:
             assignments.append(Assignment(param.name, skopt_suggested[i]))
         elif param.type == DOUBLE:
             assignments.append(Assignment(param.name, skopt_suggested[i]))
         elif param.type == CATEGORICAL or param.type == DISCRETE:
             assignments.append(Assignment(param.name, skopt_suggested[i]))
     return assignments
Esempio n. 3
0
 def convert(search_space, chocolate_params):
     assignments = []
     for param in search_space.params:
         key = BaseChocolateService.encode(param.name)
         if param.type == INTEGER:
             assignments.append(
                 Assignment(param.name, chocolate_params[key]))
         elif param.type == DOUBLE:
             assignments.append(
                 Assignment(param.name, chocolate_params[key]))
         elif param.type == CATEGORICAL or param.type == DISCRETE:
             assignments.append(
                 Assignment(param.name, param.list[chocolate_params[key]]))
     return assignments
Esempio n. 4
0
    def GetSuggestions(self, request, context):
        """
        Main function to provide suggestion.
        """
        algorithm_name, config = OptimizerConfiguration.convertAlgorithmSpec(
            request.experiment.spec.algorithm)
        if algorithm_name != "bayesianoptimization":
            raise Exception(
                "Failed to create the algorithm: {}".format(algorithm_name))

        if self.is_first_run:
            search_space = HyperParameterSearchSpace.convert(
                request.experiment)
            self.base_service = BaseSkoptService(
                base_estimator=config.base_estimator,
                n_initial_points=config.n_initial_points,
                acq_func=config.acq_func,
                acq_optimizer=config.acq_optimizer,
                random_state=config.random_state,
                search_space=search_space)
            self.is_first_run = False

        trials = Trial.convert(request.trials)
        new_trials = self.base_service.getSuggestions(trials,
                                                      request.request_number)
        return api_pb2.GetSuggestionsReply(
            parameter_assignments=Assignment.generate(new_trials))
Esempio n. 5
0
    def _ask(self, request_number):
        list_of_assignments = []
        for _ in range(request_number):
            optuna_trial = self.study.ask(fixed_distributions=self._get_optuna_search_space())

            assignments = [Assignment(k, v) for k, v in optuna_trial.params.items()]
            list_of_assignments.append(assignments)

            assignments_key = self._get_assignments_key(assignments)
            self.assignments_to_optuna_number[assignments_key].append(optuna_trial.number)

        return list_of_assignments
Esempio n. 6
0
    def GetSuggestions(self, request, context):
        """
        Main function to provide suggestion.
        """
        with self.lock:
            if self.study is None:
                self.search_space = HyperParameterSearchSpace.convert(request.experiment)
                self.study = self._create_study(request.experiment.spec.algorithm, self.search_space)

            trials = Trial.convert(request.trials)

            if len(trials) != 0:
                self._tell(trials)
            list_of_assignments = self._ask(request.request_number)

            return api_pb2.GetSuggestionsReply(
                parameter_assignments=Assignment.generate(list_of_assignments)
            )
Esempio n. 7
0
    def GetSuggestions(self, request, context):
        """
        Main function to provide suggestion.
        """

        if self.is_first_run:
            search_space = HyperParameterSearchSpace.convert(
                request.experiment)
            self.base_service = BaseChocolateService(
                algorithm_name=request.experiment.spec.algorithm.
                algorithm_name,
                search_space=search_space)
            self.is_first_run = False

        trials = Trial.convert(request.trials)
        new_assignments = self.base_service.getSuggestions(
            trials, request.request_number)
        return api_pb2.GetSuggestionsReply(
            parameter_assignments=Assignment.generate(new_assignments))
Esempio n. 8
0
    def GetSuggestions(self, request, context):
        """
        Main function to provide suggestion.
        """
        name, config = OptimizerConfiguration.convert_algorithm_spec(
            request.experiment.spec.algorithm)

        if self.is_first_run:
            search_space = HyperParameterSearchSpace.convert(
                request.experiment)
            self.base_service = BaseHyperoptService(algorithm_name=name,
                                                    algorithm_conf=config,
                                                    search_space=search_space)
            self.is_first_run = False

        trials = Trial.convert(request.trials)
        new_assignments = self.base_service.getSuggestions(
            trials, request.current_request_number)
        return api_pb2.GetSuggestionsReply(
            parameter_assignments=Assignment.generate(new_assignments))