Pytorch GPU由于num_workers读取lmdb格式引发的BUG Cannot re-initialize CUDA&TypeError: can't pickle odict_keys

如果你遇到了如下的BUG:

1、"Cannot re-initialize CUDA in forked subprocess. " + msg) RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method

官方解决方案:https://discuss.pytorch.org/t/not-using-multiprocessing-but-getting-cuda-error-re-forked-subprocess/54610

2、C:\ProgramData\Anaconda3\lib\multiprocessing\reduction.py in dump(obj, file, protocol) 58 def dump(obj, file, protocol=None): 59 '''Replacement for pickle.dump() using ForkingPickler.''' ---> 60 ForkingPickler(file, protocol).dump(obj) 61 62 # TypeError: can't pickle odict_keys objects

官方解决方案:https://discuss.pytorch.org/t/dataloader-issues-with-multiprocessing-when-i-do-torch-multiprocessing-set-start-method-spawn-force-true/69275

等等 这似乎是个windows版独有问题,但是我在linux上也有遭遇

你可能可以通过

1、设置工作模式:torch.multiprocessing.set_start_method('spawn')

2、用main包起来

import torch

def main()
    for i, data in enumerate(dataloader):
        # do something here

if __name__ == '__main__':
    main()

3、设置num_workers为0解决

但是使用第三个方法等于向邪恶势力低头

你可以使用linux系统,然后依旧设置>0的num_workers。在dataloader读取数据前,即上述代码第四行前,保证读取的数据是在cpu中,随后再移入gpu中,进行网络的运算。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个报错的原因是缺少`libc10_cuda.so`文件,这是由于在安装PyTorch时使用了CUDA支持,但是缺少了相应的CUDA库文件。解决这个问题的方法有几种。 首先,你可以尝试按照\[2\]中提到的方法,安装PyTorch的CPU版本,这样就不需要CUDA支持,也就不会出现缺少CUDA库文件的问题。 另外,你也可以尝试重新安装PyTorch和相关的库,确保安装过程中没有出现错误。可以使用conda或pip来安装,具体的安装命令可以参考官方文档或者\[2\]中提到的方法。 如果以上方法都没有解决问题,那么可能是由于你的环境和编译时的环境不一致导致的。这种情况下,你可以尝试重新编译安装pytorch3d,确保编译时的环境和你当前的环境一致。具体的编译方法可以参考\[3\]中提到的方法。 总之,解决这个问题的关键是确保安装的PyTorch和相关库的版本和环境是匹配的,以及确保安装过程中没有出现错误。 #### 引用[.reference_title] - *1* [ImportError: libc10.so: cannot open shared object file: No such file or directory](https://blog.csdn.net/beneficial/article/details/127675796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Pytorch】OSError: libc10_cuda.so: cannot open shared object file: No such file or directory](https://blog.csdn.net/yuxeaotao/article/details/124015817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pytorch3d安装注意事项:ImportError: libcudart.so.10.1: cannot open shared object file: No such file ...](https://blog.csdn.net/YnullW/article/details/126961883)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值