Página visible a externos sin autenticación ====== Ejecución de modelos en nodos de cómputo ====== Cuando ejecutas un modelo, debes tener en cuenta que **los modelos se ejecutan en nodos volátiles**, mientras que el nodo de control o login es persistente. Recuerda colocar lógica para guardar los resultados antes de finalizar. ===== Almacenamiento y buenas prácticas ===== ==== ¿Hay algún límite en la cantidad de datos que puedo almacenar en el nodo control/login para el modelo? ==== Sí lo hay. Se recomienda que **no guardes directamente archivos generados por el programa que no necesites**. Una buena práctica es: * Guardar solo el **mejor modelo**. * Guardar las **métricas** de los modelos final e intermedios. ===== Ciclo de vida de un trabajo ===== ==== ¿Qué maneras hay de que un trabajo termine? ==== En realidad, solo hay dos: - Que cumplas la **cuota de tiempo**. - Que **finalice el programa**. ==== ¿Qué ocurre si se cae el nodo? ==== Los programas encolados se restauran y **Slurm vuelve a ejecutar el programa** asignado en cada nodo. ==== ¿Por dónde continúa un trabajo si finaliza por límite de tiempo y lo vuelvo a lanzar? ==== El programa **se ejecuta desde cero**. Para no perder avance debes colocar //checkpoints// y hacer que tu programa continúe por donde lo dejó. ==== Los checkpoints suenan muy bien, pero ¿en realidad continúa por donde lo dejó? ==== No, depende de cómo programes el checkpoint. Normalmente continúa por la **última iteración de entrenamiento** que estuviera haciendo, **empezando de nuevo dicha fase**. ===== Seguimiento y control ===== ==== ¿Cómo sé cuánto le queda para terminar a un job? ==== Slurm no controla cuándo finaliza tu código, pero puedes realizar un seguimiento y control que se imprima por pantalla. En el archivo ''.out'' podrás seguir la evolución. ==== Voy a entrenar muchos modelos juntos con varias configuraciones. ¿Cómo sé cuándo terminan? ==== Es recomendable usar un archivo **JSON** que contenga la lista de modelos procesados/sin procesar. De forma que, si en una ejecución no han finalizado, este archivo te sirva para ver por dónde se quedó. ==== No sé qué tiempo ponerle a un job ==== Es una estimación complicada, pero si has seguido las indicaciones anteriores, coloca un **tiempo prudencial, aunque te quedes corto**. Si al finalizar el trabajo no ha terminado lo puedes volver a lanzar y continuará casi por donde lo dejó. ===== Entornos y resiliencia ===== ==== Cada vez que despliego un entorno tengo que instalar un entorno virtual y las dependencias. Solo eso puede tardar 10 minutos. ¿Podría ejecutar desde el nodo ctrl el entorno en un job? ==== Se podría, pero **no es recomendable**. Montar el entorno virtual en la máquina donde no se ejecuta el modelo es ineficiente. Los 10 minutos que te ahorras son horas que puedes perder. ==== Mi nodo se ha caído y he perdido todo el trabajo ==== Debes programar tu código para que sea **resiliente a caídas**: * Utiliza **checkpoints** de resultados. * Apóyate de **modelos intermedios** que pases al nodo persistente. * En el código de un ''sbatch'' encontrarás cómo cargar esos artefactos intermedios que te permiten continuar la ejecución.