deepcopy should work in your use case, since you are not trying to copy the optimizer.
I personally prefer the explicit approach in creating new objects and load the state_dicts I want.
As you can see from the previous posts copying the model and optimizer might create new objects, but the parameter references in the optimizer wouldn’t be updated to the new model.