Consider releasing returned values from instance fns
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Bereich
- backend, performance
Rechercherichtung
Beginne damit, make-instance-fn nachzuverfolgen und zu untersuchen, wie es von py/run-simple-string aufgerufen wird; reproduziere anschließend die Dataset-Beispiele, um den erhaltenen Speicher zu beobachten. Ermittle, wie zurückgegebene Werte im normalen JVM-Kontext gehalten werden, und überprüfe, dass die Python-Referenzverwaltung sie ohne manuelle System/gc-Aufrufe freigeben kann. Als abgeschlossen gilt die Aufgabe, wenn wiederholter Dataset-Zugriff diese JVM-Referenzen nicht mehr ansammelt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
This will collect memory automatically:
(py/run-simple-string "
import torch.utils.data as tud
import torch
class DebugDataset (tud.Dataset):
def __init__(self):
pass
def __len__(self):
return 1000
def __getitem__ (self, i):
return torch.rand(1000, 1000, 1000)
d = DebugDataset()
print(d[0])
print(d[0])")
If the user defines a dataset using clojure and this will cause issues unless the user spams (System/gc):
(let [globals! (py/module-dict (py/add-module "__main__"))]
(.put globals! "DebugDatasetClj" DebugDataset))
(py/run-simple-string "
d = DebugDatasetClj()
print(d[0])
print(d[0])")
The issue is make-instance-fn runs in the normal jvm context so it is keeping jvm references to the produced items. It does not need to do this; the normal python reference keeping system will work just fine. Fixing this in a robust way will require some thought :-)
- Vorherrschende Sprache
- Clojure
- Sterne
- 1.2k
- Forks
- 74
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus clj-python/libpython-clj
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
clj-python/libpython-clj#280 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
clj-python/libpython-clj#275 · 5 Kommentare ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 58/100
clj-python/libpython-clj#273 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
clj-python/libpython-clj#271 · 1 Kommentar ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
clj-python/libpython-clj#270 · 1 Kommentar ·
Alle Issues in clj-python/libpython-clj
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
.Team/Metabot Priority:P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
needs triage
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
scalar-labs/scalar-jepsen#222 · 1 Kommentar ·