我正在使用具有以下结构的 hydra 组合物:
├── configs
│ ├── config.yaml
│ ├── data
│ │ ├── dataset_01.yaml
│ │ └── dataset_02.yaml
│ └── model
│ ├── bert.yaml
│ └── gpt.yaml
- 配置.yaml
defaults:
- model: bert
- data: dataset_01
...
- 数据/dataset_01.yaml
# @package _group_
name: "dataset_01"
train:
path: "../resources/datasets/dataset_01/train.jsonl"
num_samples: 1257391
test:
path: "../resources/datasets/dataset_01/test.jsonl"
num_samples: 71892
val:
path: "../resources/datasets/dataset_01/val.jsonl"
num_samples: 73805
- 模型/bert.yaml
# @package _group_
name: "bert"
encoder: "source.encoder.BertEncoder.BertEncoder"
encoder_hparams:
architecture: "bert-base-uncased"
lr: 1e-7
tokenizer:
architecture: "bert-base-uncased"
predictions:
path: "../resources/predictions/bert_predictions.pt"
- 入口点
@hydra.main(config_path="configs/", config_name="config.yaml")
def perform_tasks(hparams):
model = MyModel(hparams.model)
if __name__ == '__main__':
perform_tasks()
在 的上下文中hparams.model
,OmegaConf 无法插入密钥data.name
,因为它不在范围内。因此,如果有一种方法可以在应用程序开始时进行插值,那就太好了。