微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在深度学习模型推理过程中使用 hydra 的最佳方式

如何解决在深度学习模型推理过程中使用 hydra 的最佳方式

我目前正在为我的深度学习项目试验 hydra-conf。 对于培训,我按照文档中显示的方式进行:

当我的模型被训练时,我保存了相应的状态字典。

现在的问题是,使用 hydra 进行模型推理的预期方式是什么? 我的想法是使用模型检查点以及 .hydra 文件夹中特定于运行的 config.yml 文件获取实例化模型所需的构造函数参数,在加载状态字典之前。

有没有更好的方法来实现我的目标?

编辑 1: 当尝试使用 @hydra.main() 方法时,我不知道如何将动态配置文件路径传递给装饰器,因为这将由用户提供(场景:我想对某个模型进行推理通过提供 hydra 创建的 training-run 文件夹中配置文件的路径)

解决方法

有很多方法可以做到,但没有一个被标记为“最佳”:)。 你做什么取决于你的需要和你的限制。 您需要初始化配置对象和模型并将它们传递给推理逻辑。

这可以在您最初用于训练模型的同一个 Hydra 应用程序中完成,也可以在一个新的更简单的应用程序中完成。 您可以在加载模型时直接使用 https://omegaconf.readthedocs.io/en/2.0_branch/ 加载配置。

如果您想重构您的配置,您应该使用原始应用配置和覆盖列表(也在 .hydra main 中),以及 https://hydra.cc/docs/experimental/compose_api。 与仅使用训练运行保存的确切 config.yaml 相比,重新编写更复杂,但提供了更大的灵活性。

编辑 1: 不是很干净: 您可以尝试结合使用 --config-dir 和 --config-name (https://hydra.cc/docs/advanced/hydra-command-line-flags)。

如果您的主要配置也被命名为“config”,我认为您必须重命名它,因为它将被加载而不是生成的输出目录中的配置(在 .hydra 中)。

更好,但需要更改代码: 一个实用的替代方法是:

@hydra.main()
def infer(cfg):
  cfg = OmegaConf.load(cfg.config_path)
  ...
$ python infer.py +config_path=outputs/2021-03-30/17-26-51/.hydra/config.yaml
...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。