在命令行中指定配置名称时,Hydra 运行时类型检查不起作用

Hydra runtime type checking does not work when config name specified in command line

以下代码片段在 运行 没有任何参数的脚本(由于配置中缺少参数而停止执行)时按预期工作:

if __name__ == '__main__':

    config_name = "csv_images_test"

    cs = ConfigStore.instance()
    cs.store(name=config_name, node=Config)

    @hydra.main(config_path="/hdd/twapi/configs/", config_name=config_name)
    def main(cfg: Config) -> None:
        print(OmegaConf.to_yaml(cfg))

    main()

但是,当我通过命令行指定此配置名称时,似乎没有进行类型检查:

python /hdd/twapi/src/config_structure.py --config-name=/hdd/twapi/configs/csv_images_test.yaml

在 Hydra 1.0 中,当配置和匹配的模式共享相同的名称时,它们之间的匹配会自动发生。 这已记录在案 here

仍在开发中的 Hydra 1.1 更改了此行为,支持更灵活地使用默认列表以将模式与配置相匹配。 参见 this

这是可能的,因为在 Hydra 1.1 中实现了新的默认列表,它支持任意配置中的默认列表,而不仅仅是主要配置。

了解更多 here

您可以尝试 Hydra 1.1 开发版(最新版本 1.1.0dev4)。有关安装说明,请参阅 Hydra 的主要自述文件。