mlos_bench.run module

OS Autotune main optimization loop.

Note: this script is also available as a CLI tool via pip under the name “mlos_bench”.

See –help output for details.

usage: mlos_bench [-h] [--config CONFIG] [--log_file LOG_FILE]
                  [--log_level LOG_LEVEL]
                  [--config_path CONFIG_PATH [CONFIG_PATH ...]]
                  [--service SERVICE [SERVICE ...]]
                  [--environment ENVIRONMENT] [--optimizer OPTIMIZER]
                  [--trial_config_repeat_count TRIAL_CONFIG_REPEAT_COUNT]
                  [--scheduler SCHEDULER] [--storage STORAGE] [--random_init]
                  [--random_seed RANDOM_SEED]
                  [--tunable_values TUNABLE_VALUES [TUNABLE_VALUES ...]]
                  [--globals GLOBALS [GLOBALS ...]] [--no_teardown]
                  [--experiment_id EXPERIMENT_ID]

mlos_bench : Systems autotuning and benchmarking tool

options:
  -h, --help            show this help message and exit
  --config CONFIG       Main JSON5 configuration file. Its keys are the same
                        as the command line options and can be overridden by
                        the latter. See the `mlos_bench/config/` tree at
                        https://github.com/microsoft/MLOS/ for additional
                        config examples for this and other arguments.
  --log_file LOG_FILE, --log-file LOG_FILE
                        Path to the log file. Use stdout if omitted.
  --log_level LOG_LEVEL, --log-level LOG_LEVEL
                        Logging level. Default is INFO. Set to DEBUG for
                        debug, WARNING for warnings only.
  --config_path CONFIG_PATH [CONFIG_PATH ...], --config-path CONFIG_PATH [CONFIG_PATH ...], --config-paths CONFIG_PATH [CONFIG_PATH ...], --config_paths CONFIG_PATH [CONFIG_PATH ...]
                        One or more locations of JSON config files.
  --service SERVICE [SERVICE ...], --services SERVICE [SERVICE ...]
                        Path to JSON file with the configuration of the
                        service(s) for environment(s) to use.
  --environment ENVIRONMENT
                        Path to JSON file with the configuration of the
                        benchmarking environment(s).
  --optimizer OPTIMIZER
                        Path to the optimizer configuration file. If omitted,
                        run a single trial with default (or specified in
                        --tunable_values).
  --trial_config_repeat_count TRIAL_CONFIG_REPEAT_COUNT, --trial-config-repeat-count TRIAL_CONFIG_REPEAT_COUNT
                        Number of times to repeat each config. Default is 1
                        trial per config, though more may be advised.
  --scheduler SCHEDULER
                        Path to the scheduler configuration file. By default,
                        use a single worker synchronous scheduler.
  --storage STORAGE     Path to the storage configuration file. If omitted,
                        use the ephemeral in-memory SQL storage.
  --random_init, --random-init
                        Initialize tunables with random values. (Before
                        applying --tunable_values).
  --random_seed RANDOM_SEED, --random-seed RANDOM_SEED
                        Seed to use with --random_init
  --tunable_values TUNABLE_VALUES [TUNABLE_VALUES ...], --tunable-values TUNABLE_VALUES [TUNABLE_VALUES ...]
                        Path to one or more JSON files that contain values of
                        the tunable parameters. This can be used for a single
                        trial (when no --optimizer is specified) or as default
                        values for the first run in optimization.
  --globals GLOBALS [GLOBALS ...]
                        Path to one or more JSON files that contain additional
                        [private] parameters of the benchmarking environment.
  --no_teardown, --no-teardown
                        Disable teardown of the environment after the
                        benchmark.
  --experiment_id EXPERIMENT_ID, --experiment-id EXPERIMENT_ID
                        Experiment ID to use for the benchmark. If omitted,
                        the value from the --cli config or --globals is used.
                        This is used to store and reload trial results from
                        the storage. NOTE: It is **important** to change this
                        value when incompatible changes are made to config
                        files, scripts, versions, etc. This is left as a
                        manual operation as detection of what is
                        "incompatible" is not easily automatable across
                        systems.

Additional --key=value pairs can be specified to augment or override values
listed in --globals. Other required_args values can also be pulled from shell
environment variables. For additional details, please see the website or the
README.md files in the source tree:
<https://github.com/microsoft/MLOS/tree/main/mlos_bench/>