Python rtx 2070s无法从设备分配gpu内存:CUDA\U错误\U内存不足\U内存不足:内存不足

Python rtx 2070s无法从设备分配gpu内存:CUDA\U错误\U内存不足\U内存不足:内存不足,python,tensorflow,Python,Tensorflow,TF2.0.0-gpu CUDA 10.0 RTX2070super 嗨。关于分配gmemory,我遇到了一个问题。内存的初始分配是7GB,如下所示 已创建TensorFlow设备(/job:localhost/replica:0/task:0/device:GPU:0,内存6994 MB) 2020-01-11 22:19:22.983048:I tensorflow/stream_executor/platform/default/dso_loader.cc:44]已成功打开动态库libcu

TF2.0.0-gpu CUDA 10.0 RTX2070super

嗨。关于分配gmemory,我遇到了一个问题。内存的初始分配是7GB,如下所示

已创建TensorFlow设备(/job:localhost/replica:0/task:0/device:GPU:0,内存6994 MB)

2020-01-11 22:19:22.983048:I tensorflow/stream_executor/platform/default/dso_loader.cc:44]已成功打开动态库libcudnn.so.7 2020-01-11 22:19:23.786225:I tensorflow/stream_executor/cuda/cuda_driver.cc:830]未能从设备分配2.78G(2989634304字节):cuda_错误\u内存不足:内存不足 2020-01-11 22:19:24.159338:I tensorflow/stream_executor/platform/default/dso_loader.cc:44]成功打开动态库libcublas.so.10.0

限额:7333884724 因纽斯:5888382720 最大值:625541968 努马洛斯:1264 MaxAllocSize:2372141056

但我只能使用5900MB内存,剩余内存总是无法分配

我猜如果RTX2070使用整个gpu内存,我会使用两种类型的数据类型(float16,float32)。所以我用这些代码得到了一个策略

opt=tf.keras.optimizers.Adam(1e-4) opt=tf.train.experimental.enable\u mixed\u precision\u graph\u rewrite(opt)
不过,分配总是失败。

Tensorflow内存管理可能会令人沮丧

主要收获:每当你看到OOM时,实际上没有足够的内存,你要么减少模型大小,要么减少批量大小。TF在尝试分配足够的内存时会抛出OOM,而不管以前分配了多少内存


一开始,TF会尝试分配相当大的内存块,相当于整个可用内存的90-98%——在您的情况下是5900MB。然后,当实际数据开始占用更多的内存时,TF将另外尝试分配足够的内存量或稍多的内存—2.78G。如果这不合适的话,它会抛出OOM,就像你的情况一样。您的GPU无法安装5.9+2.8Gb。2.78G的最后一块实际上可能比TF需要多一点,但如果您有多个训练步骤,它无论如何会在以后使用,因为所需的最大内存可能会在相同的会话之间波动。运行。请更好地表述您的问题。一种方法是从您尝试过的代码的足够详细信息开始,然后以一种好的格式粘贴完整的错误跟踪。请参阅stackoverflow指南,了解如何格式化()和(),谢谢。但是我通过将tensorflow 2.0.0升级到tensorflow 2.1.0解决了这个问题