Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在深度学习模型推理过程中使用hydra的最佳方法_Python_Pytorch_Hydra Python - Fatal编程技术网

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

Python 在深度学习模型推理过程中使用hydra的最佳方法,python,pytorch,hydra-python,Python,Pytorch,Hydra Python,我目前正在为我的深度学习项目试用hydra conf。 对于培训,我遵循文档中所示的方法: 配置文件文件夹,一个主config.yml文件,在额外文件夹中包含其他配置组 我的main方法用@hydra.main(…)修饰以初始化/加载配置 当我的模型被训练时,我保存相应的状态dict 现在的问题是,使用hydra进行模型推理的预期方法是什么? 我的想法是在加载state dict之前,使用模型检查点以及.hydra文件夹中特定于运行的config.yml文件来获取实例化模型所需的构造函数参数

我目前正在为我的深度学习项目试用hydra conf。 对于培训,我遵循文档中所示的方法:

  • 配置文件文件夹,一个主config.yml文件,在额外文件夹中包含其他配置组
  • 我的main方法用@hydra.main(…)修饰以初始化/加载配置
当我的模型被训练时,我保存相应的状态dict

现在的问题是,使用hydra进行模型推理的预期方法是什么? 我的想法是在加载state dict之前,使用模型检查点以及.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相比,重新编写更为复杂,但提供了更大的灵活性

Edit1: 不太干净: 您可以尝试使用--config dir和--config name(
https://hydra.cc/docs/advanced/hydra-command-line-flags

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

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

@hydra.main()
def infer(cfg):
  cfg = OmegaConf.load(cfg.config_path)
  ...

我还找到了composeAPI,但对“何时应该使用它”部分()感到有点困惑。不同的用例和蓝色警告框表明,compose api应该作为最后手段使用,并用于正常的ML推理用例。我用@hydra.main(…)方法的问题更新了我的问题
$ python infer.py +config_path=outputs/2021-03-30/17-26-51/.hydra/config.yaml
...