MLOS is a Data Science powered infrastructure and methodology to democratize and automate Performance Engineering. MLOS enables continuous, instance-based, robust, and trackable systems optimization.
Перейти к файлу
Brian Kroth 4ba5b9cbcf Merged PR 960: pydocstyle fixups
pydocstyle fixups
2023-02-25 01:07:34 +00:00
.azure-pipelines Merged PR 882: devcontainer fixups 2023-02-08 01:16:16 +00:00
.devcontainer Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
.vscode Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
conda-envs Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
doc Merged PR 924: Implement MlosCoreOptimizer 2023-02-24 15:45:42 +00:00
mlos_bench Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
mlos_core Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
scripts Merged PR 624: Propagate the global config parameters correctly to every Environment; implement proper remote execution on Azure VM 2022-09-14 20:35:58 +00:00
.editorconfig initial checkin 2021-12-08 14:35:39 -06:00
.flake8 Merged PR 566: Implement remote execution on Azure VM 2022-08-10 19:36:24 +00:00
.gitattributes Merged PR 775: Adds explicit line ending handling of shell scripts in the gitattributes 2022-12-24 00:31:27 +00:00
.gitignore Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
.pylintrc Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
LICENSE.txt Merged PR 560: Merging initial os_autotune_main work to main 2022-08-04 16:11:35 +00:00
Makefile Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
README.md Merged PR 862: Add devcontainer support and other dev environment improvements 2023-02-07 21:43:01 +00:00
azure-pipelines.yml Merged PR 860: Various Build Fixups 2023-01-30 23:49:26 +00:00
conftest.py Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00
pytest.ini Merged PR 862: Add devcontainer support and other dev environment improvements 2023-02-07 21:43:01 +00:00
setup.cfg Merged PR 960: pydocstyle fixups 2023-02-25 01:07:34 +00:00

README.md

MlosCore

This repository contains a stripped down implementation of essentially just the core optimizer and config space description APIs from the original MLOS as well as the mlos-bench module intended to help automate and manage running experiments for autotuning systems with mlos-core.

It is intended to provide a simplified, easier to consume (e.g. via pip), with lower dependencies abstraction to

  • describe a space of context, parameters, their ranges, constraints, etc. and result objectives
  • an "optimizer" service abstraction (e.g. register() and suggest()) so we can easily swap out different implementations methods of searching (e.g. random, BO, etc.)
  • provide some helpers for automating optimization experiment runner loops and data collection

For these design requirements we intend to reuse as much from existing OSS libraries as possible and layer policies and optimizations specifically geared towards autotuning over top.

Getting Started

The development environment for MlosCore uses conda to ease dependency management.

Devcontainer

For a quick start, you can use the provided VSCode devcontainer configuration.

Simply open the project in VSCode and follow the prompts to build and open the devcontainer and the conda environment and additional tools will be installed automatically inside the container.

Manually

See Also: conda install instructions

Note: to support Windows we rely on some pre-compiled packages from conda-forge channels, which increases the conda solver time during environment create/update.

To work around this the (currently) experimental libmamba solver can be used.

See https://github.com/conda-incubator/conda-libmamba-solver#getting-started for more details.

  1. Create the mlos_core Conda environment.

    conda env create -f conda-envs/mlos_core.yml
    

    or

    # This will also ensure the environment is update to date using "conda env update -f conda-envs/mlos_core.yml"
    make conda-env
    

    Note: the latter expects a *nix environment.

  2. Initialize the shell environment.

    conda activate mlos_core
    
  3. Run the BayesianOptimization.ipynb notebook.

Distributing

  1. Build the wheel file(s)

    make dist
    
  2. Install it (e.g. after copying it somewhere else).

    # this will install just the optimizer component with emukit support:
    pip install dist/mlos_core-0.0.4-py3-none-any.whl[emukit]
    
    # this will install just the optimizer component with skopt support:
    pip install dist/mlos_core-0.0.4-py3-none-any.whl[skopt]
    
    # this will install both the optimizer and the experiment runner:
    pip install dist/mlos_bench-0.0.4-py3-none-any.whl
    

See Also