2
私は、最近のモデルはメモリの2.37Gを割り当てることができなかったことを警告していることに気付きました:モデルがメモリ容量を超えたときにテンソルフローがGPUメモリをスワッピングするのですか?
W tensorflow/core/common_runtime/bfc_allocator.cc:217] Ran out of memory trying to allocate 2.37GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory is available.
しかし、私のGPUが、この中に大規模なモデルに比べてほぼ100%(小さな入力で動作しています場合)。
これを正しく読んでいると、自分のモデルがGPUメモリに完全に収まらないと思われます。しかし、GPUが100%で動作しているので、私はテンソルフローがGPUメモリ内外のグラフ要素を非同期にインテリジェントに交換しているとも仮定していますか?
私はちょうどそこのフードの下で何が起こっているのか知りたいだけです。その後、
run_metadata = tf.RunMetadata()
sess = tf.Session(config=config)
sess.run(train_step,
feed_dict={x: batch_xs,
y_: batch_ys},
options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE),
run_metadata=run_metadata)
trace = timeline.Timeline(step_stats=run_metadata.step_stats)
with open('timeline.ctf.json', 'w') as trace_file:
trace_file.write(trace.generate_chrome_trace_format())
とchrome://timeline
界面から発生timeline.ctf.jsonを開き、あなたは何が起こっているかが表示されます:
'while_loop'のような機能的な操作では、GPUメモリをCPUにスワップし、githubで' swap_memory'を検索します。私はあなたが機能的な操作を使用していないときに起こっているメモリスワップを認識していません –