empty search space (#295)

fix the error when an empty dictionary is passed to BlendSearch as the search space.
This commit is contained in:
Chi Wang 2021-11-20 20:05:28 -08:00 committed by GitHub
parent 49f9e9f86b
commit 00da79a90b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 155 additions and 144 deletions

View File

@ -219,7 +219,7 @@ class BlendSearch(Searcher):
else:
self._candidate_start_points = None
self._time_budget_s, self._num_samples = time_budget_s, num_samples
if space:
if space is not None:
self._init_search()
def set_search_properties(

View File

@ -5,16 +5,22 @@ try:
assert ray_version >= "1.0.0"
from ray.tune import sample
use_ray = True
except (ImportError, AssertionError):
from flaml.tune import sample
use_ray = False
from flaml.searcher.suggestion import OptunaSearch, Searcher, ConcurrencyLimiter
from flaml.searcher.blendsearch import BlendSearch, CFO, RandomSearch
def define_search_space(trial):
trial.suggest_float("a", 6, 8)
trial.suggest_float("b", 1e-4, 1e-2, log=True)
def test_searcher():
searcher = Searcher()
searcher = Searcher(metric=["m1", "m2"], mode=["max", "min"])
@ -45,20 +51,20 @@ except (ImportError, AssertionError):
mode="max",
)
config = {"a": sample.uniform(6, 8), "b": sample.loguniform(1e-4, 1e-2)}
searcher = OptunaSearch(
config,
points_to_evaluate=[{"a": 6, "b": 1e-3}],
evaluated_rewards=[{"m": 2}],
metric="m",
mode="max",
)
# searcher = OptunaSearch(
# config,
# points_to_evaluate=[{"a": 6, "b": 1e-3}],
# evaluated_rewards=[{"m": 2}],
# metric="m",
# mode="max",
# )
searcher = OptunaSearch(
define_search_space,
points_to_evaluate=[{"a": 6, "b": 1e-3}],
# evaluated_rewards=[{'m': 2}], metric='m', mode='max'
mode="max",
)
searcher = OptunaSearch()
# searcher = OptunaSearch()
# searcher.set_search_properties('m', 'min', define_search_space)
searcher.set_search_properties("m", "min", config)
searcher.suggest("t1")
@ -78,9 +84,7 @@ except (ImportError, AssertionError):
c = searcher.suggest("t1")
searcher.on_trial_complete("t1", {"config": c}, True)
c = searcher.suggest("t2")
searcher.on_trial_complete(
"t2", {"config": c, "m2": 1, "c": 2, "time_total_s": 1}
)
searcher.on_trial_complete("t2", {"config": c, "m2": 1, "c": 2, "time_total_s": 1})
config1 = config.copy()
config1["_choice_"] = 0
searcher._expand_admissible_region(
@ -155,3 +159,10 @@ except (ImportError, AssertionError):
print(searcher.suggest("t1"))
print(searcher.suggest("t2"))
print(searcher.suggest("t3"))
searcher = RandomSearch(space={})
print(searcher.suggest("t1"))
searcher = BlendSearch(space={})
print(searcher.suggest("t1"))
from flaml import tune
tune.run(lambda x: 1, config={}, use_ray=use_ray)