Do you get the OOM error inside your DataLoader loop or were you able to pass a whole meta_epoch?
Currently, as you said, you are storing the losses in a list, which will store the whole computation graph with it, thus using more and more memory.
Do you need the losses somewhere else for your training?
If not and you just want them to store for debugging / printing, you should append them as losses.append(loss.item()).