训练 yolov5 导致 CUDNN_STATUS_NOT_INITIALIZED 错误
Posted
技术标签:
【中文标题】训练 yolov5 导致 CUDNN_STATUS_NOT_INITIALIZED 错误【英文标题】:Training yolov5 causes a CUDNN_STATUS_NOT_INITIALIZED error 【发布时间】:2021-06-06 05:48:59 【问题描述】:我正在关注this guide,但没有进行任何更改。我正在使用带有深度学习 ami 的 aws 服务器:Deep Learning AMI (Ubuntu 18.04) Version 40.0
我尝试将自定义数据集更改为 coco 数据集和自定义数据集的一小部分。 批量大小似乎无关紧要,CUDA 和其他驱动程序似乎可以工作。
批处理开始训练过程时抛出异常。这是完整的堆栈跟踪:
Logging results to runs/train/exp66
Starting training for 5 epochs...
Epoch gpu_mem box obj cls total targets img_size
0%| | 0/22 [00:00<?, ?it/s]
Traceback (most recent call last):
File "train.py", line 533, in <module>
train(hyp, opt, device, tb_writer, wandb)
File "train.py", line 298, in train
pred = model(imgs) # forward
File "/usr/local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/ubuntu/yolov5/models/yolo.py", line 121, in forward
return self.forward_once(x, profile) # single-scale inference, train
File "/home/ubuntu/yolov5/models/yolo.py", line 137, in forward_once
x = m(x) # run
File "/usr/local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/ubuntu/yolov5/models/common.py", line 113, in forward
return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1))
File "/usr/local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/ubuntu/yolov5/models/common.py", line 38, in forward
return self.act(self.bn(self.conv(x)))
File "/usr/local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/usr/local/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 399, in forward
return self._conv_forward(input, self.weight, self.bias)
File "/usr/local/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 395, in _conv_forward
return F.conv2d(input, weight, bias, self.stride,
RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
【问题讨论】:
【参考方案1】:我不知道为什么,但似乎 torch 1.8 是基于旧版本的 cuda 构建的。 此外,由于 pytorch 有自己的 cuda,它似乎并不关心你的机器上有什么版本。 更改 torch 版本(并匹配兼容的 tochvision)解决了我的问题。
在我的情况下,我做了如下:
-
在“requirements.txt”中更改了两行:
火炬==1.7.1
torchvision==0.8.2
-
使用 python=3.8 创建全新的 conda 环境
激活环境
修改文件中的安装要求:
$ pip install -r requirements.txt
希望对某人有所帮助:)
【讨论】:
【参考方案2】:我使用 conda 修复了它,我克隆了图像附带的 pytorch 环境,它运行良好。不过我还是不知道原因。
【讨论】:
【参考方案3】:我在尝试在脚本中训练 yolov5 时遇到了类似的情况。我发现升级到 torch==1.9.0 和 torchvision==0.10.0 也可以(如果您不想如上所述降级)
【讨论】:
以上是关于训练 yolov5 导致 CUDNN_STATUS_NOT_INITIALIZED 错误的主要内容,如果未能解决你的问题,请参考以下文章