Tensorflow 内存使用率,无法获取卷积算法。这可能是因为cudnn未能初始化,TF#U FORCE#GPU#U ALLOW#U GROWTH';正确解决问题
当我试图使用tensorflow 2.1.0将一个简单的CNN模型与keras相匹配时,我正在努力解决GPU上的内存使用问题 首先,以下是我使用condas安装的库: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
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卡和内存管理是什么(请参阅我在回答中发布的中间链接)?非常感谢!