随着xuance的功能丰富,目前configs有一大把,但是逐渐难以管控,所有config单层铺开,并不是很优雅。
建议使用hydra来管理配置,可以考虑参考 Mava 里的配置方式:
defaults:
- _self_
- logger: logger
- arch: anakin
- system: sac/ff_masac
- network: mlp
- env: mabrax # [mabrax, mpe]
hydra:
searchpath:
- file://mava/configs
用hydra的好处:
- 可以非常优雅地把config进行分类管理。
- 假设某天xuance希望添加一个新的checkpoint配置项,比如”保存第二好的checkpoint“,按现有的config,则需要每个文件都加入一行”save_second_best: True“,这工作量非常大不说、还容易出错。
- 而且由于所有配置是单层的,还存在命名空间冲突的问题。比如
env_seed 和 exp_seed 就得分开。
- 如果换用hydra,在调参时还可以很方便地基于某个之前的参数创建新yaml,很轻松可以知道改了哪些参数。
- 还可以使用hydra的multirun功能,一次性启动多个参数的训练,起到sweep的作用。
综上,推荐考虑使用hydra来管理配置,特此提出本issue。如果管理者也有兴趣推进,我愿意贡献时间参与上述配置的迁移。