Optuna extension for JSON and YAML configuration files
Project description
optunizer
Optuna extension for JSON and YAML configuration files
Installation
pip install optunizer
- with PostresSQL connector
pip install optunizer[psycopg]
Running
- Suppose you have some script/program (e.g.
main.py
) with config in YAML/JSON file (e.g.config.yaml
) that returns some output (e.g.metrics.json
)
- main.py
import json
import yaml
config_file = 'config.yaml'
with open(config_file) as f:
params = yaml.safe_load(f)
metric = params['param1'] + params['param2']
metrics = {'metric': metric}
metrics_file = 'metrics.json'
with open(metrics_file, 'w') as f:
json.dump(metrics, f)
- config.yaml
param1: 2
param2: 0.5
param3: c
- metrics.json
{
"metric": 0.3
}
- Make optunizer config file, e.g.
optunizer.yaml
attrs: # track all fields in files
config.yaml: true
metrics.json: true
optunizer_sysinfo.json: true
class: optunizer.optimizer.Optimizer
load_if_exists: true
export_csv: optunizer_results.csv
export_metrics: optunizer_metrics.json
export_sysinfo: optunizer_sysinfo.json
study: optunizer_test
objectives: # Specify objectives, e.g. fields in metrics.json file
metric@metrics.json: minimize
params: # Specify params, e.g. fields in config.yaml file
param1@config.yaml:
method: suggest_int
method_kwargs:
high: 3
low: 0
param2@config.yaml:
method: suggest_float
method_kwargs:
high: 1.0
low: 0.01
log: true
param3@config.yaml:
method: suggest_categorical
method_kwargs:
choices: [a, b, c]
pruner: PatientPruner
pruner_kwargs: # Specify pruner, e.g. PatientPruner with NopPruner subpruner
min_delta: 0
patience: 0
wrapped_pruner: NopPruner
wrapped_pruner_kwargs: {}
sampler: PartialFixedSampler
sampler_kwargs: # Specify sampler, e.g. PartialFixedSampler with GridSampler subsampler
base_sampler: RandomSampler
base_sampler_kwargs: {}
# base_sampler: GridSampler
# base_sampler_kwargs:
# search_space:
# param1@config.yaml: [0, 1, 2]
# param2@config.yaml: [0.01, 0.5]
fixed_params:
param3@config.yaml: a
subprocess_kwargs: # Specify your command
args:
- python
- main.py
- config.yaml
- Run optunizer
OPTUNA_CONFIG=optunizer.yaml python -m optunizer
or
python -m optunizer optunizer.yaml
- Run optunizer streamlit viz
pip install optunizer[viz]
python -m optunizer app
- There are several useful environment variables, that could be set in command line,
.env
or.env.secret
files
OPTUNA_CONFIG=optunizer.yaml
OPTUNA_CONFIG_APP=app.yaml
OPTUNA_SHARED=.env
OPTUNA_SECRET=.env.secret
OPTUNA_URL=postgresql+psycopg2://USER:PASSWORD@IP:PORT/DB # see https://docs.sqlalchemy.org/en/14/core/engines.html
OPTUNA_STUDY=STUDY_NAME
OPTUNA_TRIALS=3
OPTUNA_TIMEOUT=3600
OPTUNA_LOAD_IF_EXISTS=1
OPTUNA_EXPORT_CSV=CSV_FILE_NAME
OPTUNA_EXPORT_METRICS=METRICS_FILE_NAME
OPTUNA_EXPORT_SYSINFO=SYSINFO_FILE_NAME
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 Distribution
optunizer-0.1.17.tar.gz
(16.8 kB
view details)
Built Distribution
File details
Details for the file optunizer-0.1.17.tar.gz
.
File metadata
- Download URL: optunizer-0.1.17.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60044878c28a516d6660e31fb17cc290b76b4a99b3535f04fafd354e83f28931 |
|
MD5 | 9dd1c29c83924fd15bf67cdeb187d336 |
|
BLAKE2b-256 | d7ed04220cc442c03853f9b24a20f860d74c7b17dc3cf1ca8a73db1013fbbb65 |
File details
Details for the file optunizer-0.1.17-py3-none-any.whl
.
File metadata
- Download URL: optunizer-0.1.17-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fe8ec6ad6054bff936640fc31f969b84a0a14d56525cac53f55441b1b6b501f |
|
MD5 | 1d614b837990e79f0505b78cc90c185c |
|
BLAKE2b-256 | 0334e81571002c4fe04dd5dc905ffd3402081053105f4c5e74ac2a42429dcc71 |