问题描述
pytorch 的 dataloader 在读取数据时,设置了较大的 batchsize 和 num_workers. 然后训练一段时间报错:
RuntimeError: Too many open files. Communication with the workers is no longer possible. Please increase the limit using
ulimit -n
in the shell or change the sharing strategy by callingtorch.multiprocessing.se t_sharing_strategy('file_system')
at the beginning of your code
解决方法
在代码开头引入 torch 之后加上:
import torch.multiprocessing
torch.multiprocessing.set_sharing_strategy('file_system')
参考
- https://github.com/pytorch/pytorch/issues/11201