相关疑难解决方法(0)

Tensorflow 2.1 无法获取卷积算法。这可能是因为 cuDNN 初始化失败

我正在使用 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)

tensorflow retinanet

2
推荐指数
1
解决办法
1万
查看次数

在 GPU 上运行多个进程时的内存问题

这个问题可以与我的另一个问题相关查看。

我尝试并行运行多个机器学习进程(使用 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 可能会并行运行多个进程。

cuda gpu gpgpu nvidia pytorch

0
推荐指数
1
解决办法
979
查看次数

标签 统计

cuda ×1

gpgpu ×1

gpu ×1

nvidia ×1

pytorch ×1

retinanet ×1

tensorflow ×1