[tune] convert search spaces: parse spec before flattening (#12785)

* Parse spec before flattening

* flatten after parse

* Test for ValueError if grid search is passed to search algorithms
This commit is contained in:
Kai Fricke
2021-01-09 18:21:49 +01:00
committed by GitHub
parent 9dd9f72111
commit d4b0a9fadf
8 changed files with 82 additions and 15 deletions
+5 -3
View File
@@ -8,8 +8,7 @@ from ray.tune.sample import Categorical, Float, Integer, LogUniform, \
from ray.tune.suggest.suggestion import UNRESOLVED_SEARCH_SPACE, \
UNDEFINED_METRIC_MODE, UNDEFINED_SEARCH_SPACE
from ray.tune.suggest.variant_generator import parse_spec_vars
from ray.tune.utils import flatten_dict
from ray.tune.utils.util import unflatten_dict
from ray.tune.utils.util import flatten_dict, unflatten_dict
try:
import ax
@@ -269,7 +268,6 @@ class AxSearch(Searcher):
@staticmethod
def convert_search_space(spec: Dict):
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if grid_vars:
@@ -277,6 +275,10 @@ class AxSearch(Searcher):
"Grid search parameters cannot be automatically converted "
"to an Ax search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(par, domain):
sampler = domain.get_sampler()
if isinstance(sampler, Quantized):
+4 -1
View File
@@ -366,7 +366,6 @@ class BayesOptSearch(Searcher):
@staticmethod
def convert_search_space(spec: Dict, join: bool = False) -> Dict:
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if grid_vars:
@@ -374,6 +373,10 @@ class BayesOptSearch(Searcher):
"Grid search parameters cannot be automatically converted "
"to a BayesOpt search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(domain: Domain) -> Tuple[float, float]:
sampler = domain.get_sampler()
if isinstance(sampler, Quantized):
+5 -3
View File
@@ -15,8 +15,7 @@ from ray.tune.suggest import Searcher
from ray.tune.suggest.suggestion import UNRESOLVED_SEARCH_SPACE, \
UNDEFINED_METRIC_MODE, UNDEFINED_SEARCH_SPACE
from ray.tune.suggest.variant_generator import parse_spec_vars
from ray.tune.utils import flatten_dict
from ray.tune.utils.util import unflatten_dict
from ray.tune.utils.util import flatten_dict, unflatten_dict
logger = logging.getLogger(__name__)
@@ -238,7 +237,6 @@ class TuneBOHB(Searcher):
@staticmethod
def convert_search_space(spec: Dict) -> ConfigSpace.ConfigurationSpace:
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if grid_vars:
@@ -246,6 +244,10 @@ class TuneBOHB(Searcher):
"Grid search parameters cannot be automatically converted "
"to a TuneBOHB search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(par: str, domain: Domain
) -> ConfigSpace.hyperparameters.Hyperparameter:
quantize = None
+4 -1
View File
@@ -344,7 +344,6 @@ class DragonflySearch(Searcher):
@staticmethod
def convert_search_space(spec: Dict) -> List[Dict]:
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if grid_vars:
@@ -352,6 +351,10 @@ class DragonflySearch(Searcher):
"Grid search parameters cannot be automatically converted "
"to a Dragonfly search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(par: str, domain: Domain) -> Dict:
sampler = domain.get_sampler()
if isinstance(sampler, Quantized):
+5 -3
View File
@@ -8,8 +8,7 @@ from ray.tune.sample import Categorical, Domain, Float, Integer, LogUniform, \
from ray.tune.suggest.suggestion import UNRESOLVED_SEARCH_SPACE, \
UNDEFINED_METRIC_MODE, UNDEFINED_SEARCH_SPACE
from ray.tune.suggest.variant_generator import parse_spec_vars
from ray.tune.utils import flatten_dict
from ray.tune.utils.util import unflatten_dict
from ray.tune.utils.util import flatten_dict, unflatten_dict
try:
import nevergrad as ng
@@ -287,7 +286,6 @@ class NevergradSearch(Searcher):
@staticmethod
def convert_search_space(spec: Dict) -> Parameter:
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if grid_vars:
@@ -295,6 +293,10 @@ class NevergradSearch(Searcher):
"Grid search parameters cannot be automatically converted "
"to a Nevergrad search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(domain: Domain) -> Parameter:
sampler = domain.get_sampler()
if isinstance(sampler, Quantized):
+5 -3
View File
@@ -8,8 +8,7 @@ from ray.tune.sample import Categorical, Domain, Float, Integer, LogUniform, \
from ray.tune.suggest.suggestion import UNRESOLVED_SEARCH_SPACE, \
UNDEFINED_METRIC_MODE, UNDEFINED_SEARCH_SPACE
from ray.tune.suggest.variant_generator import parse_spec_vars
from ray.tune.utils import flatten_dict
from ray.tune.utils.util import unflatten_dict
from ray.tune.utils.util import flatten_dict, unflatten_dict
try:
import optuna as ot
@@ -240,7 +239,6 @@ class OptunaSearch(Searcher):
@staticmethod
def convert_search_space(spec: Dict) -> List[Tuple]:
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if not domain_vars and not grid_vars:
@@ -251,6 +249,10 @@ class OptunaSearch(Searcher):
"Grid search parameters cannot be automatically converted "
"to an Optuna search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(par: str, domain: Domain) -> Tuple:
quantize = None
+4 -1
View File
@@ -319,7 +319,6 @@ class SkOptSearch(Searcher):
@staticmethod
def convert_search_space(spec: Dict, join: bool = False) -> Dict:
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
if grid_vars:
@@ -327,6 +326,10 @@ class SkOptSearch(Searcher):
"Grid search parameters cannot be automatically converted "
"to a SkOpt search space.")
# Flatten and resolve again after checking for grid search.
spec = flatten_dict(spec, prevent_delimiter=True)
resolved_vars, domain_vars, grid_vars = parse_spec_vars(spec)
def resolve_value(domain: Domain) -> Union[Tuple, List]:
sampler = domain.get_sampler()
if isinstance(sampler, Quantized):