MLFlowと他ツールの組み合わせ - Retrieva TECH BLOG
ハイパラ管理のすすめ -ハイパーパラメータをHydra+MLflowで管理しよう- - やむやむもやむなし
> tree .
.
├── conf
│   ├── config.yaml
│   ├── db
│   │   ├── mysql.yaml
│   │   └── postgresql.yaml
│   ├── schema
│   │   ├── school.yaml
│   │   ├── support.yaml
│   │   └── warehouse.yaml
│   └── ui
│       ├── ui.yaml
│       └── view.yaml
└─ my_app.py
config.yaml
defaults:
  - db: mysqldb/mysql.yaml
driver: mysql
user: omry
password: secretrun
$ python my_app.py db=postgresql
$ python my_app.py -m schema=warehouse,support,school
$ python my_app.py -m schema=warehouse,support,school db=mysql,postgresql
# setup
pip install omegaconf
pip install hydra-core
my_app.py
import os
from loguru import logger
import hydra
from omegaconf import DictConfig, OmegaConf
logger.info(f"Working directory : {os.getcwd()}")
@hydra.main(config_path="conf", config_name="config")
def my_app(cfg: DictConfig) -> None:
    logger.info("..")
    logger.info(OmegaConf.to_yaml(cfg))
    logger.info(f"Org wor dir : {hydra.utils.get_original_cwd()}")
    logger.info(f"to_abs_path : {hydra.utils.to_absolute_path('foo')}")
    logger.info(f"to_abs_path : {hydra.utils.to_absolute_path('/foo')}")
if __name__ == "__main__":
    my_app()hydra.utils.get_original_cwd()
hydra.utils.to_absolute_path('foo')# ロギングのターゲットを指定
$ python my_app.py hydra.verbose=[__main__,hydra]
# ログを非表示
$ python my_app.py hydra/job_logging=disabled
$ python my_app.py --info
help の確認
$ python my_app.py --hydra-help
Hydra (1.0.4)
See https://hydra.cc for more info.
== Flags ==
--help,-h : Application's help
--hydra-help : Hydra's help
--version : Show Hydra's version and exit
--cfg,-c : Show config instead of running [job|hydra|all]
--package,-p : Config package to show
--run,-r : Run a job
--multirun,-m : Run multiple jobs with the configured launcher and sweeper
--shell-completion,-sc : Install or Uninstall shell completion:
    Bash - Install:
    eval "$(python my_app.py -sc install=bash)"
    Bash - Uninstall:
    eval "$(python my_app.py -sc uninstall=bash)"
    Fish - Install:
    python my_app.py -sc install=fish | source
    Fish - Uninstall:
    python my_app.py -sc uninstall=fish | source
--config-path,-cp : Overrides the config_path specified in hydra.main().
                    The config_path is relative to the Python file declaring @hydra.main()
--config-name,-cn : Overrides the config_name specified in hydra.main()
--config-dir,-cd : Adds an additional config dir to the config search path
--info,-i : Print Hydra information
Overrides : Any key=value arguments to override config values (use dots for.nested=overrides)
== Configuration groups ==
Compose your configuration from those groups (For example, append hydra/job_logging=disabled to command line)
hydra/help: default
hydra/hydra_help: default
hydra/hydra_logging: default, disabled, hydra_debug
hydra/job_logging: default, disabled, stdout
hydra/launcher: basic
hydra/output: default
hydra/sweeper: basic
Use '--cfg hydra' to Show the Hydra config.Bash と Fish の場合のTab completion コマンドが記載されている
--shell-completion,-sc : Install or Uninstall shell completion:
    Bash - Install:
    eval "$(python my_app.py -sc install=bash)"
    Bash - Uninstall:
    eval "$(python my_app.py -sc uninstall=bash)"
    Fish - Install:
    python my_app.py -sc install=fish | source
    Fish - Uninstall:
    python my_app.py -sc uninstall=fish | source
これにより,configグループの対象が補完される. 便利.
> python my_app.py db=
db=mysql  db=postgresql