Skip to content

Comments

Deprecate training-only attributes on StepperConfig#862

Merged
jpdunc23 merged 10 commits intomainfrom
refactor/deprecate-stepper-config-training-rebased
Feb 23, 2026
Merged

Deprecate training-only attributes on StepperConfig#862
jpdunc23 merged 10 commits intomainfrom
refactor/deprecate-stepper-config-training-rebased

Conversation

@jpdunc23
Copy link
Member

@jpdunc23 jpdunc23 commented Feb 20, 2026

Adds stepper_training: TrainStepperConfig to the fme.ace training config and removes loss, optimize_last_step_only, n_ensemble, parameter_init, and train_n_forward_steps from StepperConfig.

WARNING: This is a breaking change for existing fme.ace and fme.coupled training configs.

Changes:

  • Updates baseline and example ACE configs.

  • Renames train_stepper: CoupledTrainStepperConfig to stepper_training: CoupledTrainStepperConfig on the fme.coupled training config.

  • Tests added

@jpdunc23 jpdunc23 marked this pull request as ready for review February 23, 2026 17:29
),
),
),
train_stepper=TrainStepperConfig(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit late on this, but what about something like StepperTrainerConfig for the name? "TrainStepper" is a bit confusing to me, since this isn't really the configuration for a stepper.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or StepperTrainConfig?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An issue with a different name is, this is explicitly the implementation of the TrainStepperABC generic class, so currently it is a TrainStepper whether that's a confusing name or not.

Another option is to put Adapter in the name, since this is an adapter over the Stepper to make it supply the APIs needed for a TrainStepper. For example, TrainStepperAdapter and TrainStepperAdapterConfig.

Yet another option is to rename Stepper somehow, but idk, TrainStepper really is a Train-api version of the Stepper, and contains a Stepper, so it seems like an appropriate name.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the issue with the configuration key train_stepper, with the class name, or both @oliverwm1 ? If the configuration key name is good I would suggest merging and then gathering feedback for a potential rename PR, since the class name is internal and easy to change backwards-compatibly.

Copy link
Member Author

@jpdunc23 jpdunc23 Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm hesitant to use "trainer" here since we already use that term when referring to an important class Trainer. I'd suggest stepper_training as an alternative name for the TrainConfig attribute.

From the perspective of Trainer, it's stepper: TrainStepperABC is the same object it always was, so I feel that TrainStepper is an appropriate name. I think it's a nice convention to append Config to the name of the thing being built by the config as in TrainStepperConfig so I would also lean toward keeping the config class name as is.

Copy link
Contributor

@mcgibbon mcgibbon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO this is ready to merge, holding off on review in case we need to discuss names

),
),
),
train_stepper=TrainStepperConfig(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An issue with a different name is, this is explicitly the implementation of the TrainStepperABC generic class, so currently it is a TrainStepper whether that's a confusing name or not.

Another option is to put Adapter in the name, since this is an adapter over the Stepper to make it supply the APIs needed for a TrainStepper. For example, TrainStepperAdapter and TrainStepperAdapterConfig.

Yet another option is to rename Stepper somehow, but idk, TrainStepper really is a Train-api version of the Stepper, and contains a Stepper, so it seems like an appropriate name.

Copy link
Contributor

@mcgibbon mcgibbon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jpdunc23 jpdunc23 enabled auto-merge (squash) February 23, 2026 22:17
@jpdunc23 jpdunc23 merged commit f198dcc into main Feb 23, 2026
7 checks passed
@jpdunc23 jpdunc23 deleted the refactor/deprecate-stepper-config-training-rebased branch February 23, 2026 22:26
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.

3 participants