簡體   English   中英

rtx 2070s 無法從設備分配 GPU 內存:CUDA_ERROR_OUT_OF_MEMORY:內存不足

[英]rtx 2070s failed to allocate gpu memory from device:CUDA_ERROR_OUT_OF_MEMORY: out of memory

tf 2.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.7862225/stream_executorflow_exe /cuda/cuda_driver.cc:830] 無法從設備分配 2.78G(2989634304 字節):CUDA_ERROR_OUT_OF_MEMORY:內存不足 2020-01-11 22:19:24.159338:我 tensorflow/platform/stream_default/executor/ 44] 成功打開動態庫 libcublas.so.10.0

限制:7333884724 InUse:5888382720 MaxInUse:6255411968 NumAllocs:1264 MaxAllocSize:2372141056

但我只能使用 5900MB 內存,其余的內存總是無法分配。

我想如果在 rtx 2070s 中使用整個 GPU 內存,我會使用 2 種類型的數據類型(float16、float32)。 所以我通過使用這個代碼得到了一個政策

opt = tf.keras.optimizers.Adam(1e-4)

opt = tf.train.experimental.enable_mixed_precision_graph_rewrite(opt)

盡管如此,分配總是失敗。

Tensorflow 內存管理可能令人沮喪。

主要內容:每當您看到 OOM 時,實際上內存不足,您必須減少模型大小或批量大小。 無論之前分配了多少內存,TF 在嘗試分配足夠的內存時都會拋出 OOM。

一開始,TF 會嘗試分配相當大的內存塊,這相當於整個可用內存的 90-98% - 在您的情況下為 5900MB。 然后,當實際數據開始占用更多時,TF 會另外嘗試分配足夠數量的內存或更多 - 2.78G。 如果這不合適,它會拋出 OOM,就像你的情況一樣。 您的 GPU 無法容納 5.9+2.8Gb。 最后一塊 2.78G 實際上可能比 TF 需要的多一點,但是如果您有多個訓練步驟,無論如何都會在以后使用它,因為所需的最大內存可能會在相同的 Session.run 之間略有波動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM