我正在使用 anaconda python 3.7 和tensorflow 2.1以及cuda 10.1和cudnn 7.6.5,并尝试运行retinaset(https://github.com/fizyr/keras-retinanet):
python keras_retinanet/bin/train.py --freeze-backbone --random-transform --batch-size 8 --steps 500 --epochs 10 csv annotations.csv classes.csv
Run Code Online (Sandbox Code Playgroud)
下面是由此产生的错误:
Epoch 1/10
2020-02-10 20:34:37.807590: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2020-02-10 20:34:38.835777: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-02-10 20:34:39.753051: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2020-02-10 20:34:39.776706: W tensorflow/core/common_runtime/base_collective_executor.cc:217] BaseCollectiveExecutor::StartAbort Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if …
Run Code Online (Sandbox Code Playgroud) 这个问题可以与我的另一个问题相关查看。
我尝试并行运行多个机器学习进程(使用 bash)。这些是使用 PyTorch 编写的。在一定数量的并发程序(我的例子中是 10 个)之后,我收到以下错误:
RuntimeError: Unable to find a valid cuDNN algorithm to run convolution
Run Code Online (Sandbox Code Playgroud)
正如这个答案中提到的,
...发生这种情况的原因可能是达到了 VRAM 内存限制(从错误消息来看,这相当不直观)。
对于我的 PyTorch 模型训练案例,减小批量大小有帮助。您可以尝试此操作,或者减小模型大小以消耗更少的 VRAM。
我尝试了此处提到的解决方案,以强制执行每个进程的 GPU 内存使用限制,但此问题仍然存在。
对于单个进程或较少数量的进程,不会出现此问题。由于同一时刻只有一个上下文运行,为什么这会导致内存问题?
使用/不使用 MPS 时都会出现此问题。我认为 MPS 可能会出现这种情况,但其他情况则不然,因为 MPS 可能会并行运行多个进程。