Selección de los recursos óptimos del servidor para hacer tu trabajo informático de manera responsable#
🔍 RESUMEN
Preguntas
¿Qué pasa en la nube cuando ejecuto un servidor?
¿Cuántos núcleos de CPU y RAM necesito?
¿Cómo puedo restablecer el entorno predeterminado del servidor de un usuario?
¿Cómo puedo tomar el control del servidor de un usuario para solucionar problemas?
Objetivos
Seleccionar los recursos del servidor más apropiados para un trabajo computacional
Detener y reiniciar el servidor de un usuario
Apoyar a un usuario del hub tomando el control de su servidor
Opciones del servidor JupyterHub#
Un hub proporciona computación interactiva en la nube para apoyar los flujos de trabajo de investigación y educación para tu comunidad. Los recursos informáticos, tales como el número de núcleos CPU y RAM, se pueden proporcionar bajo demanda para permitir a los usuarios aumentar o disminuir su trabajo según sea necesario.
Una vez que un usuario inició sesión en el hub, puede lanzar un servidor configurado con un número determinado de núcleos de CPU y RAM.
En este ejemplo, veremos las opciones de servidores disponibles en el Hub de muestra comunitario de 2i2c.
Nota
Las opciones de servidores que presentamos pueden variar en diferentes hubs. Sin embargo, el número de núcleos de CPU y RAM disponibles siempre se indica claramente y los principios para seleccionar los recursos óptimos de un servidor para el trabajo computacional que se describen en esta sección aún pueden aplicarse.
Aquí presentamos cuatro opciones de servidores
Pequeño compartido: 1-4 CPU, 8-32 GB de RAM
Pequeño: 4 CPU, 32 GB de RAM
Mediano: 16 CPU, 128 GB de RAM
Grande: 64 CPU, 512 GB RAM.
En el próximo episodio exploraremos el menú desplegable Imágenes Administración de imágenes de software.
Ejercicio: Computación local vs. en la nube - ¿Cuál es la diferencia?
¿Cómo se compara el número de CPUs y RAM disponibles en el hub con tu computadora personal? ¿Qué impacto tiene el acceso a estos recursos en la nube en el trabajo de tu usuario?
Solución
En general, tener más núcleos de CPU disponibles en la nube permiten hacer más trabajo en paralelo y disminuir el tiempo para hallar la solución (un programa limitado por CPU). La computación paralela es cuando varios núcleos de CPU pueden usarse simultáneamente para resolver un problema computacional ejecutando la misma tarea de procesamiento en varios conjuntos de datos diferentes.
Sin embargo, usar más núcleos de CPU no mejora automáticamente el rendimiento, ya que la velocidad a la que se accede a la información en la RAM puede convertirse en un factor limitante (un programa limitado por memoria), o simplemente el programa está diseñado para ejecutase en serie y no en paralelo.
Uso responsable de los recursos de la nube#
Al seleccionar una opción de servidor, un usuario ejecuta remotamente un servidor que es proporcionado por un proveedor comercial, como Google Cloud, AWS o Microsoft Azure. La selección de un servidor más grande implicara un mayor costo financiero, así como un mayor costo ambiental. Por lo tanto, es importante utilizar los recursos en la nube de forma responsable para maximizar la eficiencia y minimizar las emisiones de carbono.
Las prácticas recomendadas para usar los recursos en la nube de manera responsable incluyen
cerrar el servidor en la nube tan pronto como termines tu trabajo
seleccionar la opción del servidor que tenga el número mínimo de núcleos de CPU y RAM necesarios para llevar a cabo tu trabajo
ejecutar el código de manera eficiente y desarrollar software de investigación sostenible siempre que sea posible, por ejemplo, prueba tu programa primero antes de escalarlo a un trabajo más grande.
Ejercicio: Optimiza los recursos del servidor para tu trabajo
En cada escenario, selecciona la opción que utilice mejor los siguientes recursos del servidor: Pequeño compartido: 1-4 CPU, 8-32 GB RAM, Pequeño: 4 CPU, 32 GB RAM, Mediano: 16 CPU, 128 GB RAM, Grande: 64 CPU, 512 GB RAM.
a. Ejecutar un proceso de software donde cada tarea requiere 2GB de RAM y 60 tareas en total.
b. Crear documentación y editar archivos de texto.
c. Preprocesar un conjunto de datos que consta de 10.000 imágenes, donde cada imagen tiene un tamaño de 16 MB.
Solución
a. Mediano: 16 CPU, 128 GB RAM - La memoria requerida es de \(60 \times 2 \, \mathrm{GB} = 120 \, \mathrm{GB}\), por lo tanto la RAM de una máquina mediana es suficiente.
b. Pequeño compartido: 1-4 CPU, 8-32 GB RAM - Esta no es una tarea de computación intensiva, de modo que una máquina compartida con otros usuarios es suficiente.
c. Grande: 64 CPU, 512 GB RAM - El tamaño total del conjunto de datos es de \(10000 \times 16 \, \mathrm{MB} = 160 000 \, \mathrm{MB} = 160 \, \mathrm{GB}\), lo cual es demasiado grande para que la máquina Mediana mantenga en la memoria a la vez. De manera alternativa, podrías dividir el conjunto de datos y preprocesar cada lote en una máquina más pequeña, lo que sería más lento. A menudo, el preprocesamiento de imágenes es un proceso limitado por CPU en flujos de trabajo con aprendizaje profundo, de modo que una máquina Grande con más núcleos CPU es mejor para el rendimiento.
Desafío
Sofía quiere ejecutar un nuevo programa pero no conoce los requisitos máximos de la memoria. Trató de compilarlo en una máquina pequeña compartida, donde se compiló inicialmente, pero después se quedó sin memoria y la ejecución falló. ¿Qué configuración debería elegir Sofía en el servidor para tratar de ejecutar nuevamente el programa?
Solución
Pequeño: 4 CPU, 32 GB RAM - La tarea falló en una máquina pequeña compartida, nuestra recomendación es que aumente el tamaño de manera incremental si no está segura de los recursos que necesita.
Detención automática del servidor#
Los hubs detienen automáticamente los servidores después de un periodo de inactividad para mejorar la utilización de los recursos y protegerse de los costos excesivos en la nube. Esto ocurre después de que el usuario está inactivo durante 1 hora.
Truco
La ejecución de una parte de código de larga duración con un núcleo en ejecución no es reconocido como actividad del usuario en el servidor y por lo tanto el proceso finaliza después de 1 hora. Este es un caso de uso atípico de la computación interactiva en un hub, pero este límite puede reconfigurarse para un hub en particular si lo solicitas comunicándote con el soporte de 2i2c.
Apagar un servidor como usuario#
Un usuario debería apagar su servidor en el hub una vez que haya terminado su trabajo. Esto se puede hacer manualmente aplicando los siguientes pasos.
(JupyterLab) Ve a File (Archivo) > Hub Control Panel (Panel de control del Hub), o alternativamente (JupyterLab y RStudio) consulta la URL
https://<url-de-tu-hub>.2i2c.cloud/hub/home
En el Panel de control del Hub, haz clic en el botón (Detener mi servidor)
Administración del servidor de otro usuario como un Campeón o Campeona del Hub#
Los Campeones y Campeonas del Hub tienen acceso a un panel de administración desde el Panel de control del Hub (o la URL https://<url-de-tu-hub>.2i2c.cloud/hub/admin
).
Prudencia
Un gran poder conlleva una gran responsabilidad.
—El hombre araña
Llevar a cabo acciones administrativas como un Campeón o Campeona del Hub debe hacerse con mucho cuidado. Respeta la privacidad de los demás y piensa antes de actuar.
Detener y reiniciar el servidor de un usuario#
A veces el servidor de un usuario puede dejar de responder, por ejemplo, debido a problemas relacionados con el software que se instaló automáticamente mediante pip
y/o conda
. Los Campeones y Campeonas del Hub pueden restaurar los servidores del usuario a su entorno predeterminado si detienen y reinician su servidor haciendo clic en ![Start Server](. /media/episodes/server_resources/manage-2.png)(Iniciar el servidor) y después presionando el botón (Iniciar el servidor) que se encuentra junto al nombre del usuario en el panel de administración.
Nota
Los paquetes de software que se autoinstalan en el hub son temporales y se eliminan cada vez que un servidor se apaga para mantener el entorno de software limpio de manera predeterminada. El software persiste entre las sesiones mediante Administración de imágenes de software, las cuales se cubrirán en el próximo episodio.
Acceso al servidor de un usuario#
Los Campeones y Campeonas del Hub pueden tomar el control del servidor de un usuario que se está ejecutando haciendo clic en el botón (Acceder al servidor) que se encuentra junto al nombre del usuario en el panel de administración.
Desde ahí un Campeón o Campeona del Hub puede navegar en el servidor como si fuera el propio usuario, lo cual es útil para la detección y resolución problemas.
Ejercicio: Administración del servidor del usuario
¿Las siguientes afirmaciones son Verdaderas o Falsas?
a. Cerrar la ventana del navegador es suficiente para detener un servidor.
b. Detener un servidor cuando un usuario termina su trabajo reduce los costos y las emisiones de carbono.
c. Detener y reiniciar un servidor elimina los paquetes pip
y conda
instalados por el usuario y lo restaura a un estado limpio.
d. El servidor de un usuario seguirá ejecutándose indefinidamente a menos que alguien lo detenga.
Solución
a. Falso - El servidor seguirá ejecutándose a menos que se haga clic en el botón Stop my server (Detener mi servidor) o se detendrá automáticamente de manera predeterminada después de 1 hora de inactividad.
b. Verdadero - Ejecutar un servidor utiliza recursos computacionales que son facturados por el proveedor de la nube y consume energía.
c. Verdadero - A veces los paquetes instalados por el usuario pueden introducir conflictos de dependencia de software que se pueden eliminar reiniciando el servidor.
d. Falso - Los servidores se detienen de manera predeterminada después de 1 hora de inactividad. Si un usuario requiere un proceso de larga duración que exceda dicho periodo, entonces debe solicitar una ampliación de este límite mediante su Campeón o Campeona del Hub.
🔑 PUNTOS CLAVE
Los usuarios pueden lanzar servidores con una gran variedad de recursos disponibles, a saber el número de núcleos del CPU y la RAM.
Es importante utilizar los recursos en la nube de manera responsable para maximizar la eficiencia y minimizar las emisiones de carbono.
Los Campeones y Campeonas del Hub pueden detener, reiniciar y tomar el control del servidor de un usuario para solucionar problemas.