如何使用“_target_”字段将 hydra 配置转储到 yaml 中
How to dump a hydra config into yaml with `_target_` fields
我从 python 数据类实例化了一个 hydra 配置。例如
from dataclasses import dataclass
from typing import Any
from hydra.utils import instantiate
class Model():
def __init__(self, x=1):
self.x = x
@dataclass
class MyConfig:
model: Any
param: int
static_config = MyConfig(model=Model(x=2), param='whatever')
instantiated_config = instantiate(static_config)
现在,我想将此配置转储为 yaml,包括 Hydra 用来重新实例化指向配置内部的对象的 _target_
字段。我想避免必须编写自己的逻辑来编写那些 _target_
字段,并且我想一定有一些 hydra 实用程序可以执行此操作,但我似乎无法在文档中找到它。
参见OmegaConf.to_yaml
and OmegaConf.save
:
from omegaconf import OmegaConf
# dumps to yaml string
yaml_data: str = OmegaConf.to_yaml(my_config)
# dumps to file:
with open("config.yaml", "w") as f:
OmegaConf.save(my_config, f)
# OmegaConf.save can also accept a `str` or `pathlib.Path` instance:
OmegaConf.save(my_config, "config.yaml")
另请参阅 Hydra-Zen 项目,它提供自动生成 OmegaConf 对象(可以保存到 yaml)。
我从 python 数据类实例化了一个 hydra 配置。例如
from dataclasses import dataclass
from typing import Any
from hydra.utils import instantiate
class Model():
def __init__(self, x=1):
self.x = x
@dataclass
class MyConfig:
model: Any
param: int
static_config = MyConfig(model=Model(x=2), param='whatever')
instantiated_config = instantiate(static_config)
现在,我想将此配置转储为 yaml,包括 Hydra 用来重新实例化指向配置内部的对象的 _target_
字段。我想避免必须编写自己的逻辑来编写那些 _target_
字段,并且我想一定有一些 hydra 实用程序可以执行此操作,但我似乎无法在文档中找到它。
参见OmegaConf.to_yaml
and OmegaConf.save
:
from omegaconf import OmegaConf
# dumps to yaml string
yaml_data: str = OmegaConf.to_yaml(my_config)
# dumps to file:
with open("config.yaml", "w") as f:
OmegaConf.save(my_config, f)
# OmegaConf.save can also accept a `str` or `pathlib.Path` instance:
OmegaConf.save(my_config, "config.yaml")
另请参阅 Hydra-Zen 项目,它提供自动生成 OmegaConf 对象(可以保存到 yaml)。