Skip to content

Allow training on a broader variable pool than inference uses#1241

Closed
mcgibbon wants to merge 1 commit into
mainfrom
feature/training-extra-variables
Closed

Allow training on a broader variable pool than inference uses#1241
mcgibbon wants to merge 1 commit into
mainfrom
feature/training-extra-variables

Conversation

@mcgibbon

@mcgibbon mcgibbon commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Extracts the "training supports a broader variable pool than inference" piece from feature/combine-infill-prediction so it can land independently of the multi-task training work, which will follow in a separate PR.

Changes:

  • fme.core.step.step.StepConfigABC.all_training_names: new abstract property; returning None (the default added on each existing subclass) preserves the old input_names + output_names behavior, while returning an explicit list tells the data loader to fetch the broader training set.

  • fme.ace.stepper.single_module.StepperConfig.all_names: returns step.all_training_names when set, falls back to the previous union otherwise.

  • fme.core.step.infill_prediction.InfillPredictionStepConfig / InfillPredictionStep / InferenceSchemeConfig: first consumer. Training pulls all all_names variables, missing ones are zero-filled, and per-channel mask indicators are appended so the network knows which inputs are real. At inference the step routes via inference_scheme and behaves like SingleModuleStep. Registered as "infill_prediction" and re-exported from fme.ace.

  • Tests added (fme/core/step/test_infill_prediction.py)

  • If dependencies changed, "deps only" image rebuilt and "latest_deps_only_image.txt" file updated

Add an optional `all_training_names` property to `StepConfigABC` that
declares the variable pool the data loader should fetch during training,
distinct from the (typically narrower) `input_names + output_names` set
that inference walks. When `None` (the default for existing steps), the
old behavior is preserved.

Add `InfillPredictionStepConfig` / `InfillPredictionStep` as the first
consumer: training pulls all `all_names` variables, missing ones are
zero-filled, and per-channel mask indicators are appended so the network
can distinguish real inputs from fill values. At inference, the step
routes via `inference_scheme` and behaves like `SingleModuleStep`.

Existing subclasses (`SingleModuleStepConfig`, `MultiCallStepConfig`,
`SecondaryModuleStepConfig`, `SeparateRadiationStepConfig`,
`FCN3StepConfig`, `MockStepConfig`) get a `return None` override to
satisfy the abstract-or-final rule.
@mcgibbon

mcgibbon commented Jun 8, 2026

Copy link
Copy Markdown
Contributor Author

Tried splitting this from #1224 but it doesn't make much sense on its own. Closing.

@mcgibbon mcgibbon closed this Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant