Hug*_*ins 5 fb-hydra omegaconf
我有一个主配置文件,比方说config.yaml:
num_layers: 4
embedding_size: 512
learning_rate: 0.2
max_steps: 200000
Run Code Online (Sandbox Code Playgroud)
我希望能够在命令行上使用另一个文件(例如 say )覆盖它,big_model.yaml我在概念上使用它,例如:
python my_script.py --override big_model.yaml
Run Code Online (Sandbox Code Playgroud)
可能big_model.yaml看起来像:
num_layers: 8
embedding_size: 1024
Run Code Online (Sandbox Code Playgroud)
我希望能够覆盖任意数量的此类文件,每个文件的优先级都高于前一个文件。假设我也有fast_learn.yaml
learning_rate: 2.0
Run Code Online (Sandbox Code Playgroud)
所以我想从概念上做一些类似的事情:
python my_script.py --override big_model.yaml --override fast_learn.yaml
Run Code Online (Sandbox Code Playgroud)
在九头蛇中做到这一点的最简单/最标准的方法是什么?(或者可能在 omegaconf 中?)
(请注意,我希望这些覆盖文件理想地只是标准 yaml 文件,理想情况下覆盖早期的 yaml 文件;尽管如果我必须使用覆盖 DSL 来编写,我可以这样做,如果这是最简单/最好的/最标准的方式)
请参阅基本教程并阅读有关配置组的信息。
您可以创建任意配置组,并从每个配置组中选择一个选项(从 Hydra 1.0 开始,配置组选项是互斥的),这里您将需要两个配置组:一个可以是model,带有normal,small和bigmodel,另一个可以是trainer,带有也许normal和fast选择。
配置组还可以覆盖其他配置组中的内容。您还可以始终从命令行附加到默认列表 - 因此您还可以添加仅在命令行中使用的其他配置组。“实验”配置组就是一个例子。您可以将其用作:
$ python train.py +experiment=exp1
Run Code Online (Sandbox Code Playgroud)
在这种覆盖整个配置的配置组中,您应该使用全局包(在文档中阅读有关包的更多信息)。
$ python train.py +experiment=exp1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10726 次 |
| 最近记录: |