web-dev-qa-db-ja.com

KerasのRunOptionsにreport_tensor_allocations_upon_oomを追加する方法

Kerasを使用してGPUでニューラルネットをトレーニングしようとしていますが、「リソースが使い果たされました:テンソル割り当て時のOOM」エラーが発生しています。割り当てようとしている特定のテンソルはそれほど大きくないので、以前のテンソルがほとんどすべてのVRAMを消費すると仮定します。エラーメッセージには、これを示唆するヒントが付属しています。

ヒント:OOMが発生したときに割り当てられたテンソルのリストを表示する場合は、report_tensor_allocations_upon_oomを現在の割り当て情報のRunOptionsに追加します。

それはいいように聞こえますが、どうすればいいですか? RunOptionsはTensorflowのように見えますが、それについて見つけることができる小さなドキュメントは「セッション」に関連付けられています。私はKerasを使用しているため、Tensorflowは抽象化レイヤーの下に隠され、そのセッションはその下の別のレイヤーの下に隠されています。

このオプションが有効になるように設定するために、すべての下を掘るにはどうすればよいですか?

8
dspeyer

見た目ほど難しくありませんが、知っておく必要があるのは、 documentation に従って、model.compileに渡される** kwargsパラメーターがsession.runに渡されることです。

次のようなことができます:

import tensorflow as tf
run_opts = tf.RunOptions(report_tensor_allocations_upon_oom = True)

model.compile(loss = "...", optimizer = "...", metrics = "..", options = run_opts)

また、session.runが呼び出されるたびに直接渡す必要があります。

5

現在、model.compileにオプションを追加することはできません。参照: https://github.com/tensorflow/tensorflow/issues/19911

0
Richard