Entorno HPC con AWS ParallelCluster - Construcción automática y escalado de clústeres Slurm

Construye automáticamente clústeres HPC basados en CloudFormation y gestiona trabajos con el planificador Slurm. También presentamos la optimización de costos con instancias Spot.

Descripción general de ParallelCluster

ParallelCluster es una herramienta de gestión de clústeres HPC de código abierto proporcionada por AWS. Define la configuración del clúster (tipos de instancia, número de nodos, almacenamiento, red) en un archivo de configuración YAML y lo construye automáticamente como un stack de CloudFormation con el comando pcluster create-cluster. El planificador de trabajos Slurm se configura de forma estándar, permitiendo utilizar scripts de trabajos Slurm existentes tal cual. Se utiliza para cargas de trabajo de computación paralela a gran escala como dinámica de fluidos computacional (CFD), dinámica molecular, análisis genómico, simulación meteorológica y cálculo de riesgo financiero. La versión 3 introdujo el modo Multi-Queue, que permite definir múltiples colas dentro de un solo clúster, cada una con diferentes tipos de instancia y configuraciones de almacenamiento. Los cambios de configuración se aplican a clústeres existentes mediante pcluster update-cluster sin destrucción, permitiendo añadir nodos y cambiar almacenamiento durante la operación.

Autoescalado y optimización de costos

El autoescalado de ParallelCluster se vincula con la cola de trabajos de Slurm. Cuando se envía un trabajo, los nodos de cómputo se inician automáticamente, y cuando permanecen inactivos durante un tiempo determinado después de completar el trabajo (temporizador de inactividad predeterminado de 10 minutos), los nodos se terminan automáticamente. Durante los períodos sin trabajos, el número de nodos de cómputo se reduce a cero, generándose solo el costo del nodo principal. El uso de instancias Spot puede reducir significativamente los costos de cargas de trabajo HPC. Especificar múltiples tipos de instancia con Allocation Strategy: capacity-optimized mejora la disponibilidad de Spot y reduce las tasas de interrupción. Para aplicaciones compatibles con checkpoints, es posible configurar el re-encolamiento automático de trabajos cuando se interrumpe una instancia Spot. Se recomienda ejecutar el nodo principal con instancias On-Demand y usar Spot solo para nodos de cómputo. El parámetro ScaledownIdletime permite ajustar el temporizador de inactividad; en entornos donde se envían trabajos cortos frecuentemente, aumentar este valor reduce la sobrecarga de inicio/terminación de nodos.

EFA y almacenamiento compartido

EFA (Elastic Fabric Adapter) es una interfaz de red de alta velocidad para cargas de trabajo HPC que reduce significativamente la latencia de comunicación entre nodos. Es eficaz para cargas de trabajo de computación paralela basadas en MPI (Message Passing Interface) donde el intercambio de datos entre nodos se convierte en un cuello de botella. Simplemente habilitando EFA en la configuración de ParallelCluster, EFA se configura automáticamente en los nodos de cómputo. Usar EFA requiere colocar nodos dentro de un grupo de ubicación, y ParallelCluster crea automáticamente un grupo de ubicación de clúster a través de la configuración de la sección Placement. El almacenamiento compartido se puede elegir entre FSx for Lustre, EFS y EBS. FSx for Lustre es ideal para la lectura paralela de conjuntos de datos a gran escala, y su integración con S3 importa automáticamente datos desde S3 al sistema de archivos Lustre y exporta resultados de cálculo a S3. EFS es efectivo para compartir datos entre múltiples clústeres o en entornos con alta variabilidad en el número de nodos, pero tiene mayor latencia que FSx for Lustre. Para aprender de forma exhaustiva la arquitectura de ParallelCluster, consulte libros técnicos (Amazon).

Mejores prácticas de diseño y errores comunes

Puntos clave al ejecutar ParallelCluster en producción: Para el dimensionamiento del nodo principal, clústeres con cientos de nodos aumentan el consumo de memoria del controlador Slurm, por lo que se debe elegir c5.xlarge o superior en lugar de t3.small. Como todo el clúster queda inutilizable si el nodo principal se detiene, configure copias de seguridad periódicas mediante snapshots de EBS. Para el diseño de red, coloque los nodos de cómputo en subredes privadas y acceda a S3 y CloudWatch mediante NAT gateways o endpoints de VPC. Usar un endpoint de VPC para S3 (tipo gateway) evita los cargos de transferencia de datos del NAT gateway, generando diferencias de costo significativas con E/S de datos a gran escala. Al usar AMIs personalizadas, base su personalización en AMIs oficiales que incluyen los paquetes requeridos por ParallelCluster (Slurm, Munge, supervisord) y construya con el comando pcluster build-image para evitar problemas de compatibilidad. Los sistemas operativos compatibles incluyen Amazon Linux 2, Ubuntu 20.04/22.04.

Comparación con AWS Batch

AWS ofrece dos servicios para cargas de trabajo HPC/batch: ParallelCluster y AWS Batch, con la elección óptima dependiendo de las características de la carga de trabajo. ParallelCluster usa Slurm como planificador, siendo ideal para organizaciones que migran desde entornos HPC on-premises usando Slurm sin modificar scripts de trabajos. Para computación paralela fuertemente acoplada que requiere comunicación entre nodos de baja latencia vía EFA (CFD, dinámica molecular), ParallelCluster es la única opción. En contraste, AWS Batch es un servicio completamente administrado que no requiere gestión de clústeres, empaquetando cargas de trabajo con definiciones de trabajos basadas en contenedores. Para computación de alto rendimiento que ejecuta gran cantidad de tareas independientes en paralelo (alineamiento de secuencias genómicas, pipelines de procesamiento de imágenes), AWS Batch tiene menor carga de gestión de infraestructura. ParallelCluster destaca en casos de uso de computación de investigación donde los usuarios necesitan control granular sobre la configuración del clúster, ubicación específica de instancias y configuraciones de almacenamiento.

Resumen

ParallelCluster es una herramienta que construye automáticamente clústeres HPC basados en Slurm en AWS. Logra la gestión de recursos según los trabajos con autoescalado, reduce costos con instancias Spot y proporciona comunicación de alta velocidad entre nodos con EFA. Es ideal para la migración desde clústeres HPC on-premises o para responder a demandas de computación intermitentes. El modo Multi-Queue consolida diferentes cargas de trabajo en un solo clúster, y la integración de FSx for Lustre con S3 optimiza la E/S de datos a gran escala.