我知道我可以通过hydra.run.dir=XXX
从命令行设置来更改配置中的工作目录。但是如何在不使用 CLI 参数的情况下从脚本中正确地做到这一点,即使日志也保存在我设置的目录中?
此代码不起作用,因为:
- 当我尝试更改目录和
- 没有这样的属性
cfg.hydra
。
UPD:我在评论中得到了一个指针。我可以在调用 hydra 之前更改块中的 hydra 参数if __name__ == 'main':
。hydra.run.dir
但是如何从脚本中获取和修改呢?
@hydra.main(config_path="conf", config_name="config")
def main(cfg):
cfg.hydra.run.dir = "./c_out/cached_loss" # no such attribute
logger.info('I log something')
我的 hydra 配置如下所示:
defaults:
- hydra/job_logging: custom_logging
# hydra/custom_logging.yaml
# python logging configuration for tasks
version: 1
formatters:
simple:
format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
handlers:
console:
class: logging.StreamHandler
formatter: simple
stream: ext://sys.stdout
file:
class: logging.FileHandler
formatter: simple
# relative to the job log directory
filename: ${hydra.job.name}.log
root:
level: INFO
handlers: [console, file]
disable_existing_loggers: false