Brando_Miranda:

This results in me calling mdl.train() when coming back to the trianing loop and mdl.test() when coming to the testing loop.


Yes, this is the proper way.



 Brando_Miranda:

However I’ve noticed that potentially this creates issues with how parameters are saved (e.g. batch norm, perhaps others) that depend on this eval, train state.


No, that’s not the case and unfortunately you didn’t follow up in your other thread.
Saving the state_dict doesn’t have any known issues regarding previous calls to model.train() or model.eval(), so my guess is still that you might be manually deactivating the running stats updates.
If that’s not the case, please post a minimal executable code snippet which would reproduce the issue.