Skip to content

Commit 7d1e308

Browse files
2timesjayfacebook-github-bot
authored andcommitted
Add Pareto Frontier report support, Fix cell generator, switch APIs
Summary: Add gen_report support for Pareto Frontier plots. Open Qs: 1) Data selection for model training 2) objective name vs names bugs Reviewed By: ldworkin Differential Revision: D20506870 fbshipit-source-id: 44b2f81b1daec65223f15f9f143770962138ce7d
1 parent 24ff4b9 commit 7d1e308

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

ax/core/utils.py

+13-6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from ax.core.batch_trial import BatchTrial
1111
from ax.core.data import Data
1212
from ax.core.experiment import Experiment
13+
from ax.core.objective import MultiObjective
1314
from ax.core.optimization_config import OptimizationConfig
1415
from ax.core.trial import Trial
1516
from ax.core.types import ComparisonOp
@@ -41,17 +42,25 @@ def get_missing_metrics(
4142
Returns:
4243
A NamedTuple(missing_objective, Dict[str, missing_outcome_constraint])
4344
"""
44-
objective_name = optimization_config.objective.metric.name
45+
objective = optimization_config.objective
46+
if isinstance(objective, MultiObjective): # pragma: no cover
47+
objective_metric_names = [m.name for m in objective.metrics]
48+
else:
49+
objective_metric_names = [optimization_config.objective.metric.name]
50+
4551
outcome_constraints_metric_names = [
4652
outcome_constraint.metric.name
4753
for outcome_constraint in optimization_config.outcome_constraints
4854
]
49-
missing_objective = _get_missing_arm_trial_pairs(data, objective_name)
55+
missing_objectives = {
56+
objective_metric_name: _get_missing_arm_trial_pairs(data, objective_metric_name)
57+
for objective_metric_name in objective_metric_names
58+
}
5059
missing_outcome_constraints = get_missing_metrics_by_name(
5160
data, outcome_constraints_metric_names
5261
)
5362
all_metric_names = set(data.df["metric_name"])
54-
optimization_config_metric_names = {objective_name}.union(
63+
optimization_config_metric_names = set(missing_objectives.keys()).union(
5564
outcome_constraints_metric_names
5665
)
5766
missing_tracking_metric_names = all_metric_names.difference(
@@ -61,9 +70,7 @@ def get_missing_metrics(
6170
data=data, metric_names=missing_tracking_metric_names
6271
)
6372
return MissingMetrics(
64-
objective={objective_name: missing_objective}
65-
if len(missing_objective) > 0
66-
else {},
73+
objective={k: v for k, v in missing_objectives.items() if len(v) > 0},
6774
outcome_constraints={
6875
k: v for k, v in missing_outcome_constraints.items() if len(v) > 0
6976
},

0 commit comments

Comments
 (0)