Code: Select all
({'data': TensorSpec(shape=(15000, 1), dtype=tf.float32), 'index': TensorSpec(shape=(2,), dtype=tf.int64)}, TensorSpec(shape=(1,), dtype=tf.int32))
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>
- : Ein NP -Array von Form (200K, 1500, 1) , index mit
Code: Select all
data
- : Ein NP -Array von Form (200K, 2)
Code: Select all
index
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?