Skip to content

Move add_trial_type, update_runner, supports_trial_type to base Experiment (#5003)#5003

Open
mpolson64 wants to merge 3 commits intofacebook:mainfrom
mpolson64:export-D94988577
Open

Move add_trial_type, update_runner, supports_trial_type to base Experiment (#5003)#5003
mpolson64 wants to merge 3 commits intofacebook:mainfrom
mpolson64:export-D94988577

Conversation

@mpolson64
Copy link
Copy Markdown
Contributor

@mpolson64 mpolson64 commented Mar 9, 2026

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves add_trial_type and update_runner from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates supports_trial_type to unify the logic: for multi-type experiments (where default_trial_type is set), only trial types registered in _trial_type_to_runner are supported. For single-type experiments, None is supported along with SHORT_RUN and LONG_RUN for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577

@meta-cla meta-cla bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Mar 9, 2026
@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Mar 9, 2026

@mpolson64 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D94988577.

mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 11, 2026
…iment (facebook#5003)

Summary:
Pull Request resolved: facebook#5003

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 16, 2026
…iment (facebook#5003)

Summary:
Pull Request resolved: facebook#5003

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
@meta-codesync meta-codesync bot changed the title Move add_trial_type, update_runner, supports_trial_type to base Experiment Move add_trial_type, update_runner, supports_trial_type to base Experiment (#5003) Mar 16, 2026
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 17, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 17, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 17, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 17, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 17, 2026
…iment (facebook#5003)

Summary:
Pull Request resolved: facebook#5003

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 17, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
Summary:
This is Phase 1 of moving MultiTypeExperiment features into the base
Experiment class, enabling eventual deprecation of MultiTypeExperiment.

Adds `_trial_type_to_metric_names: dict[str, set[str]]` to Experiment —
a mapping from trial type to the set of metric names relevant to that
type. This is the natural complement to the existing
`_trial_type_to_runner` dict. Along with it, adds the following
properties and methods to Experiment:

- `trial_type_to_metric_names`: read-only property (shallow copy)
- `metric_to_trial_type`: computed inverse mapping, with optimization
  config metrics pinned to `default_trial_type`
- `metrics_for_trial_type(trial_type)`: returns Metric objects for a
  given trial type
- `default_trials`: returns trial indices matching the default type

MultiTypeExperiment is updated to populate `_trial_type_to_metric_names`
alongside `_metric_to_trial_type` in all mutation paths (init,
optimization_config setter, add/update/remove tracking metric). The
redundant MTE overrides for `metric_to_trial_type`,
`metrics_for_trial_type`, `default_trials`, and `default_trial_type`
are removed — they are now inherited from the base class.

The JSON decoder is updated to rebuild `_trial_type_to_metric_names`
from `_metric_to_trial_type` during deserialization for backward
compatibility.

Differential Revision: D94970662
Summary:
Phase 2 of moving MultiTypeExperiment features into base Experiment.

Updates the base Experiment metric management methods (`add_metric`, `update_metric`, `remove_metric`) to accept an optional `trial_type` parameter. When provided, metrics are associated with the specified trial type in `_trial_type_to_metric_names`. The `__init__` and `optimization_config` setter also now register metrics when `default_trial_type` is set.

The deprecated wrappers (`add_tracking_metric`, `add_tracking_metrics`, `update_tracking_metric`) now accept and pass through `trial_type` and `canonical_name` parameters.

On MultiTypeExperiment, overrides are simplified to delegate to the base class methods:
- `add_tracking_metric` delegates to `self.add_metric()`
- `add_tracking_metrics` override removed (inherited from base)
- `update_tracking_metric` delegates to `self.update_metric()`
- `remove_tracking_metric` replaced with `remove_metric` override

Differential Revision: D94986440
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 25, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 25, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
…iment (facebook#5003)

Summary:
Pull Request resolved: facebook#5003

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
mpolson64 added a commit to mpolson64/Ax that referenced this pull request Mar 25, 2026
…iment (facebook#5003)

Summary:

Phase 3 of moving MultiTypeExperiment features into base Experiment.

Moves `add_trial_type` and `update_runner` from MultiTypeExperiment to the base Experiment class, making them available to all experiments.

Updates `supports_trial_type` to unify the logic: for multi-type experiments (where `default_trial_type` is set), only trial types registered in `_trial_type_to_runner` are supported. For single-type experiments, `None` is supported along with `SHORT_RUN` and `LONG_RUN` for backward compatibility with generation strategies that use those trial types.

Removes the corresponding overrides from MultiTypeExperiment — all three methods are now inherited from the base class.

Reviewed By: saitcakmak

Differential Revision: D94988577
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed Do not delete this pull request or issue due to inactivity. fb-exported meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant