espnet3.utils.run_utils.validate_experiment_context
Less than 1 minute
espnet3.utils.run_utils.validate_experiment_context
espnet3.utils.run_utils.validate_experiment_context(, training_config: DictConfig | None, inference_config: DictConfig | None, metrics_config: DictConfig | None, stages_to_run: Sequence[str]) → None
Validate that runtime configs have enough experiment identity.
Supported runner modes.
- Training-backed mode, where
training_configis present and provides experiment identity for inference and metrics. - Standalone inference/metrics mode, where the runtime config must define its own
exp_tagor concreteexp_dir.
- Parameters:
- training_config (DictConfig | None) – Training config selected for the current run.
- inference_config (DictConfig | None) – Inference config for the
inferstage. - metrics_config (DictConfig | None) – Metrics config for the
measurestage. - stages_to_run (Sequence *[*str ]) – Resolved stage names requested by the runner.
- Returns: Validation succeeds silently.
- Return type: None
- Raises:ValueError – If
inferormeasureis requested withouttraining_configand the corresponding runtime config does not defineexp_tagor a concreteexp_dir.
Notes
Validation is stage-aware. For example, a missing metrics identity is ignored when measure is not in stages_to_run.
Examples
Allow standalone inference when the config already defines its experiment identity:
inference_config = OmegaConf.create(
{"exp_tag": "whisper_eval", "exp_dir": "./exp/whisper_eval"}
)
validate_experiment_context(
training_config=None,
inference_config=inference_config,
metrics_config=None,
stages_to_run=["infer"],
)
# Succeeds because standalone inference can derive exp_dir.Reject standalone inference when experiment identity is missing.
inference_config = OmegaConf.create(
{"inference_dir": "${exp_dir}/inference"}
)
validate_experiment_context(
training_config=None,
inference_config=inference_config,
metrics_config=None,
stages_to_run=["infer"],
)
# Raises:
# ValueError: infer stage requires --training_config or a
# standalone inference_config with exp_tag/exp_dir.Accept training-backed inference even when inference_config does not define exp_tag:
training_config = OmegaConf.create(
{"exp_tag": "train_asr_rnn", "exp_dir": "./exp/train_asr_rnn"}
)
inference_config = OmegaConf.create(
{"inference_dir": "${exp_dir}/inference"}
)
validate_experiment_context(
training_config=training_config,
inference_config=inference_config,
metrics_config=None,
stages_to_run=["infer"],
)
# Succeeds because training-backed mode is active.