PyTorch is great but I am struggling with a baffling memory leak. I am using pyTorch version 1.12 via Anaconda on an Ubuntu machine.
This leaks memory:
import numpy as np
from torch import Tensor, LongTensor, optim
Xin_memory = Tensor(2000100, 60, 50)
Xin2 = Tensor(1,60,50)
for i in range(2000000):
nda = np.empty((60,50))
Xin_memory[i+i,:,:] = Tensor(nda)
# Xin2[0,:,:] = Tensor(nda)
print i
This does not:
import numpy as np
from torch import Tensor, LongTensor, optim
Xin_memory = Tensor(2000100, 60, 50)
Xin2 = Tensor(1,60,50)
for i in range(2000000):
nda = np.empty((60,50))
# Xin_memory[i+i,:,:] = Tensor(nda)
Xin2[0,:,:] = Tensor(nda)
print i
Help! Do I misunderstand what the assignment is doing? I am under the impression that the assignment to Xin_memory will copy the values and then the Tensor will no longer exist. Eventually, nda will not exist either and will be garbage collected. I think this code is slowly eating away at memory in some long-running code I am working with. Please let me know if I can provide any additional information.
Thank you.