Compose the bounded experiment

Maturity: verified

The safest first interaction is to compose and validate the shipped radioml2018_one_step_npp experiment. Configuration validation finishes before dataset construction, model construction, file writes, or cloud operations.

Compose and inspect

Run from the repository root after preparing the source checkout:

PYTHONPATH=src:. uv run --project analysis/eda python - <<'PY'
from rffm.applications.pretrain import load_pretrain_config

config = load_pretrain_config(
    "configs",
    experiment="radioml2018_one_step_npp",
)
print(config.experiment_name)
print(config.dataset.name, config.dataset.split)
print(config.model.implementation)
print(config.objective.implementation)
print(config.optimizer.implementation)
print(config.training.max_steps, config.training.device)
PY

The committed YAML resolves to:

radioml2018_one_step_npp
radioml2018 train
tiny_causal_iq
next_patch_prediction
adamw
1 cuda

What the preset selects

  • the validated RadioML2018 canonical registry entry and train split;

  • batches of eight samples with no worker processes;

  • per-sample joint max-absolute I/Q normalization;

  • base-10 logarithmic physical-metadata normalization;

  • fixed patches of 64 I/Q samples;

  • the tiny causal I/Q model, next-patch prediction, and AdamW;

  • one optimizer step on an NVIDIA CUDA GPU and checkpoint-at-every-step policy;

  • the gs://rf-fm-runs-dev application artifact root.

The preset does not select validation, a scheduler, best-checkpoint policy, distributed execution, or an evaluator.

Try a validated override

Hydra dot-list overrides are accepted by the same loader. This remains side-effect free:

PYTHONPATH=src:. uv run --project analysis/eda python - <<'PY'
from rffm.applications.pretrain import load_pretrain_config

config = load_pretrain_config(
    "configs",
    experiment="radioml2018_one_step_npp",
    overrides=["dataloader.batch_size=4", "training.device=cpu"],
)
print(config.dataloader.batch_size, config.training.device)
PY

Expected output is 4 cpu. Pydantic rejects unknown outer fields after Hydra composition.

See Also