it-swarm.com.de

Wie füge ich report_tensor_allocations_upon_oom zu RunOptions in Keras hinzu?

Ich versuche, ein neuronales Netz auf einer GPU mit Keras zu trainieren, und erhalte den Fehler "Ressource erschöpft: OOM beim Zuweisen von Tensor". Der spezifische Tensor, den er zuzuteilen versucht, ist nicht sehr groß, daher gehe ich davon aus, dass ein früherer Tensor fast das gesamte VRAM verbraucht hat. Die Fehlermeldung enthält einen Hinweis, der Folgendes angibt:

Hinweis: Wenn Sie eine Liste der zugewiesenen Tensoren sehen möchten, wenn OOM auftritt, fügen Sie für aktuelle Zuweisungsinformationen report_tensor_allocations_upon_oom zu RunOptions hinzu.

Das hört sich gut an, aber wie mache ich das? RunOptions scheint ein Tensorflow-Ding zu sein, und die wenig Dokumentation, die ich dafür finden kann, verbindet es mit einer "Sitzung". Ich verwende Keras, also ist Tensorflow unter einer Abstraktionsebene und seinen Sitzungen unter einer anderen Ebene darunter verborgen.

Wie kann ich unter alles graben, um diese Option so einzustellen, dass sie wirksam wird?

7
dspeyer

Es ist nicht so schwer, wie es scheint, was Sie wissen müssen, ist, dass gemäß der Dokumentation der an model.compile übergebene ** kwargs-Parameter an session.run übergeben wird.

So kannst du so etwas tun:

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

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

Und es sollte bei jedem Aufruf von session.run direkt weitergegeben werden.

3

Derzeit ist es nicht möglich, die Optionen zu model.compile hinzuzufügen. Siehe: https://github.com/tensorflow/tensorflow/issues/19911

0
Richard