Dataloader异常卡死或报错

问题描述:

使用pytorch训练网络加载数据当num_workers>0时,训练一轮并验证后,训练第二轮时卡在for循环那里取不到数据。num_worders=0就没有问题。但效率慢。
pytorch 1.7.1 不报任何错误
pytorch 1.11.0 会报DataLoader worker (pid 22479) is killed by signal: Segmentation fault.
如果在pytorch 1.7.1追踪代码,发现卡在python3.7/site-packages/torch/utils/data/_utils/worker.py中的198行data = fetcher.fetch(index)


之前用mxnet的时候也出现过训练到一半的时候突然就卡在那个地方不报错也不退出。就是显卡使用率0%,不知道是不是同样的问题。
这个问题困扰了好久,因为用num_workers=0就没有问题,所以一直没有解决。


原因分析:

这几天实在受不了。经过各种谷歌,终于让我找到了解决方法。
看下你的Dataset类里,__gititem__(self,item)方法内是不是用了opencv做图像处理。如果是这就是原因了,opencv的多线程和python的多线程相互干扰了。


解决方案:

import cv2
cv2.setNumThreads(0)
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值