Emukit: open source toolkit for statistical emulation and decision-making under uncertainty

Emukit is a highly adaptable Python toolkit for enriching decision-making under uncertainty. This is particularly pertinent to model complex systems where data is scarce or difficult to acquire. In these scenarios, propagating well-calibrated uncertainty estimates within a design loop or computational pipeline ensures that constrained resources are used effectively.

Some features of Emukit are:

Main components of Emukit

In a nutshell, decision-making methods implemented in Emukit are represented in the following high-level chart.

The main three component of methods implemented in Emukit are:

Build your model, run your method, solve your task

The typical workflow that we envision for a user interested in using Emukit is:

  1. Figure out which questions/tasks are important for in regard to their process/simulation.
  2. Understand which emulation techniques are needed to accomplish the chosen task.
  3. Build an emulator of the process. That can be a very involved step, that may include a lot of fine tuning and validation.
  4. Feed the emulator to the chosen technique and use it to answer the question/complete the task.

The following workflow summarizes this steps and the techniques currently implemented in Emukit.

Build your model

Generally speaking, Emukit does not provide modelling capabilities, instead expecting users to bring their own models. Because of the variety of modelling frameworks out there, Emukit does not mandate or make any assumptions about a particular modelling technique or a library. Instead it suggests to implement a subset of defined model interfaces required to use a particular method. Nevertheless, there are a few model-related functionalities in Emukit:

Run your method

This is the component and focus of Emukit. Emukit defines a general structure of a decision-making method, called OuterLoop, and then offers implementations of several such methods: Bayesian optimization, sensitivity analysis, Bayesian quadrature and experimental design. All methods in Emukit are model-agnostic and defining new APIs to accommodate other frameworks is easy.

The main features currently available in Emukit are:

Solve your task

Check this folder for examples of things people did with Emukit. Additionally, we have integrated in the core part of the library a simple benchmarking tool to compare different Bayesian optimization methods.

Get started!

If you want to start using Emukit just have a look to the different examples in the landing page or have a look at the tutorials.