Closed fbientrigo closed 2 months ago
En la carpeta de la libreria, encontrandose dentro de lib/grav_lens/testing/
se encuentra a;adido lo que viene a ser el memory_dataloader.py
el cual comparó la vieja implementación y la nueva en terminos de memoria.
La nueva implementación se encarga de solo crear el generator, por tanto el tiempo de ejecución que se observaba en la versión antigua habría de verse reflejado en el nuevo metodo.
Sin embargo si contamos con que buscar dentro de un arreglo es una operación O(N)
, en el metodo antiguo tenemos
O(N)
en tiempo y en memoriaO(N)
en tiempoMientras que el metodo nuevo al ser un generador, unicamente itera en tiempo en los archivos con una memoria fija O(1)
y el proceso de carga total viene a ser O(N) en tiempo, pero sigue constante O(1)
en memoria.
Vamos a
final\grav_lens\utils
, donde se encuentra el archivo principal de manejo de datos, llamadoload_dataset.py
. A continuación, explicaremos cómo instrumentar el código para identificar posibles sobrecargas de memoria y optimizar su uso.1. Instalación de Dependencias
Primero, asegúrate de tener instaladas las herramientas necesarias para monitorear el uso de memoria en Python:
2. Instrumentación del Código con memory-profiler
Abre load_dataset.py y añade decoradores de memory-profiler en las funciones que consideres críticas en términos de uso de memoria. A continuación, un ejemplo de cómo hacerlo:
Este decorador permitirá monitorear el uso de memoria de esta función específica.
3. Ejecutar el Perfilador de Memoria
Guarda el archivo y ejecuta el script usando memory-profiler para generar un perfil del uso de memoria:
y ver con
Quest
Crear un documento simple
.md
(markdown) que explique los resultados explicados de mprof, almacenandolo en una carpeta en el root llamada06_memory
tracemalloc
para python, puede ser una buena alternativa si algo no funciona