The usage of no_grad() and model.eval() is correct and if you are not running our of memory using the complete datasets, your approach should work.
To store the model, you should save the state_dict() as described here 97.