Adaptive Experimentation
Project description
Ax is an accessible, general-purpose platform for understanding, managing, deploying, and automating adaptive experiments.
Adaptive experimentation is the machine-learning guided process of iteratively exploring a (possibly infinite) parameter space in order to identify optimal configurations in a resource-efficient manner. Ax currently supports Bayesian optimization and bandit optimization as exploration strategies. Bayesian optimization in Ax is powered by BoTorch, a modern library for Bayesian optimization research built on PyTorch.
For full documentation and tutorials, see the Ax website
Why Ax?
- Versatility: Ax supports different kinds of experiments, from dynamic ML-assisted A/B testing, to hyperparameter optimization in machine learning.
- Customization: Ax makes it easy to add new modeling and decision algorithms, enabling research and development with minimal overhead.
- Production-completeness: Ax comes with storage integration and ability to fully save and reload experiments.
- Support for multi-modal and constrained experimentation: Ax allows for running and combining multiple experiments (e.g. simulation with a real-world "online" A/B test) and for constrained optimization (e.g. improving classification accuracy without signifant increase in resource-utilization).
- Efficiency in high-noise setting: Ax offers state-of-the-art algorithms specifically geared to noisy experiments, such as simulations with reinforcement-learning agents.
- Ease of use: Ax includes 3 different APIs that strike different balances between lightweight structure and flexibility. Using the most concise Loop API, a whole optimization can be done in just one function call. The Service API integrates easily with external schedulers. The most elaborate Developer API affords full algorithm customization and experiment introspection.
Getting Started
To run a simple optimization loop in Ax (using the Booth response surface as the artificial evaluation function):
>>> from ax import optimize
>>> best_parameters, best_values, experiment, model = optimize(
parameters=[
{
"name": "x1",
"type": "range",
"bounds": [-10.0, 10.0],
},
{
"name": "x2",
"type": "range",
"bounds": [-10.0, 10.0],
},
],
# Booth function
evaluation_function=lambda p: (p["x1"] + 2*p["x2"] - 7)**2 + (2*p["x1"] + p["x2"] - 5)**2,
minimize=True,
)
# best_parameters contains {'x1': 1.02, 'x2': 2.97}; the global min is (1, 3)
Installation
Requirements
You need Python 3.6 or later to run Ax.
The required Python dependencies are:
- botorch
- jinja2
- pandas
- scipy
- simplejson
- sklearn
- plotly
Installation via pip
We recommend installing Ax via pip. To do so, run:
conda install pytorch torchvision -c pytorch # OSX only
pip3 install ax-platform # all systems
Recommendation for MacOS users: PyTorch is a required dependency of BoTorch, and can be automatically installed via pip. However, we recommend you install PyTorch manually before installing Ax, using the Anaconda package manager. Installing from Anaconda will link against MKL (a library that optimizes mathematical computation for Intel processors). This will result in up to an order-of-magnitude speed-up for Bayesian optimization, as at the moment, installing PyTorch from pip does not link against MKL. Currently, installation through Anaconda is temporarily required for OSX, as the pip installation of PyTorch is broken.
Installing from source
To install from source:
- Make sure you have installed the botorch dependency.
- Download Ax from the Git repository.
cd
into theax
project and run:
pip3 install -e .
Note: When installing from source, Ax requires a compiler for Cython code.
Optional Dependencies
Depending on your intended use of Ax, you may want to install Ax with optional dependencies.
If using Ax in Jupyter notebooks:
pip3 install git+ssh://git@github.com/facebook/Ax.git#egg=Ax[notebook]
If storing Ax experiments via SQLAlchemy in MySQL or SQLite:
pip3 install git+ssh://git@github.com/facebook/Ax.git#egg=Ax[mysql]
Note that instead of installation from Git, you can also clone a local version of the repo and then pip install with desired flags from the root of the local repo, e.g.:
pip3 install -e .[mysql]
Join the Ax community
See the CONTRIBUTING file for how to help out. You will
also need to install the dependencies needed for development, which are listed
in DEV_REQUIRES
in setup.py
, as follows:
pip3 install git+ssh://git@github.com/facebook/Ax.git#egg=Ax[dev]
License
Ax is licensed under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for ax_platform-0.1.3-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c19fe5a8ebedd99bda5a8e7475bdc448b2a381c5e50a1c5e53874676272eaa95 |
|
MD5 | 9573882e22bac9133db2ee8f05173672 |
|
BLAKE2b-256 | e344db8f1befed30e93632c98788c90dd8e0a9ae9a3b8b1fa566e3e0db2d1bbb |
Hashes for ax_platform-0.1.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c352fdea478ad330fc0257da83a2996d8c046c5642c65f69974ec7530024a03 |
|
MD5 | d02ec013d3b8d905df2e986aceb311a5 |
|
BLAKE2b-256 | 1e32fe7b32395a8e2075369ffa826ab3d0e4e71ef13086f6b09fad7104132dc8 |
Hashes for ax_platform-0.1.3-cp37-cp37m-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e482b6bb8be567df643a776f8440837f0f960eb42f4f97da66ada9cb40bc6be6 |
|
MD5 | 07a7b860aad3afd0aa4cec52f8ace19c |
|
BLAKE2b-256 | c10a05415279394aeef4822a4b78b59d9d89b17cdc190bc719c97530d1921fdb |
Hashes for ax_platform-0.1.3-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3faeb76f795ed0da60ae6e43be3672492a5a74c31d5166d661291d22730fbba5 |
|
MD5 | 63d6e17537ddd857e3f9ef4b2b5316c8 |
|
BLAKE2b-256 | b06293bf04c810cd3e41b39d9bbc2b28639935611370c44101289b3cf5e0dadf |
Hashes for ax_platform-0.1.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2e570b191b856e14ad965cf419aeb7aeee96d26414ca020281500b8fe215700 |
|
MD5 | 9871797bd881c314eb5fd8ce5068c5c1 |
|
BLAKE2b-256 | b1704bf0dfd1ce8a1b16e352c767b4467976f1dbf5b36e2449e2a964e8f9f4bb |
Hashes for ax_platform-0.1.3-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f381552841b9a93241dc883be9f0aa318c53c66519442e313466d9628973b22c |
|
MD5 | 448f361b6283709dc065ffefb89ba79a |
|
BLAKE2b-256 | 425f11c8c4ea9f5b43dca9a42080f25f662adbb36e90eca90a565698081c70bc |