Löschen von tf.data.dataset aus dem GPU -SpeicherPython

Python-Programme
Anonymous
 Löschen von tf.data.dataset aus dem GPU -Speicher

Post by Anonymous »

Ich bin in ein Problem, wenn ich eine Trainingsschleife implementieren kann, die ein tf.data.dataset als Eingabe für ein Keras -Modell verwendet. Mein Datensatz verfügt über ein Element-Spezifikum im folgenden Format: < /p>

Code: Select all

({'data': TensorSpec(shape=(15000, 1), dtype=tf.float32), 'index': TensorSpec(shape=(2,), dtype=tf.int64)}, TensorSpec(shape=(1,), dtype=tf.int32))
im Grunde genommen ist jede Probe als Tupel (x, y) strukturiert, in dem x die Struktur eines Dikters hat, das zwei Tensoren enthält, eines von Daten mit Form (15000, 1) und der andere ein Formindex (2,) (der Index wird während des Trainings nicht verwendet) und Y ist eine einzelne Etikett. < /p>
Die tf.data.dataset wird mit dataset = tf.data.dataset.from_tensor_slices ((x, y)) erstellt, wobei x ist ein Diktat von zwei Schlüssel: < /p>
  • Code: Select all

    data
    : Ein NP -Array von Form (200K, 1500, 1) , index mit
  • Code: Select all

    index
    : Ein NP -Array von Form (200K, 2)
Und Y ist ein einzelnes Array von Form (200k, 1)
Mein Datensatz enthält ungefähr 200K -Trainingsmuster (nach Ausführung von Unterabtastungen) und 200K -Validierungsmuster. Aufrufen tf.data.dataset.from_tensor_slices Ich habe einen Spike in der GPU -Speicherverwendung bemerkt, wobei etwa 16 GB nach dem Erstellen des Trainings tf.dataset und mehr als 16 GB besetzt wurde, und 16 GB mehr, und nach dem Erstellen der Validierung tf.dataset .
Nach dem Erstellen des tf.dataset , ich führe einige Operationen aus (z. B. Shuffle, Batching und Vorabstieg) und Call model.fit . Mein Modell verfügt über etwa 500K trainierbare Parameter. Ich muss in einigen zusätzlichen Daten Schlussfolgerungen ausführen, damit ich mit diesen Daten einen neuen tf.dataset erstelle, wobei ich erneut tf.dataset.from_tensor_slices verwendete. Ich bemerkte jedoch, dass das Training und die Validierung tf.dataset sich weiterhin im GPU -Speicher befinden, was dazu führt, dass mein Skript mit einem aus dem Speicherproblem für das neuen tf.dataset Ich möchte Inferenz ausführen.
Ich habe versucht, Del auf den beiden tf.dataset anzurufen und anschließend gc.collect () aufzurufen, aber ich glaube, das wird nur gelöscht RAM, nicht GPU -Speicher. Außerdem habe ich versucht, einige Operationen zu deaktivieren, die ich bewerbe, wie z. B. Prefetch , und auch mit der Chargengröße zu spielen, aber nichts davon hat funktioniert. Ich habe auch versucht, keras.backend.clear_session () anzurufen, aber es hat auch nicht geeignet, GPU -Speicher zu löschen. Ich habe auch versucht, CUDA aus numba zu importieren, aber aufgrund meiner Installation kann ich ihn nicht verwenden, um den Speicher zu löschen. Gibt es eine Möglichkeit für mich, die tf.data.dataset aus dem GPU -Speicher zu löschen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post