mmdetection遇到ValueError: ctypes objects containing pointers cannot be pickled

问题描述:

在使用mmdetection进行训练时,使用单个GPU可以正常训练,当我尝试使用2个GPU分布式训练

./tools/dist_train.sh configs/faster_rcnn_r50_fpn_1x_static_24_wofreeze.py 2 --work-dir DOTA

产生了奇怪的报错:

ValueError: ctypes objects containing pointers cannot be pickled

运行环境

mmcv (0.2.16)
mmdet (1.0rc0+unknown)

torch (1.4.0)
torchvision (0.5.0)

CUDA 10.1

问题解决

我一开始以为是自己代码的问题,花了很长的时间检查我的代码,然而检查修改后还是一直报错。

我在网上进行搜索,终于找到了一些蛛丝马迹

https://discuss.pytorch.org/t/dataloader-multiprocessing-error-cant-pickle-odict-keys-objects-when-num-workers-0/43951

最后一个人回答说num_workers=0

于是我抱着试试看的心态,把配置文件中的workers_per_gpu改为0,imgs_per_gpu不改变

结果奇迹发生了,可以正常训练了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值