|
43 | 43 | from ax.core.search_space import SearchSpace, SearchSpaceDigest |
44 | 44 | from ax.core.types import ComparisonOp |
45 | 45 | from ax.exceptions.core import DataRequiredError, UnsupportedError, UserInputError |
| 46 | +from ax.exceptions.model import ModelError |
46 | 47 | from ax.generators.torch.botorch_modular.generator import BoTorchGenerator |
47 | 48 | from ax.generators.torch.botorch_modular.surrogate import Surrogate, SurrogateSpec |
48 | 49 | from ax.generators.torch.botorch_modular.utils import ModelConfig |
@@ -1391,6 +1392,37 @@ def test_moo_with_derived_parameter(self) -> None: |
1391 | 1392 | ) |
1392 | 1393 | self.assertEqual(len(objective_thresholds), len(experiment.metrics)) |
1393 | 1394 |
|
| 1395 | + def test_botorch_model_property(self) -> None: |
| 1396 | + experiment = get_branin_experiment(with_completed_trial=True) |
| 1397 | + # Case: Invalid generator. |
| 1398 | + adapter = TorchAdapter( |
| 1399 | + generator=TorchGenerator(), |
| 1400 | + experiment=experiment, |
| 1401 | + transforms=Cont_X_trans, |
| 1402 | + ) |
| 1403 | + with self.assertRaisesRegex(UnsupportedError, "BoTorchGenerator"): |
| 1404 | + adapter.botorch_model |
| 1405 | + |
| 1406 | + # Case: Model not fitted yet. |
| 1407 | + adapter = TorchAdapter( |
| 1408 | + generator=BoTorchGenerator(), |
| 1409 | + experiment=experiment, |
| 1410 | + transforms=Cont_X_trans, |
| 1411 | + fit_on_init=False, |
| 1412 | + ) |
| 1413 | + with self.assertRaisesRegex(ModelError, "has not yet been constructed"): |
| 1414 | + adapter.botorch_model |
| 1415 | + |
| 1416 | + # Case: Model fitted. |
| 1417 | + generator = BoTorchGenerator() |
| 1418 | + adapter = TorchAdapter( |
| 1419 | + generator=generator, |
| 1420 | + experiment=experiment, |
| 1421 | + transforms=Cont_X_trans, |
| 1422 | + ) |
| 1423 | + self.assertIs(adapter.botorch_model, generator.surrogate.model) |
| 1424 | + self.assertIsInstance(adapter.botorch_model, SingleTaskGP) |
| 1425 | + |
1394 | 1426 |
|
1395 | 1427 | class AdapterWithPLBOTest(TestCase): |
1396 | 1428 | """Test the PLBO (Preference-Learning-guided BO) step in BOPE (Bayesian |
|
0 commit comments