Skip to content

Conversation

@bletham
Copy link
Contributor

@bletham bletham commented Aug 6, 2025

Summary:
Augments MultiAcquisition to additionally handle the case where we want to generate from multiple models with the same botorch acquisition class. The collection of models from which to generate is created by Surrogate.

This requires making the MBM Acquisition aware of how many points are intended to be generated with this particular Acquisition. Note that we do construct a new Acquisition in every call to gen.

The diff does a refactor of Acquisition.__init__ to move some of the logic into other methods that are called during __init__, and then can be re-called when we want to use the same Acquisition object to instantiate multiple botorch acquisition functions with different models each.

The gen_metadata entry that stores which model was used for the generation is now potentially a list of models, so I renamed the entry, both to be something a little more clear and also because there is a breaking change in the data type if one were trying to do some type of meta analysis anyway.

Differential Revision: D78560935

@meta-cla meta-cla bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Aug 6, 2025
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D78560935

bletham added a commit to bletham/Ax that referenced this pull request Aug 6, 2025
Summary:

Augments MultiAcquisition to additionally handle the case where we want to generate from multiple models with the same botorch acquisition class. The collection of models from which to generate is created by Surrogate.

This requires making the MBM Acquisition aware of how many points are intended to be generated with this particular Acquisition. Note that we do construct a new Acquisition in every call to gen.

The diff does a refactor of `Acquisition.__init__` to move some of the logic into other methods that are called during `__init__`, and then can be re-called when we want to use the same Acquisition object to instantiate multiple botorch acquisition functions with different models each.

The `gen_metadata` entry that stores which model was used for the generation is now potentially a list of models, so I renamed the entry, both to be something a little more clear and also because there is a breaking change in the data type if one were trying to do some type of meta analysis anyway.

Differential Revision: D78560935
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D78560935

bletham added a commit to bletham/Ax that referenced this pull request Aug 6, 2025
Summary:
Pull Request resolved: facebook#4110

Augments MultiAcquisition to additionally handle the case where we want to generate from multiple models with the same botorch acquisition class. The collection of models from which to generate is created by Surrogate.

This requires making the MBM Acquisition aware of how many points are intended to be generated with this particular Acquisition. Note that we do construct a new Acquisition in every call to gen.

The diff does a refactor of `Acquisition.__init__` to move some of the logic into other methods that are called during `__init__`, and then can be re-called when we want to use the same Acquisition object to instantiate multiple botorch acquisition functions with different models each.

The `gen_metadata` entry that stores which model was used for the generation is now potentially a list of models, so I renamed the entry, both to be something a little more clear and also because there is a breaking change in the data type if one were trying to do some type of meta analysis anyway.

Differential Revision: D78560935
@bletham bletham force-pushed the export-D78560935 branch 2 times, most recently from 2cb9f20 to 89dd094 Compare August 7, 2025 18:55
bletham added a commit to bletham/Ax that referenced this pull request Aug 7, 2025
Summary:

Augments MultiAcquisition to additionally handle the case where we want to generate from multiple models with the same botorch acquisition class. The collection of models from which to generate is created by Surrogate.

This requires making the MBM Acquisition aware of how many points are intended to be generated with this particular Acquisition. Note that we do construct a new Acquisition in every call to gen.

The diff does a refactor of `Acquisition.__init__` to move some of the logic into other methods that are called during `__init__`, and then can be re-called when we want to use the same Acquisition object to instantiate multiple botorch acquisition functions with different models each.

The `gen_metadata` entry that stores which model was used for the generation is now potentially a list of models, so I renamed the entry, both to be something a little more clear and also because there is a breaking change in the data type if one were trying to do some type of meta analysis anyway.

Differential Revision: D78560935
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D78560935

bletham added a commit to bletham/Ax that referenced this pull request Aug 7, 2025
Summary:
Pull Request resolved: facebook#4110

Augments MultiAcquisition to additionally handle the case where we want to generate from multiple models with the same botorch acquisition class. The collection of models from which to generate is created by Surrogate.

This requires making the MBM Acquisition aware of how many points are intended to be generated with this particular Acquisition. Note that we do construct a new Acquisition in every call to gen.

The diff does a refactor of `Acquisition.__init__` to move some of the logic into other methods that are called during `__init__`, and then can be re-called when we want to use the same Acquisition object to instantiate multiple botorch acquisition functions with different models each.

The `gen_metadata` entry that stores which model was used for the generation is now potentially a list of models, so I renamed the entry, both to be something a little more clear and also because there is a breaking change in the data type if one were trying to do some type of meta analysis anyway.

Differential Revision: D78560935
bletham added 3 commits August 7, 2025 12:06
Summary:

ModelConfig has a name field that is optional. MBM Surrogate needs an identifier for model; currently uses name if present, or just drops the model if not when storing eval results. MBM Generator needs an identifier for model and uses name if present, or str(model_config) if not.

This cleans things up a bit by providing an identifier for ModelConfig that will always exist and so can be used in the place of name and clean up logic in the other parts of MBM. The identifier follows what was done in MBM Generator for tracking gen metadata: it is name if name exists, otherwise a string dump of the model config.

Reviewed By: sdaulton

Differential Revision: D78560884
Summary:

Adds a "models_for_gen(n)" method to Surrogate that will constructs a list of n models from which to generate n candidates. The list of models is constructed by sampling from the given ModelConfigs according to their model selection eval criterion (taken as a measure of model quality).

Differential Revision: D77252555
Summary:

Augments MultiAcquisition to additionally handle the case where we want to generate from multiple models with the same botorch acquisition class. The collection of models from which to generate is created by Surrogate.

This requires making the MBM Acquisition aware of how many points are intended to be generated with this particular Acquisition. Note that we do construct a new Acquisition in every call to gen.

The diff does a refactor of `Acquisition.__init__` to move some of the logic into other methods that are called during `__init__`, and then can be re-called when we want to use the same Acquisition object to instantiate multiple botorch acquisition functions with different models each.

The `gen_metadata` entry that stores which model was used for the generation is now potentially a list of models, so I renamed the entry, both to be something a little more clear and also because there is a breaking change in the data type if one were trying to do some type of meta analysis anyway.

Differential Revision: D78560935
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D78560935

@facebook-github-bot
Copy link
Contributor

This pull request has been merged in 55d9a96.

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 Merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants