Hydra multirunを実行したいのですが、構成ファイルでスイープを指定します。機能要求を求める前に、これを行う方法があるかどうかを知りたいです。
これまでのところ、私が試したことは次のとおりです。
ツリー構造:
.
├── conf
│ ├── compile
│ │ ├── base.yaml
│ │ └── grid_search.yaml
│ └── config.yaml
└── my_app.py
の内容my_appy.py
:
import hydra
from omegaconf import DictConfig, OmegaConf
@hydra.main(config_path="conf", config_name="config")
def my_app(cfg : DictConfig) -> None:
print(OmegaConf.to_yaml(cfg, resolve=True))
if __name__ == "__main__":
my_app()
の内容conf/config.yaml
:
defaults:
- compile: base
の内容conf/compile/base.yaml
:
loss: mse
optimizer: adam
の内容conf/compile/grid_search.yaml
:
defaults:
- base
lr: 1e-2,1e-3,1e-4
を実行するpython my_app.py -m compile=grid_search
と、次の出力が得られます。
[2022-01-07 10:08:05,414][HYDRA] Launching 1 jobs locally
[2022-01-07 10:08:05,414][HYDRA] #0 : compile=grid_search
compile:
loss: mse
optimizer: adam
lr: 1e-2,1e-3,1e-4
これは私が理解している出力です。この例では、リストを保持している構成変数と、スイープしたい構成変数との違いを伝える方法がないためです。設定ファイルでそのようなことを示すことはありますか?
基本的に、コマンド ラインやシェル スクリプトではなく、構成ファイルでグリッド検索を指定できるようにしたいと考えています。
おまけの質問:この問題のように、辞書のオーバーライドによって指定されたスイープに対してこれを行うにはどうすればよいでしょうか?