def _test_repeater(self, num_samples, repeat): class TestSuggestion(Searcher): index = 0 def suggest(self, trial_id): self.index += 1 return {"test_variable": 5 + self.index} def on_trial_complete(self, *args, **kwargs): return searcher = TestSuggestion(metric="episode_reward_mean") repeat_searcher = Repeater(searcher, repeat=repeat, set_index=False) alg = SearchGenerator(repeat_searcher) experiment_spec = { "run": "__fake", "num_samples": num_samples, "stop": { "training_iteration": 1 } } alg.add_configurations({"test": experiment_spec}) runner = TrialRunner(search_alg=alg) while not runner.is_finished(): runner.step() return runner.get_trials()
def create_searcher(): class TestSuggestion(Searcher): def __init__(self, index): self.index = index self.returned_result = [] super().__init__(metric="episode_reward_mean", mode="max") def suggest(self, trial_id): self.index += 1 return {"test_variable": self.index} def on_trial_complete(self, trial_id, result=None, **kwargs): self.returned_result.append(result) def save(self, checkpoint_path): with open(checkpoint_path, "wb") as f: pickle.dump(self.__dict__, f) def restore(self, checkpoint_path): with open(checkpoint_path, "rb") as f: self.__dict__.update(pickle.load(f)) searcher = TestSuggestion(0) searcher = ConcurrencyLimiter(searcher, max_concurrent=2) searcher = Repeater(searcher, repeat=3, set_index=False) search_alg = SearchGenerator(searcher) experiment_spec = { "run": "__fake", "num_samples": 20, "stop": {"training_iteration": 2}, } experiments = [Experiment.from_json("test", experiment_spec)] search_alg.add_configurations(experiments) return search_alg
def testNestedSuggestion(self): class TestSuggestion(Searcher): def suggest(self, trial_id): return {"a": {"b": {"c": {"d": 4, "e": 5}}}} searcher = TestSuggestion() alg = SearchGenerator(searcher) alg.add_configurations({"test": {"run": "__fake"}}) trial = alg.next_trial() self.assertTrue("e=5" in trial.experiment_tag) self.assertTrue("d=4" in trial.experiment_tag)