Tensorflow 内存使用率,无法获取卷积算法。这可能是因为cudnn未能初始化,TF#U FORCE#GPU#U ALLOW#U GROWTH';正确解决问题

Tensorflow 内存使用率,无法获取卷积算法。这可能是因为cudnn未能初始化,TF#U FORCE#GPU#U ALLOW#U GROWTH';正确解决问题,tensorflow,keras,out-of-memory,conv-neural-network,conda,Tensorflow,Keras,Out Of Memory,Conv Neural Network,Conda,当我试图使用tensorflow 2.1.0将一个简单的CNN模型与keras相匹配时,我正在努力解决GPU上的内存使用问题 首先,以下是我使用condas安装的库: tensorflow 2.1.0 cudatoolkit 10.1.243 cudnn 7.6.5 以下是nvidia smi在拟合模型后的结果: +-----------------------------------------------------------------------------+ | NVIDIA-SM

当我试图使用tensorflow 2.1.0将一个简单的CNN模型与keras相匹配时,我正在努力解决GPU上的内存使用问题

首先,以下是我使用condas安装的库:

tensorflow 2.1.0
cudatoolkit 10.1.243
cudnn 7.6.5
以下是nvidia smi在拟合模型后的结果:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  On   | 00000000:08:00.0  On |                  N/A |
|  0%   48C    P2    57W / 250W |   7788MiB /  7979MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1554      G   /usr/lib/xorg/Xorg                           267MiB |
|    0      8141      C   ...da3/envs/tensorflow_gpu_test/bin/python  7443MiB |
+-----------------------------------------------------------------------------+
以下是我正在尝试的模型:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 30, 30, 32)        896       
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32)        0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 13, 13, 64)        18496     
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64)          0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 4, 4, 64)          36928     
_________________________________________________________________
flatten (Flatten)            (None, 1024)              0         
_________________________________________________________________
dense (Dense)                (None, 64)                65600     
_________________________________________________________________
dense_1 (Dense)              (None, 10)                650       
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
当我尝试拟合此模型时,我得到以下错误:

CUDNN ERROR: Failed to get convolution algorithm
我读了很多关于这个错误的帖子,意识到这可能是由于内存错误造成的(据我所知,tensorflow正在快速填充GPU内存,以便cudnn正确初始化)。 因此,我最终通过以下方法得出了解决方案:

os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
在脚本的顶部

所以,我的问题很简单:有没有办法不用这个解决方法就在我的GPU上处理这些内存问题

此外,为了尽可能地保持整洁,我想专门使用conda包管理器来处理cuda、tensorflow和cudnn依赖关系(以避免pip和conda之间的混合)

提前感谢您提供的任何提示,如果您需要任何进一步的信息,请毫不犹豫地询问

编辑:这里有一篇文章可能会帮助其他人使用带有tensorflow的RTX卡:


我不知道如何解决你的问题。我已经建立和训练了许多比你使用GPU的模型大得多的模型,而没有出现这个问题,也不需要使用你使用的工作环境。但是,如果运行的python实例太多,我确实会遇到问题。如果我杀死一些正在运行的实例,问题就会消失。其他实例都没有使用GPU,但问题仍然存在,我无法找出原因。当您遇到这个问题时,是否有多个python实例在运行?在没有其他实例运行和解决方案的情况下尝试,看看问题是否消失。对于另一个问题,我使用pip和conda来安装软件包。我发现,对于tensorflow 2.0,使用conda比使用pip更好,因为使用conda时,工具包和Cudnn会自动安装。

要问您的问题,是的,我在运行单个python实例时遇到了这个问题。当我不使用GPU的Allow_Growth技巧时,即使没有其他GPU内存消耗实例运行,我也会收到错误消息。没有人能告诉我tensorflow中的RTX卡和内存管理是什么(请参阅我在回答中发布的中间链接)?非常感谢!