Consider releasing returned values from instance fns
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Área
- backend, performance
Línea de trabajo
Empieza siguiendo make-instance-fn y cómo se invoca desde py/run-simple-string; después reproduce los ejemplos del dataset para observar la memoria retenida. Determina cómo se mantienen los valores devueltos en el contexto normal de la JVM y verifica que el manejo de referencias de Python pueda liberarlos sin llamadas manuales a System/gc. Se considera terminado cuando los accesos repetidos al dataset ya no acumulan esas referencias de la JVM.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 :-)
- Lenguaje dominante
- Clojure
- Estrellas
- 1.2k
- Forks
- 74
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de clj-python/libpython-clj
-
upgrade to dtype-next 11.xxx Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
clj-python/libpython-clj#280 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
clj-python/libpython-clj#275 · 5 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
clj-python/libpython-clj#273 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
clj-python/libpython-clj#271 · 1 comentario ·
-
"auto flush" tty optionally Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
clj-python/libpython-clj#270 · 1 comentario ·
Todos los issues de clj-python/libpython-clj
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
.Team/Metabot Priority:P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
needs triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
scalar-labs/scalar-jepsen#222 · 1 comentario ·