Skip to content

Commit 733320e

Browse files
blethammeta-codesync[bot]
authored andcommitted
Allow DiagnosticAnalysis with missing opt config metrics (#5159)
Summary: Pull Request resolved: #5159 Filter DiagnosticAnalysis metrics to only those present in the adapter's optimization config, gracefully handling cases where the adapter cannot be extracted. This prevents errors when the experiment has metrics not included in the optimization configuration. The commit adds a try/except block in DiagnosticAnalysis that uses extract_relevant_adapter to identify which metrics are actually in the optimization config, filtering out any that aren't. If the adapter can't be extracted, it silently continues with the original metric list. Reviewed By: mgarrard Differential Revision: D100103284 fbshipit-source-id: 60071ea87c708cc1b7725e3ccf97af990121e19a
1 parent 482f129 commit 733320e

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

ax/analysis/diagnostics.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
from ax.analysis.analysis import Analysis
1212
from ax.analysis.graphviz.generation_strategy_graph import GenerationStrategyGraph
1313
from ax.analysis.plotly.cross_validation import CrossValidationPlot
14-
from ax.analysis.utils import validate_experiment
14+
from ax.analysis.utils import extract_relevant_adapter, validate_experiment
1515
from ax.core.analysis_card import AnalysisCardGroup
1616
from ax.core.experiment import Experiment
1717
from ax.core.utils import is_bandit_experiment
18+
from ax.exceptions.core import UserInputError
1819
from ax.generation_strategy.generation_strategy import GenerationStrategy
1920
from pyre_extensions import none_throws, override
2021

@@ -84,6 +85,19 @@ def compute(
8485
is_bandit = generation_strategy and is_bandit_experiment(
8586
generation_strategy_name=generation_strategy.name
8687
)
88+
try:
89+
relevant_adapter = extract_relevant_adapter(
90+
experiment=experiment,
91+
generation_strategy=generation_strategy,
92+
adapter=adapter,
93+
)
94+
adapter_metric_names = [
95+
relevant_adapter._experiment.signature_to_metric[signature].name
96+
for signature in relevant_adapter._metric_signatures
97+
]
98+
metric_names = [m for m in metric_names if m in adapter_metric_names]
99+
except UserInputError:
100+
pass
87101

88102
cross_validation_plots = (
89103
[

0 commit comments

Comments
 (0)