问题:
训练神经网络时修改num_worker时候出现如下报错:
RuntimeError: Pin memory thread exited unexpectedly
我的dataloader如下:
num_workers = 1
train_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=batch_size,
num_workers=num_workers,
shuffle=True,
pin_memory=True,
persistent_workers = False,
collate_fn=train_dataset.collate_fn)
val_loader = torch.utils.data.DataLoader(val_dataset,
batch_size=1,
num_workers=num_workers,
pin_memory=True,
persistent_workers = False,
collate_fn=val_dataset.collate_fn)
很多教程让修改pin_memory和persistent_workers;但我还是会发生报错的情况。还有个方法是让把num_worker设置为0,这个方法确实可以,但我无法忍受训练过程如此慢,所以坚决不改num_worker。
问题解决:
在文件开头输入如下代码:
import torch.multiprocessing
torch.multiprocessing.set_sharing_strategy('file_system')
我的问题就解决了,原因分析应该是我的docker分配的缓存不够,这里的import可以解决这个问题。