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

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

Post by Guest »

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) < /p>
Mein Datensatz enthält ungefähr 200K -Trainingsmuster (nach Ausführung von Unterabtastungen) und 200K -Validierungsmuster. 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 nach dem Erstellen der Validierung tf.dataset besetzt sind.
Nach dem Erstellen des Tf.Dataset führen ich 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. Zwei tf.dataset von gpu ohne einen Anruf bei keras.backend.clear_Session () , da dies auch das Modell von GPU entfernen würde? Oder ist meine einzige Option, Clear_Session aufzurufen und das Modell für Inferenz von der Festplatte neu zu laden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post