2017-12-14 6 views
0

の4つのGTX1070でモデルを実行したときに、4つのGPUのメモリが突然いっぱいになりましたが、プログラムを実行しているときにPythonを入力すると、 .. py -job_name = "ps" --task_index = 0、4つのGPUがサブレイヤーがいっぱいに見えますが、私はワーカーを実行するための新しい端末を開いていませんでした。tensorflowを使用すると、sever.join()が

答えて

1

Tensorflowの仕組みです。 GPUで起動すると、ほぼすべてのメモリが割り当てられます。

あなたが試みることができる一つの小さな事はGPUの割り当ての一部を制限することです:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.5) 
sess = tf.Session(config = tf.ConfigProto(gpu_options = gpu_options)) 

しかし、あなたは0.25を置く場合は、それは、(メモリが分割されるかを確認することはできませんので、それはすべてのGPUメモリを制御します1つのGPU上ですべてのメモリを取ることができ、他の構成では0または別の構成)。

+0

ありがとうございました。実際、私はこの方法を試しましたが、まだメモリをすべて使い切っています。私はスーパーバイザを使用しているのですが、理由は分かりませんし、sess = sv.prepare_or_wait_for_session(server.target、config = sess_config)の理由を使用しますか? – Liangzhenlin

0

あなたのコードでserver = tf.train.Server(...)を使用し、設定引数 を渡さなかったため、最近のこの問題が発生した可能性があります。したがって、TFのデフォルトはすべてのGPUのすべてのメモリを占有していました。作業者タスク。

ソリューションは次のようになります。

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.5) 
config = tf.ConfigProto(gpu_options = gpu_options) 
server = tf.train.Server(..., config=config) 

とにかく、それはあなたの役に立てば幸い、私のために働きました。

関連する問題