I don’t know what training_epoch_end does, but you are directly passing the outputs to it, are returning its output, and are then calling self.check_and_save on it.
Remove this line of code and check if your memory usage is still increasing.