diff --git a/docs/examples/gp_model_creation/model_creation.ipynb b/docs/examples/gp_model_creation/model_creation.ipynb new file mode 100644 index 00000000..5f6865a5 --- /dev/null +++ b/docs/examples/gp_model_creation/model_creation.ipynb @@ -0,0 +1,299 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Building GP Models from Scratch\n", + "Sometimes it is useful to build GP models outside the context of BO for data\n", + "visualization and senativity measurements, ie. learned hyperparameters. Here we\n", + "demonstrate how to build models from data outside of generators.\n", + "\n", + "For this we use the 3D rosenbrock function test function." + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 1, + "outputs": [ + { + "data": { + "text/plain": " x0 x1 x2 y xopt_runtime xopt_error\n0 0.847245 -1.891988 -1.984525 3785.470594 0.000010 False\n1 0.985060 1.587642 0.141463 604.483929 0.000005 False\n2 -0.444518 0.379139 -0.225330 19.389569 0.000004 False\n3 -1.009254 1.019137 1.148092 5.235473 0.000004 False\n4 -1.981280 -1.368821 0.970260 2899.064985 0.000003 False\n5 0.786900 1.628456 -1.409226 1751.545746 0.000003 False\n6 -0.117503 -0.382464 -0.574680 70.841234 0.000003 False\n7 -1.811372 -1.028411 -1.027662 2304.022669 0.000003 False\n8 -1.078829 0.078072 -1.793674 446.984705 0.000003 False\n9 1.273585 -1.705415 1.902873 1215.692446 0.000003 False\n10 -0.431648 -1.068162 -0.023538 299.307154 0.000003 False\n11 1.166817 1.499961 1.132756 126.993414 0.000003 False\n12 1.927585 0.311807 0.537347 1179.274320 0.000003 False\n13 0.589707 0.053449 1.585747 260.280140 0.000003 False\n14 -1.518910 1.018033 0.285361 228.916244 0.000003 False", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
x0x1x2yxopt_runtimexopt_error
00.847245-1.891988-1.9845253785.4705940.000010False
10.9850601.5876420.141463604.4839290.000005False
2-0.4445180.379139-0.22533019.3895690.000004False
3-1.0092541.0191371.1480925.2354730.000004False
4-1.981280-1.3688210.9702602899.0649850.000003False
50.7869001.628456-1.4092261751.5457460.000003False
6-0.117503-0.382464-0.57468070.8412340.000003False
7-1.811372-1.028411-1.0276622304.0226690.000003False
8-1.0788290.078072-1.793674446.9847050.000003False
91.273585-1.7054151.9028731215.6924460.000003False
10-0.431648-1.068162-0.023538299.3071540.000003False
111.1668171.4999611.132756126.9934140.000003False
121.9275850.3118070.5373471179.2743200.000003False
130.5897070.0534491.585747260.2801400.000003False
14-1.5189101.0180330.285361228.9162440.000003False
\n
" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# set values if testing\n", + "import os\n", + "SMOKE_TEST = os.environ.get(\"SMOKE_TEST\")\n", + "NUM_MC_SAMPLES = 1 if SMOKE_TEST else 128\n", + "NUM_RESTARTS = 1 if SMOKE_TEST else 20\n", + "\n", + "# Ignore all warnings\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "from xopt import Xopt, Evaluator\n", + "from xopt.generators import RandomGenerator\n", + "from xopt.resources.test_functions.rosenbrock import evaluate_rosenbrock,make_rosenbrock_vocs\n", + "\n", + "# make rosenbrock function vocs in 3D\n", + "vocs = make_rosenbrock_vocs(3)\n", + "\n", + "# collect some data using random sampling\n", + "evaluator = Evaluator(function=evaluate_rosenbrock)\n", + "generator = RandomGenerator(vocs=vocs)\n", + "X = Xopt(generator=generator, evaluator=evaluator, vocs=vocs)\n", + "X.random_evaluate(15)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-24T14:45:11.242373800Z", + "start_time": "2024-04-24T14:45:05.850560800Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Create GP model based on the data" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [], + "source": [ + "data = X.data" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-24T14:45:11.261375100Z", + "start_time": "2024-04-24T14:45:11.244374300Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 3, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method build_model in module xopt.generators.bayesian.models.standard:\n", + "\n", + "build_model(input_names: List[str], outcome_names: List[str], data: pandas.core.frame.DataFrame, input_bounds: Dict[str, List] = None, dtype: torch.dtype = torch.float64, device: Union[torch.device, str] = 'cpu') -> botorch.models.model_list_gp_regression.ModelListGP method of xopt.generators.bayesian.models.standard.StandardModelConstructor instance\n", + " Construct independent models for each objective and constraint.\n", + " \n", + " Parameters\n", + " ----------\n", + " input_names : List[str]\n", + " Names of input variables.\n", + " outcome_names : List[str]\n", + " Names of outcome variables.\n", + " data : pd.DataFrame\n", + " Data used for training the model.\n", + " input_bounds : Dict[str, List], optional\n", + " Bounds for input variables.\n", + " dtype : torch.dtype, optional\n", + " Data type for the model (default is torch.double).\n", + " device : Union[torch.device, str], optional\n", + " Device on which to perform computations (default is \"cpu\").\n", + " \n", + " Returns\n", + " -------\n", + " ModelListGP\n", + " A list of trained botorch models.\n", + "\n" + ] + } + ], + "source": [ + "from xopt.generators.bayesian.models.standard import StandardModelConstructor\n", + "model_constructor = StandardModelConstructor()\n", + "\n", + "# here we build a model from vocs\n", + "model = model_constructor.build_model_from_vocs(\n", + " vocs=vocs, data=data\n", + ")\n", + "\n", + "# here we build a model from info (more flexible)\n", + "model = model_constructor.build_model(\n", + " input_names=[\"x0\",\"x1\",\"x2\"],\n", + " outcome_names=[\"y\"],\n", + " data=data\n", + ")\n", + "help(model_constructor.build_model)\n" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-24T14:45:13.955823900Z", + "start_time": "2024-04-24T14:45:11.260373200Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Examine GP model hyperparameters\n", + "Here we look at the GP hyperparameters for the objective function (the first model).\n", + "Note: the hyperparameters here are in raw_units (due to contraints on parameter\n", + "values, ie. lengthscales > 0)" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "likelihood.noise_covar.raw_noise Parameter containing:\n", + "tensor([-21.6353], dtype=torch.float64, requires_grad=True)\n", + "mean_module.raw_constant Parameter containing:\n", + "tensor(0.6334, dtype=torch.float64, requires_grad=True)\n", + "covar_module.raw_outputscale Parameter containing:\n", + "tensor(0.7650, dtype=torch.float64, requires_grad=True)\n", + "covar_module.base_kernel.raw_lengthscale Parameter containing:\n", + "tensor([[-0.9368, -0.5085, -0.0153]], dtype=torch.float64, requires_grad=True)\n" + ] + } + ], + "source": [ + "objective_model = model.models[vocs.output_names.index(\"y\")]\n", + "\n", + "# print raw hyperparameter values\n", + "for name,val in objective_model.named_parameters():\n", + " print(name,val)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-24T14:45:13.998821Z", + "start_time": "2024-04-24T14:45:13.958825500Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 5, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "outputscale: tensor(1.1471, dtype=torch.float64)\n", + "prior mean: tensor(0.6334, dtype=torch.float64)\n", + "noise: tensor([0.0001], dtype=torch.float64)\n", + "lengthscales tensor([[0.3306, 0.4709, 0.6855]], dtype=torch.float64)\n" + ] + } + ], + "source": [ + "# print real values - note that these are in normalized coordinates\n", + "print(\"outputscale:\", objective_model.covar_module.outputscale.data)\n", + "print(\"prior mean:\", objective_model.mean_module.constant.data)\n", + "print(\"noise:\", objective_model.likelihood.noise_covar.noise.data)\n", + "print(\"lengthscales\", objective_model.covar_module.base_kernel.lengthscale.data)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-24T14:45:14.007821800Z", + "start_time": "2024-04-24T14:45:13.974821300Z" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "## Visualize model predictions" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from xopt.generators.bayesian.visualize import visualize_model\n", + "\n", + "fig, ax = visualize_model(\n", + " model,\n", + " vocs,\n", + " data,\n", + " variable_names=[\"x0\",\"x1\"],\n", + " reference_point={\"x2\":0.0}\n", + ")" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-24T14:49:36.001389300Z", + "start_time": "2024-04-24T14:49:35.410177700Z" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2024-04-24T14:45:14.766824600Z" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/mkdocs.yml b/mkdocs.yml index 169ff1ef..7211f449 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,6 +14,8 @@ nav: - examples/basic/xopt_evaluator.ipynb - examples/basic/xopt_generator.ipynb - Bayesian: + - Gaussian Process Model Creation: + - Basic example: examples/gp_model_creation/model_creation.ipynb - Bayesian Exploration: - Bayesian Exploration: examples/bayes_exp/bayesian_exploration.ipynb - Bayesian Exploration from yaml: examples/bayes_exp/bayesian_exploration_from_yaml.ipynb diff --git a/scripts/run_examples.py b/scripts/run_examples.py index e9fd6de1..b6e49370 100644 --- a/scripts/run_examples.py +++ b/scripts/run_examples.py @@ -28,6 +28,7 @@ "basic", "bayes_exp", "cnsga", + "gp_model_creation", "single_objective_bayes_opt", "multi_objective_bayes_opt", "es",