Ax Integration#

We use Ax as the primary backend for optimization and experiment tracking. This enables us to offload the optimization and experiment tracking processes and focus on delivering a great user experience for optimization using Bluesky.

Note

The use of Ax is optional. You can implement your own optimizer using the blop.protocols.Optimizer protocol. However, the blop.ax.Agent class is designed to be a nicer interface for using Ax only.

Wrapping Ax#

Generally, we want to avoid wrapping the Ax API and allow users to use the full power of Ax themselves. However, there are some cases where an API wrapper is useful:

Blop handles the following aspects of the Ax API for you:

  • Experiment creation and configuration

  • Optimization configuration (objectives, constraints)

  • Trial suggestion and ingestion

We chose this minimal approach because it encompasses the basic usage of Ax for optimization. For more complex setups (e.g. multi-fidelity optimization, custom model fitting), use the Ax API directly.

Using the Ax API directly#

You can access the underlying ax.Client instance via blop.ax.Agent.ax_client.

You can learn all about the various Ax features in the Ax documentation. Some notable features that are not used by Blop by default are: