Descripción de la integración de Slurm con Azure CycleCloud
Al final de esta unidad, debería poder describir cómo se integra Slurm con Azure CycleCloud y las áreas de integración clave entre Slurm y Azure CycleCloud.
Qué es Azure CycleCloud
Azure CycleCloud es una herramienta para implementar clústeres de HPC en Azure y administrar sus cargas de trabajo. Ofrece una amplia gama de funcionalidades de HPC, entre las que se incluyen las siguientes:
- Implementación basada en plantillas de clústeres de HPC: Azure CycleCloud proporciona plantillas personalizables integradas para implementar los programadores de clúster más comunes, incluidos Slurm, OpenPBS, LSF, Grid Engine y HTCondor. En el repositorio de GitHub de CycleCloud están disponibles muchas otras plantillas predefinidas, que puede importar en la instancia de Azure CycleCloud.
- Escalado manual y automatizado de nodos de clúster: Azure CycleCloud permite el escalado horizontal manual y automatizado de clústeres administrados según la longitud de las colas de trabajos y las directivas de gobernanza. También ofrece una API REST para desarrollar adaptadores de escalado automático para programadores personalizados.
- Configuración del nodo a través de scripts cloud-init: Azure CycleCloud admite la administración de configuración basada en scripts personalizados que se ejecutan en nodos de clúster administrados antes de cualquier otra tarea de configuración específica de CycleCloud.
- Administrar el almacenamiento de clúster interno y externo: Azure CycleCloud permite configurar el almacenamiento del clúster mediante el aprovisionamiento, el montaje y el formato de discos administrados de Azure y del almacenamiento conectado a la red, como servidores NFS o clústeres BeeGFS.
- Supervisión, registro y alertas: Azure CycleCloud ofrece supervisión incorporada de los clústeres y se integra con Azure Monitor. También es posible almacenar datos de registro de clústeres de CycleCloud en Log Analytics y crear paneles de métricas personalizados. Además, se pueden crear alertas personalizadas y notificaciones por correo electrónico de modo que las desencadenen los datos de telemetría. Todas las actividades de Azure CycleCloud se registran.
- Autenticación y autorización: Azure CycleCloud admite la autenticación local integrada. Como alternativa, puede integrarlo con Active Directory Domain Services (AD DS) o con otros proveedores de identidades basados en el protocolo ligero de acceso a directorios (LDAP). De forma predeterminada, los usuarios definidos localmente tienen acceso al sistema operativo en los nodos de clúster administrados, pero es posible administrar los usuarios del clúster por separado. Para administrar los recursos en una suscripción de Azure, puede usar una entidad de servicio o una identidad administrada de Microsoft Entra.
- Controles e informes de costos casi en tiempo real: Azure CycleCloud realiza un seguimiento del uso del clúster y calcula el costo correspondiente. Esta característica le permite configurar alertas de presupuesto que se desencadenen cuando el costo del clúster supere el importe monetario que haya especificado. Azure CycleCloud también se integra con Microsoft Cost Management.
Azure CycleCloud y Azure Batch
Azure CycleCloud y Azure Batch son servicios de Azure diseñados para administrar y ejecutar cargas de trabajo informática paralelas y de alto rendimiento a gran escala en la nube. Estos servicios difieren en sus audiencias de destino, conjuntos de características y casos de uso.
Azure CycleCloud se centra en la creación, administración y optimización de clústeres de HPC y HTC en Azure. CycleCloud tiene como destino cargas de trabajo de HPC y HTC específicas del dominio, como dinámicas de fluidos computacionales, genómica y simulaciones de ingeniería. CycleCloud admite varios programadores de clúster como Slurm, Grid Engine, LSF y HTCondor. También se integra con servicios de Azure como Azure Blob Storage, Azure Managed Disks y Azure NetApp Files para soluciones de almacenamiento.
Azure Batch es un servicio administrado diseñado para ejecutar cargas de trabajo de procesamiento paralelo y por lotes a gran escala en Azure. Azure Batch es adecuado para varios tipos de tareas de procesamiento por lotes, como el procesamiento de datos, la representación y el entrenamiento del modelo de Machine Learning. Azure Batch se encarga de administrar recursos, programar tareas y escalar nodos de proceso en función de los requisitos de carga de trabajo.
Azure CycleCloud está diseñado específicamente para cargas de trabajo HPC y HTC con compatibilidad con varios programadores de clústeres, mientras que Azure Batch es más generalista y admite varios tipos de tareas de procesamiento paralelo y por lotes.
Descripción de las particiones HPC y HTC
Una partición de Azure CycleCloud es una agrupación lógica de nodos de proceso con una configuración, un propósito o un tipo de carga de trabajo específicos. Los términos partición HPC y partición HTC hacen referencia a las particiones configuradas para controlar las cargas de trabajo de informática de alto rendimiento y de informática de alta productividad.
Las particiones de HPC usan un gran número de máquinas virtuales basadas en CPU o GPU para realizar tareas complejas. HTC es una arquitectura que utiliza muchos recursos informáticos durante largos períodos de tiempo para realizar un gran número de tareas de acoplamiento flexible. Puede usar las particiones de HPC cuando es necesario realizar cálculos grandes y complejos, como los implicados en simulaciones científicas e de ingeniería.
La partición HTC usa un gran número de nodos de máquina virtual basados en CPU o GPU para resolver tareas matemáticas complejas que requieren un acoplamiento estricto y una comunicación rápida. Los trabajos de HTC suelen ser independientes y secuenciales y se pueden programar en diferentes recursos informáticos de varios sitios. Los trabajos de HPC suelen ser paralelos e interdependientes y deben ejecutarse en un único sitio con interconexiones de baja latencia. HTC es adecuado para procesar grandes volúmenes de tareas más pequeñas y es bueno para el procesamiento por lotes de tareas con gran cantidad de datos que pueden dividirse en pequeños elementos. El procesamiento por lotes en HTC permite el procesamiento de grandes cantidades de datos o tareas computacionales dividiéndolos en grupos más pequeños y administrables denominados lotes. Los clústeres procesan estos lotes en paralelo asignando cada lote a un nodo diferente en el clúster de proceso.
En entornos basados en la nube, como Azure CycleCloud, HTC y HPC se pueden ejecutar en la misma arquitectura de clúster.
Implementación de Azure CycleCloud
CycleCloud se implementa como una aplicación web basada en Linux y puede instalarse en cualquier ubicación desde la que se pueda acceder al entorno de Azure. La manera más sencilla de configurarlo consiste en implementar una máquina virtual de Azure mediante la imagen de Azure Marketplace correspondiente, con la opción de automatizar la implementación con una plantilla de Azure Resource Manager (ARM). Como alternativa, puede usar paquetes yum
o apt
, o bien una imagen de contenedor disponible en la página de Microsoft Container Registry.
Durante la configuración inicial, tendrá la opción de proporcionar una clave SSH para proteger el acceso al sistema operativo que hospeda la aplicación CycleCloud y a los nodos de clúster implementados posteriormente. Para permitir que la aplicación CycleCloud interactúe con ARM, deberá elegir una identidad de Microsoft Entra que proporcione contexto de seguridad para esta interacción y asignarle permisos suficientes en la suscripción de Azure de destino mediante el control de acceso basado en rol (RBAC) de Azure. Esta identidad puede adoptar la forma de una entidad de servicio o, si hospeda la aplicación Azure CycleCloud en una máquina virtual de Azure, una identidad administrada.
Una instancia de Azure CycleCloud también requiere una cuenta de almacenamiento de Azure y un contenedor de blobs adjunto. Este contenedor, denominado almacén, proporciona el área de almacenamiento provisional para implementar proyectos en nodos de clúster.
Una vez instalada, la aplicación Azure CycleCloud proporciona una interfaz gráfica de usuario que permite a un usuario administrar y supervisar sistemas de HPC, así como una interfaz de la línea de comandos (CLI) que facilita la automatización y la integración de CycleCloud en los flujos de trabajo existentes. También puede usar la CLI para importar plantillas, automatizar el aprovisionamiento de clústeres y realizar tareas de administración más avanzadas.
Descripción del escalado automático del clúster de CycleCloud
Azure CycleCloud facilita la implementación de programadores en Azure que, a su vez, distribuyen y administran los trabajos que se ejecutan en clústeres compuestos por recursos de Azure. Azure CycleCloud no funciona como un programador, sino como un intermediario entre los programadores y la plataforma subyacente. Azure CycleCloud también simplifica el desarrollo de la funcionalidad de escalado automático para los programadores correspondientes, ya que proporciona una interfaz de programación basada en API REST y una biblioteca cliente basada en Python.
Azure CycleCloud permite correlacionar el comportamiento de escalado automático de los clústeres administrados con la longitud de las colas de trabajos del clúster. Puede personalizar aún más este comportamiento si define parámetros de plantilla que controlen, por ejemplo, el período de tiempo tras el cual se finalizan los nodos inactivos o la frecuencia de las comprobaciones de interrupción automática.
Todas las plantillas integradas exponen la configuración de escalado automático directamente en la interfaz gráfica de Azure CycleCloud. En cada caso, la configuración incluye la opción de especificar los límites inferior y superior del intervalo de escalado automático, expresados en el número de núcleos de CPU. El límite superior ayuda a minimizar la posibilidad de que se produzcan cargos imprevistos. Puede mitigar aún más este riesgo si configura alertas de presupuesto.
Si el umbral inferior está establecido en 0, la creación de un clúster tiene como resultado el aprovisionamiento solamente del nodo principal del programador. Aun así, si el programador detecta trabajos en cola, iniciará el aprovisionamiento de los nodos de proceso necesarios para ejecutar la carga de trabajo correspondiente, hasta el límite que haya definido. Para admitir trabajos paralelos o de acoplamiento flexible, donde las tareas individuales se ejecutan de forma independiente entre sí, los trabajos empiezan a ejecutarse en cuanto el primer nodo está disponible. En el caso de los trabajos estrechamente acoplados, como los que usan la funcionalidad de interfaz de paso de mensajes (MPI), el tiempo de espera es mayor, según la extensión de las dependencias entre nodos. Cuando la cola de trabajos esté vacía durante un período de tiempo superior al tiempo de inactividad permitido, los nodos de proceso empezarán a interrumpirse automáticamente y el clúster volverá a constar solo del nodo principal del programador.
Integración de Slurm con CycleCloud
Puede integrar Slurm con Azure CycleCloud mediante la configuración de un clúster basado en Slurm en CycleCloud, donde CycleCloud administra la infraestructura subyacente y Slurm se encarga de la programación de trabajos y la administración de recursos.
Slurm se integra con Azure CycleCloud de la siguiente manera:
- Configuración de clúster: Al crear un clúster en Azure CycleCloud, puede elegir Slurm como programador de clústeres. Esto significa que CycleCloud configura los recursos del clúster (por ejemplo, máquinas virtuales, almacenamiento, redes) e implementa el programador de Slurm en el nodo maestro (o nodo controlador) del clúster.
- Implementación del clúster Azure CycleCloud implementa el clúster de Slurm en Azure, lo que crea las máquinas virtuales necesarias para el nodo maestro y los nodos de proceso. El nodo maestro ejecuta el demonio del controlador de Slurm (
slurmctld
), y los nodos de proceso ejecutan el demonio de Slurm (slurmd
) responsable de ejecutar trabajos. CycleCloud configura los recursos de red y almacenamiento y configura el clúster de Slurm según la configuración especificada. - Escalado automático: Azure CycleCloud puede escalar dinámicamente clústeres de Slurm agregando o quitando nodos de proceso en función de los requisitos de carga de trabajo y las directivas de escalado automático definidas. Esto ayuda a optimizar el uso de recursos y a controlar los costos. Cuando se envían nuevos trabajos y los recursos son insuficientes, CycleCloud puede aprovisionar automáticamente nodos de proceso adicionales y agregarlos al clúster de Slurm. De forma similar, cuando la carga de trabajo disminuye, CycleCloud puede quitar automáticamente los nodos de proceso inactivos para ahorrar costos.
- Supervisión y administración: Azure CycleCloud proporciona características de supervisión y administración para el clúster de Slurm, como el seguimiento del rendimiento del clúster, el uso de recursos y el estado del trabajo. También puede administrar el ciclo de vida del clúster, iniciar o detener el clúster y aplicar las actualizaciones según sea necesario.
- Envío de trabajo: Puede enviar trabajos al clúster de Slurm mediante comandos estándar de Slurm, como
sbatch
,srun
ysalloc
. Estos trabajos se programan y ejecutan en las máquinas virtuales de Azure que componen los nodos de proceso del clúster de Slurm.