2016-04-29 8 views
13

で「GPUメモリを使い果たした」、私は「2.59GiBを割り当てようmemeoryを使い果たした」というメッセージが表示されましたしかし、それは総メモリが4.69GiBであり、空きメモリが3.22GiBであることを示しています、どうすれば2.59GiBで停止できますか?大規模なネットワークでは、どのようにGPUメモリを管理できますか?それはそれについてではありませんどのように事前に割り当てることメモリどのように解決することができますが、私は2つのCONV層とフルCONECT層とTensorFlowにMNISTのデモを実行したTensorFlow

+0

の可能な複製を(例:http:、あなただけで、各GPUのメモリ総量の40%を割り当てるにTensorFlowを伝えることができます//stackoverflow.com/questions/34199233/how-to-prevent-tensorflow-from-allocating-the-totality-of-a-gpu-memory) –

+0

私は前にそれを見たが、それは事前に割り当て、GPUのメモリを参照し、 – Fangxin

答えて

7

私は、GPUメモリを最大限に活用するだけでどのように関係してたいが、それが起こったのか知っている、ではありません。まず、あなたのGPUを監視することによって実行されたときにどのくらいのメモリを取得するかを確認することができます。たとえば、NVIDIA GPUをお持ちの場合は、watch -n 1 nvidia-smiコマンドで確認できます。 しかし、あなたはGPUメモリの最大割合を設定しなかった場合は、ほとんどの場合、それはほぼ全空きメモリを割り当てます。あなたの問題は、あなたのGPUのための十分なメモリの不足です。 cnnネットワークは完全に重いです。あなたのネットワークにフィードしようとしているときは、あなたの全データでそれをしないでください。低いバッチサイズでこの供給手順を実行してください。

+4

私はかなり大きなネットワーク(CNN + LSTM)を持っています。私の入力データのサイズは、batch_size = 5、(5x396x396) - 3Dボリュームです。したがって、バッチサイズはかなり小さくなります。私は8GBのRAMを搭載したGTX 1070で動作していますが、まだメモリが不足しています。あなたが知っている回避策はありますか?回避策の概要を示すチュートリアルはありますか? –

+0

バッチサイズのためだけではないかもしれません。 'tf.train.shuffle_batch'のような入力バッチを作成するためにキューを使用していますか?その場合は、キューの容量を確認してください。 – Nandeesh

8

GTX 970で小さなCNNを訓練するときにメモリ不足のエラーが発生しました。私は多少のばかげて、TensorFlowに必要に応じてGPUにメモリを割り当てて、問題を解決しました。これは次のPythonコードを使用して達成することができる。

config = tf.ConfigProto() 
    config.gpu_options.allow_growth = True 
    sess = tf.Session(config = config) 

以前、TensorFlowは〜GPUメモリの90%を事前に割り当てることになります。しかし、何らかの未知の理由により、ネットワークのサイズを増やしたときにメモリ不足エラーが発生する可能性があります。上記のコードを使用することで、私はもはやOOMエラーが発生しなくなりました。デフォルトで

+0

これはケラを使用していてもスクリプトで動作します – Hong

2

、TensorFlowは、ほぼすべてのプロセスに見える全てのGPU(CUDA_VISIBLE_DEVICES対象)のGPUメモリをマッピングします。これは、メモリ断片化を低減することによって、デバイス上の比較的貴重なGPUメモリリソースをより効率的に使用するために行われます。

TensorFlowはこれを制御するために、セッション上の2つのコンフィグオプションを提供します。

最初の実行時の割り当てに基づいてのみ限りGPUメモリを割り当てようとallow_growthオプションである。第2の方法は、全体の量の割合を決定per_process_gpu_memory_fractionオプション、ある

config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config, ...)

各可視GPUが割り当てられるべきメモリの量。 [?GPUメモリの全体を割り当てるからtensorflowを防止する方法]

config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.4 session = tf.Session(config=config, ...)

関連する問題