如何解决在深度学习模型推理过程中使用 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 举报,一经查实,本站将立刻删除。