Future Breaking Changes
In the next major version (0.8.0), we will be implementing multiple breaking changes to the internal API and begin removing functions/methods that have been deprecated to clean up our codebase. While we will maintain any features that assist in backwards compatibility that already exist, we will make no guarantees for backwards compatibility between server, client, dbs from version before 0.8.0. A full notice of what has changed will be available in that version.
Features
- Start new experiments by seeding a model with data from a previous experiment within the same DB. Documentation in "Warm Starting a Strategy".
- Database queries now use the master_id instead of the experiment_id (which was default a generated UUID). The first experiment run in a db will have the master_id 1, then the next would be 2 and so on.
- The database now has additional helper methods to generate a dataframe or a csv. An additional command line command has been added to support summarizing an experiment or creating CSVs. Code
- Asks to the server can now have some parameters fixed to specific values using the
fixed_pars
key in the ask message. - A new extension system to extend AEPsych on server runtime. Check out the example in our documentation.
- New Plotting API to allow more easily composable plotting. The old plotting functions are deprecated and will be removed in the future. Take a look at this demo.
- You can now ask for more than one point at a time ("batched ask"), note that this will not work with our lookahead acquisition functions (e.g., EAVC), but will work for other acquisition functions/generators where applicable. This can be used with
num_points
key in an ask message. - Implemented the acqf grid search generator. AcqfGridSearchGenerator will evaluate a sobol grid of points on an acquisition function and return points based on the acquisition score without optimizing it like the OptimizeAcqfGenerator. This should allow much faster acquisition at the cost of the points being less optimal.
- Tells messages can now accept additional key-value pairs in the message outside of config, outcome, and model_data. These extra keys will be converted into a json string and stored in the raw table alongside the actual data. This is in addition to the previous method where extra metadata can be added to messages via the extra_info key outside of the message content. This is the intended method to store extra trial-level data, extra_info should not be used in this way to store trial-level data as it will not be directly tied to the data. Currently, the Python client has support for these extra keys, the other clients will be updated to follow.
Minor Changes
- We no longer warn when inducing size >= 100 in GPClassificationModel, this is due to the changed default inducing point algorithm.
- The visualizer and interactive notebooks have been removed, these will be replaced by a new standalone program soon.
- All generators know how the dimensionality of the search space (though they need not know the bounds).
- The server now logs the version on startup.
Important Bug fixes
- OptimizeAcqfGenerator should more reliably get the transformed bounds for the acquisition functions that need it. This is fixed in v.0.6.5, in case you would like a version without other latest changes.
- Server can remember multiple db master records to ensure data is correctly saved when resuming
- Configs are reliably tied to the master record when setup messages are sent