在服务器上跑网络感觉很慢,尤其是几块显卡都有人在跑的时候,尝试在train_loader = DataLoader(train_data,batch_size=trainargs.batch_size,shuffle=True,num_workers=4) 设置num_workers=4,发现报错RuntimeError: Caught RuntimeError in DataLoader worker process。

于是网上搜答案,但却没找到能成功解决的。于是放弃,就让它这么慢吧。直到有一天,心有不甘,又试着解决,搜报错提示的另外一句话 RuntimeError: Cannot re-initialize CUDA in forked subprocess。

发现只要在程序最开始的地方加一句就可以了,而且训练速度确实更快,无比喜悦。

torch.multiprocessing.set_start_method(‘spawn’)

原文博客RuntimeError: Cannot re-initialize CUDA in forked subprocess解决方法之一,可能因为标题和我最开始搜的内容不一样,和第二次的一样,所以我到现在才搜到,因此这篇博客标题设置为我第一次搜的,希望大家早点解决。

另外,还看到一篇博客分析了网络训练慢的原因,讲的挺好的,大家可以看看。

深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析

下面这篇是关于num_workers工作原理的,我搜这篇,发现有另外一个排名很前的博主也发了一篇内容一样的,虽然是用图片的形式,但标原创就。。。

pytorch中num_workers详解

更多推荐

训练神经网络太慢 DataLoader设置num_workers=4报错 RuntimeError: Caught RuntimeError in DataLo