这是一个非常奇怪的bug。环境:tf 1.12+cuda9.0+cudnn 7.5+单RTX 2080
今天我试着在我的新设备上训练YOLO V3网络。批量大小为4。一开始一切都很顺利,训练照常开始,我可以看到训练过程中损失的减少。
但是,在35轮左右,它报告了一条消息:
2020-03-20 13:52:01-404576:E tensorflow/stream_executor/cuda/cuda_event.cc:48]轮询事件状态时出错:无法查询事件:cuda_Error_ILLEGAL_ADDRESS:遇到非法内存访问2020-03-20 13:52:01.0404908:F tensorflow/core/common_runtime/gpu/gpu_event_mgr.cc:274]意外事件状态:1
并退出列车进程。
我试过好几次了。它是随机发生的。可能在训练过程开始后30分钟或几个小时。
但如果我将批量大小更改为2。它可以成功训练。
那么为什么会发生这种情况呢?如果我的环境不适合或不适合RTX 2080,那么这个错误应该发生在列车运行的早期,但在中期。我的yolo网络中的层在一开始都是可以训练的,所以在训练过程中没有任何变化。为什么它能在第一轮比赛中正确训练,但在中间却失败了?为什么小批量可以成功训练?
我现在该怎么办?我能想到的解决方案是:1:编译cuda 10+cudnn 7.5中的tf 1.12,然后重试。2:也许更新tensorflow和cuda?所有这些都花了很多钱。
检查Cuda/Cudnn/Driver版本是否适合您的卡https://docs.nvidia.com/deeplearning/cudnn/support-matrix/index.html#cudnn-版本-764-765。
如果上面的检查结果正常,那么这个问题可能是因为@ChrisM评论的GPU卡坏了。