Usa clústeres para computación técnica a gran escala en la nube

Last reviewed 2022-12-20 UTC

En este documento, se proporciona información sobre cómo realizar computación técnica a gran escala en Google Cloud. Muchas aplicaciones de computación técnica requieren un gran número de nodos de procesamiento individuales que están conectados en un clúster. Luego, estas aplicaciones deben coordinar el procesamiento y el acceso a los datos en los nodos. La computación de alto rendimiento (HPC) en Google Cloud ofrece recursos flexibles y escalables que se compilan para controlar estas cargas de trabajo exigentes.

Los conceptos y las tecnologías subyacentes a la computación en clúster se desarrollaron en las últimas décadas y ahora ya están elaborados y establecidos por completo. Migrar una pila de software a Google Cloud ofrece muchas oportunidades para reducir los costos y aliviar los cuellos de botella en los entornos de HPC actuales. En esta guía, se proporciona una descripción general de las tecnologías, los desafíos y las soluciones actuales disponibles para ejecutar clústeres de HPC en Google Cloud.

La computación en clúster agrega y coordina una colección de máquinas virtuales (VMs) que trabajan en conjunto para realizar una tarea. Los clústeres suelen tener un solo nodo principal (a veces llamado nodo de controlador), una cantidad de nodos de procesamiento y, con probabilidad, algunos nodos especializados. El nodo principal administra muchas tareas, incluidas las siguientes:

  • Registrar nodos de procesamiento en el sistema
  • Asignar trabajos a nodos particulares
  • Supervisar los nodos y los trabajos que se ejecutan en ellos

Arquitectura

En el siguiente diagrama, se muestra la arquitectura de un clúster de GKE:

Un clúster se compone de un nodo principal y un conjunto de nodos de procesamiento.

En el diagrama, se muestra un clúster compuesto por un nodo principal y un conjunto de nodos de procesamiento. Los usuarios interactúan con el nodo principal, que luego coordina el trabajo con los nodos de procesamiento.

Los usuarios envían trabajos que pueden consistir en muchas tareas; una tarea es la unidad básica del trabajo. Las siguientes son las estructuras comunes para las tareas dentro de un trabajo:

  • Trabajos que requieren que las tareas se ejecuten de forma simultánea y comparten datos entre tareas a través de un algoritmo paralelo
  • Trabajos que tienen un conjunto complejo de tareas, con dependencias entre tareas, de modo que algunas tareas deben ejecutarse antes que otras
  • Tareas que requieren configuraciones de hardware (como memoria adicional, GPU o alguna otra configuración específica) para satisfacer las necesidades de la aplicación

En los términos más básicos, las tareas son ejecutables que pueden leer datos de entrada del almacenamiento, procesar los datos para producir un resultado y, luego, escribir los resultados finales en el almacenamiento.

A continuación, se indican los tipos principales de cargas de trabajo que se ejecutan en clústeres de HPC:

  • Cargas de trabajo con acoplamiento alto: estas cargas de trabajo emplean muchos nodos de procesamiento que funcionan juntos, cada uno de los cuales ejecuta los mismos datos ejecutables y los comparte entre los nodos. Un clúster de HPC diseñado para cargas de trabajo con acoplamiento alto necesita herramientas de redes de latencia baja para permitir una comunicación interna rápida. Las redes de latencia baja ayudan a evitar un rendimiento deficiente que se produce por una comunicación lenta entre los procesos y el uso compartido de datos. El modelado del clima, la dinámica de fluidos computacional (CFD) y el modelado estructural son ejemplos de cargas de trabajo con acoplamiento alto.
  • Cargas de trabajo con acoplamiento bajo: a veces se denominan cargas de trabajo embarazosamente paralelas, las cargas de trabajo vinculadas de forma flexible ejecutan muchas tareas que se ejecutan de forma independiente entre sí, con poca o sin comunicación síncrona entre nodos de procesamiento. En algunos casos, las cargas de trabajo con acoplamiento bajo incluyen dependencias secuenciales, en las que una clase de tarea debe esperar la entrada de otra clase de tarea. Los ejemplos típicos incluyen el procesamiento de contenido multimedia, el análisis financiero, la genómica, y la simulación y el procesamiento de eventos de física de partículas.

Oportunidades para computación en clúster en la nube

Existen muchos motivos para ejecutar clústeres de procesamiento en la nube, incluidos los siguientes:

  • Tiempo de solución: Iniciar un clúster de calidad de producción en la nube solo toma unos minutos, ya sea que inicies un clúster pequeño de 10 nodos con cientos de núcleos disponibles o clústeres a gran escala con 100,000 núcleos o más. En contraste, la compilación de nuevos clústeres locales puede tardar meses en estar lista para operación. Por lo general, incluso cuando los clústeres locales están disponibles, tienen un uso alto y tiempos largos de espera en cola (a veces horas o días) antes de que se programen los trabajos para ejecutarse. En su lugar, puedes compilar tus propios clústeres en la nube, usarlos para tus cargas de trabajo y terminar los clústeres cuando finalice tu análisis.
  • Costo total de propiedad más bajo: Google Cloud no solo reduce el tiempo de solución, sino que también puede reducir el costo total por ejecución, ya que ofrece un escalamiento dinámico según sea necesario, VMs Spot y descuentos por uso a largo plazo. Puedes agregar los recursos exactos que necesitas para un trabajo y, luego, quitarlos cuando no sean necesarios.
  • Recursos adaptados a la tarea: Debido a que el costo de procesamiento de un trabajo depende solo de las horas centrales totales, en lugar del número de instancias, la ejecución de clústeres en la nube permite a cada equipo o grupo tener su propio clúster dedicado. Este enfoque puede aliviar otra dificultad importante del desarrollo de políticas en torno al uso de varios grupos. Luego, puedes personalizar cada clúster de nube dedicado para la aplicación de destino. Los clústeres locales suelen estar compuestos por un recurso único que se comparte con todos los grupos y aplicaciones. En ese entorno, suele ser complicado configurar y mantener las políticas para compartir entre los grupos.
  • Asistencia para colaboración: En muchas situaciones, se desarrolla una aplicación en colaboración con diferentes personas en varias organizaciones. Google Cloud proporciona Identity and Access Management (IAM) a nivel de proyecto para permitir el acceso controlado a datos y herramientas analíticas. Los usuarios autorizados pueden acceder a los mismos datos, aplicaciones y clústeres para garantizar que todos estén coordinados sin tener que copiar datos, administrar versiones o sincronizar parámetros de configuración de clústeres.
  • Integración: Antes de poder ejecutar grandes trabajos de computación, los investigadores realizan un trabajo importante para preparar los conjuntos de datos que se procesarán. Después de que se ejecutan los trabajos, los investigadores dedican mucho tiempo a analizar el resultado de estos trabajos. Después de trasladar los trabajos a la nube, estos investigadores pueden aprovechar las herramientas de macrodatos disponibles en Google Cloud, como BigQuery y Vertex AI Workbench, que proporciona ventajas en comparación con los sistemas locales.

Pila de software de computación en clúster

Una pila de software de computación en clúster consta de los siguientes componentes:

  • Administradores o programadores de cargas de trabajo (como Slurm, PBS o LSF de IBM) para organizar la ejecución del trabajo.
  • Herramientas de configuración de clústeres:
    • Herramientas de administración de clústeres (como grupos de instancias administrados o Kubernetes) para organizar los nodos de procesamiento
    • Herramientas de DevOps (como Terraform) para aprovisionar y compilar clústeres.
  • Aplicaciones de usuario final (como OpenFOAM, GROMACS, WRF o notebooks de Jupyter) para ejecutar procesamientos, y ver y analizar el resultado

Las siguientes secciones hablan del software de administración del sistema y de los programadores.

Herramientas de configuración de clústeres

Hay muchas formas de abordar la configuración del clúster. Por lo general, las herramientas de HPC de uso común se pueden emplear en Google Cloud sin mucha modificación. Si usas otros sistemas de administración de configuración para administrar tus clústeres de HPC, como Chef, Puppet o Terraform, puedes aprovechar esas inversiones a medida que migras a Google Cloud a través de las herramientas y los complementos disponibles.

Kit de herramientas de HPC de Cloud

El kit de herramientas de HPC de Cloud es una herramienta de código abierto que te permite crear clústeres HPC repetibles y listos para usar según las prácticas recomendadas comprobadas. El kit de herramientas de HPC de Cloud facilita la HPC, ya que te permite crear clústeres de HPC clave en cuestión de minutos.

El kit de herramientas de HPC de Cloud presenta un diseño modular que habilita entornos de HPC componibles. Este diseño permite que el kit de herramientas defina y, luego, implemente con facilidad entornos de HPC simples y avanzados. Un plano de HPC define la infraestructura y la configuración de software de un entorno de HPC en un archivo de formato YAML de alto nivel que compone los módulos de Terraform, las plantillas de Packer y las guías de Ansible. Puedes crear un clúster con un plano existente o modificarlo para que se adapte a tus necesidades. Con algunas líneas de texto en el plano técnico, puedes modificar la configuración para aprovisionar la infraestructura y las herramientas específicas de la industria que se requieren para el trabajo.

Programadores de trabajos

Una vez que el clúster está operativo, el software que administra la ejecución de la tarea y la asignación de nodos se denomina programador de trabajos (a veces llamado administrador de carga de trabajo o administrador de colas). A menudo, un programador de trabajos viene con un administrador de clústeres integrado. Los programadores de trabajos proporcionan varias capacidades para ayudar a administrar los trabajos y las tareas, como las que se muestran a continuación:

  • Asistencia para prioridades de trabajo entre usuarios y grupos, que ayuda a proporcionar una programación de trabajos basada en políticas
  • Consideración de dependencias de tareas y necesidades de recursos para la asignación de tareas
  • Escalamiento del tamaño del clúster según la cantidad de trabajos en la cola
  • Compatibilidad para detectar y manejar tareas fallidas con una reprogramación automática de tareas, o bien otra configuración manual.

Google Cloud admite varios administradores de cargas de trabajo comerciales y de código abierto populares. Los ejemplos incluyen Slurm de SchedMD, Batch de Google Cloud y HTCondor de la Universidad de Wisconsin, PBS Pro y IBM Spectrum LSF. Cada uno de estos administradores de cargas de trabajo tiene sus fortalezas, y el kit de herramientas de Cloud HPC proporciona planos para todos ellos.

  • Slurm proporciona un entorno de clúster de HPC más tradicional, que admite aplicaciones paralelas de alta capacidad de procesamiento y alto rendimiento. SchedMD, el patrocinador y encargado del mantenimiento comercial del proyecto de código abierto Slurm, se encarga del desarrollo. Slurm admite sistemas de archivos compartidos en todo el clúster para un acceso de almacenamiento simple. Un sistema de archivos activado por NFS para Slurm es suficiente para clústeres de unos cientos de nodos, pero a medida que aumenta el tamaño del clúster, la carga en el servidor de archivos puede afectar el rendimiento de forma negativa. Los sistemas de archivos paralelos y distribuidos, que se describen en la sección “Almacenamiento” de este documento, pueden ayudar con este problema cuando se ejecutan cargas de trabajo de E/S intensivas o se usan clústeres grandes. Como alternativa, cuando no se requiere el acceso de baja latencia a archivos, considera usar Cloud Storage. Para obtener más información sobre el uso de Slurm con Google Cloud, consulta Implementa un clúster de HPC con Slurm.
  • Batch de Google Cloud es un servicio completamente administrado que te permite programar, poner en cola y ejecutar cargas de trabajo de procesamiento por lotes en instancias de VM de Compute Engine. Batch aprovisiona recursos y administra la capacidad en tu nombre, lo que permite que las cargas de trabajo por lotes se ejecuten a gran escala. Cuando usas Batch, no necesitas configurar y administrar programadores de trabajo de terceros, aprovisionar y desaprovisionar recursos, ni solicitar recursos de una zona a la vez. Para ejecutar un trabajo, especifica los parámetros para los recursos necesarios para la carga de trabajo y, luego, Batch obtiene los recursos y los pone en cola para su ejecución. Batch proporciona integración incorporada con otros servicios de Google Cloud para ayudar a programar, ejecutar, almacenar y analizar trabajos por lotes, de modo que puedas enfocarte en enviar un trabajo y consumir los resultados. Para obtener más información, consulta la documentación de Batch y aprende a ejecutar un trabajo de Batch a través de Workflows. El kit de herramientas de HPC de Cloud también proporciona un plano por lotes.

  • HTCondor se usa a través de recursos compartidos para programar trabajos de manera oportunista en recursos que, de otra manera, estarían inactivos. Proporciona su propio movimiento de datos, por lo que no requiere sistemas de archivos compartidos. Por lo tanto, HTCondor puede escalar a cientos de miles de núcleos y se puede distribuir en varias zonas y regiones de Google Cloud. HTCondor se ha usado para cargas de trabajo híbridas, en las cuales el trabajo se comparte o se divide entre sistemas locales y basados en la nube. Sin embargo, como su nombre lo indica, se enfoca en trabajos de alta capacidad de procesamiento y no en trabajos paralelos con acoplamiento alto. Para comenzar a usar HTCondor con Google Cloud, consulta Integraciones de HTCondor de Google Cloud.

Almacenamiento

La mayoría de las aplicaciones de HPC requieren una solución de almacenamiento de archivos que admita la API de POSIX. Google Cloud tiene soluciones de almacenamiento integradas y de terceros que abarcan todo el espectro de necesidades de almacenamiento, objetos de intervalo y almacenamiento de archivos.

Si no se requiere acceso a archivos de baja latencia, recomendamos Cloud Storage. Proporciona acceso a objetos paralelos a través de una API o gcsfuse si se requiere compatibilidad de API POSIX.

Para el almacenamiento de archivos de aplicaciones pequeñas a medianas, recomendamos soluciones basadas en NFS o en SMB, como Filestore, NetApp y Dell PowerScale. Para las aplicaciones que exigen un rendimiento aún mayor, te recomendamos que consideres un sistema de archivos paralelo, como DAOS, Lustre, IBM Spectrum Scale o Weka.

  • Filestore proporciona un servicio de almacenamiento de archivos basado en NFS por completo administrado por Google para cargas de trabajo de rendimiento bajo a medio. Filestore Basic ofrece un rendimiento fijo sin importar la capacidad de almacenamiento. Filestore Zonal aumenta el rendimiento con capacidad, escalando el almacenamiento a cientos de TB y escalando la capacidad de procesamiento a decenas de GBps. Como servicio de Google Cloud, Filestore se puede implementar con Terraform o con la API de Google Cloud, Google Cloud CLI o la consola de Google Cloud.
  • NetApp Cloud Volumes ofrece servicios avanzados de datos de nube híbrida que simplifican la migración y ejecución de cargas de trabajo empresariales en la nube. NetApp ofrece varias soluciones para el almacenamiento principal, la administración de datos y el almacenamiento en caché en la nube de datos locales a través de FlexCache. Cloud Volumes ONTAP entrega NFS, SMB, SnapMirror y el resto del conjunto de atributos completo de ONTAP en Google Cloud. Cloud Volumes ONTAP se puede implementar a través de Terraform y la consola de Google Cloud.
  • Dell PowerScale para Google Cloud es un servicio de archivos integrado a usuarios de Google Cloud que usa la tecnología de Dell PowerScale. Esta oferta predeterminada, administrada por Dell Technologies Services, combina el rendimiento y la capacidad a gran escala de PowerScale OneFS, la flexibilidad y la economía de costos de Google Cloud. Puedes implementar Dell PowerScale desde la consola de Google Cloud.
  • DAOS es un sistema de almacenamiento HPC de escalamiento horizontal definido por software de código abierto que optimiza para grandes operaciones de IOPS y metadatos, y un ancho de banda alto. Los UNIXS se enfocan en los casos de almacenamiento de HPC desde cero, lo que permite a los usuarios ajustar de forma dinámica el nivel de durabilidad para cada conjunto de datos. Es compatible con una interfaz POSIX y con varias interfaces de IA/AA y HPC, como MPI-IO, HDF5 y TensorFlow. Para obtener más información, consulta la solución para SonSO con Terraform y el kit de herramientas de HPC de Cloud.
  • El sistema de archivos paralelos Lustre está disponible como código abierto o con asistencia empresarial completa de nuestro socio DDN Storage. La versión empresarial de Lustre, DDN EXAScaler, demostró más de 10 Tbps en Google Cloud para su entrada IO500 en 2021. EXAScaler se puede implementar con Terraform. Para obtener más información, consulta EXAScaler Cloud en Google Cloud Marketplace.
  • IBMs Spectrum Scale (antes GPFS) y está disponible con asistencia completa de nuestro socio Sycomp en la Cloud Marketplace El conjunto completo de atributos de la escala de Spectrum está disponible, lo que ofrece un rendimiento extremo para casos de uso persistentes y desde cero. Además, IBM Spectrum Scale puede escalar de forma dinámica los datos hacia y desde buckets de Cloud Storage existentes, lo que permite un nivel de caché rentable que acelera el acceso a los datos de Cloud Storage. IBM Spectrum Scale se puede implementar con Terraform.
  • WEKA es una solución de almacenamiento basada en archivos de alto rendimiento. WEKA combina el nivel de rendimiento de las instancias de procesamiento habilitadas para NVMe en Google Cloud con el nivel de capacidad de Cloud Storage en un solo espacio de nombres. Weka se puede implementar a través de Terraform.

Consideraciones de arquitectura

Por lo general, los clústeres locales se comparten entre usuarios y grupos, y son compatibles con muchas necesidades de aplicación diferentes. Por el contrario, cuando pasas a Google Cloud, puedes personalizar las propiedades del clúster para que coincidan con las necesidades de tu aplicación para reducir los costos y aumentar el rendimiento. Estas diferencias arquitectónicas se muestran en el siguiente diagrama:

Un clúster de centro de datos local en comparación con un clúster de nube.

En el diagrama, se muestra la distinción entre los clústeres locales y los de la nube: para los sistemas locales, se comparte toda la infraestructura. En un contexto de nube, cada grupo de usuarios puede crear un clúster que se adapte a sus necesidades.

En la siguiente lista, se describen los desafíos técnicos que pueden afectar los proyectos de migración de HPC. Para obtener información sobre las prácticas recomendadas, consulta la serie Migración a Google Cloud.

  • Transferencia de datos. Los conjuntos de datos que son procesados por los nodos de procesamiento de un clúster por lo normal deben estar publicados en etapa de pruebas en la nube antes de que se ejecuten los trabajos. La administración del movimiento de datos puede ser compleja, según el volumen de los datos y cómo se administran.
  • Acceso a los datos. Muchas aplicaciones de HPC requieren acceso compartido a un conjunto de archivos y directorios. La forma en que se proporciona este acceso puede afectar el rendimiento de la aplicación de forma significativa. Puedes aprovechar los datos compartidos que se almacenan en Cloud Storage, en servidores NFS como Filestore, o a través de sistemas de archivos paralelos, como se explica en la sección “Almacenamiento” con anterioridad en este documento.
  • Seguridad. Para los datos sensibles, debes asegurarte de que el acceso siempre esté autorizado y de que los datos estén encriptados de forma correcta en reposo y en tránsito. Mientras que Cloud Storage encripta los datos en reposo y en tránsito, puedes aplicar una capa adicional de control y administrar claves en Cloud Key Management Service o por tu cuenta. Las claves deben recuperarse o instalarse en los nodos de procesamiento antes de que se ejecuten los trabajos.
  • Latencia entre nodos. Para aplicaciones de HPC con acoplamiento alto, el rendimiento puede ser sensible a la latencia entre nodos dentro del clúster. Debido a que Google Cloud proporciona nodos con tamaños de hasta 416 núcleos, puedes ejecutar trabajos en gran medida paralelos sin desviar nodos. En la mayoría de los casos, los trabajos de alrededor de 1,000 núcleos o más pequeños se desempeñan bastante bien en el hardware de red no especializado.
  • Administración de licencias de software. Muchas apps comerciales requieren un servidor de licencias, que a veces se conoce como servidor de claves. Algunas aplicaciones vienen con un servidor de licencias incorporado o recomendado y otras pueden ser compatibles con las ofertas de servidores de licencias existentes. Algunos programadores de trabajos pueden ayudar con la administración de licencias y evitar que los trabajos se ejecuten hasta que haya una licencia disponible.

La computación técnica proporciona muchas herramientas y enfoques para diferentes circunstancias. Con tantas opciones, puede que te resulte difícil comenzar. Sin importar qué software de administración de clústeres y qué programador elegiste, hay una serie de prácticas recomendadas que puedes seguir cuando ejecutes en Google Cloud.

  • Aprovecha las VMs Spot siempre que sea posible. Las VMs Spot son como las máquinas virtuales normales en Compute Engine, pero tienen un precio de hasta un 80% menos que las VMs normales. El riesgo es que las VMs Spot se pueden interrumpir con poco aviso. Para cargas de trabajo de alta capacidad de procesamiento, el programador detectará la pérdida de un nodo recuperado y lo tratará como una falla de nodo. Por lo general, el programador reprogramará cualquier tarea que se ejecute en el nodo interrumpible en un recurso diferente. Aunque cualquier trabajo realizado en nodos reclamados podría perderse, la probabilidad de pérdida de nodos es lo suficientemente baja como para que el precio más bajo valga la pena. La tasa de pérdida esperada es del 5% al 15%. A diferencia de las VMs interrumpibles, las VMs Spot no se limitan a un máximo de 24 horas de uso antes de ser reclamadas.
  • Aprovecha el costo y el ancho de banda de Cloud Storage en lugar de ejecutar tu propio sistema de archivos paralelo. Cloud Storage proporciona una coherencia sólida y un rendimiento paralelo escalable con un bajo costo general. Aunque el tiempo hasta el primer byte suele ser de decenas de milisegundos, las aplicaciones que pueden aprovechar Cloud Storage en lugar de ejecutar un servidor de archivos paralelo en Compute Engine son rentables. El ancho de banda disponible entre Cloud Storage y los nodos de procesamiento es suficiente para muchas aplicaciones; algunos clientes informaron un ancho de banda agregado y sostenido de más de 23 GBps.
  • Compila un clúster de una sola aplicación o de un solo grupo. Los clústeres tradicionales se comparten entre múltiples usuarios, grupos y aplicaciones, lo que puede provocar la contención de recursos y un uso ineficiente de los recursos por parte de las aplicaciones. En Google Cloud, considera crear un clúster para cada grupo o proyecto, y considera usar clústeres que estén optimizados para aplicaciones particulares que se ejecutan en ellos. Ya sea que ejecutes un clúster durante dos horas o dos clústeres durante una hora cada uno, el costo total es el mismo, pero, con el último patrón, se pueden reducir los tiempos de espera y mejorar el rendimiento de la app.

Si bien cada implementación es única, las siguientes secciones ofrecen algunas recomendaciones generales para tres casos comunes.

Investigador independiente que busca procesar sus datos

Los investigadores individuales por lo general quieren ejecutar su aplicación en sus datos y completarla lo más rápido posible. Pueden ser expertos en su app, pero no quieren ser expertos en administración o gestión de clústeres.

Si ejecutas cargas de trabajo de alta capacidad de procesamiento, puedes considerar usar la API de Batch. Consta de los siguientes componentes:

  • Trabajo: Un programa programado que ejecuta un conjunto de tareas hasta su finalización sin ninguna interacción del usuario, por lo general, para cargas de trabajo de procesamiento. Por ejemplo, un trabajo puede ser una secuencia de comandos de shell única o un cálculo complejo de varias partes. Cada trabajo por lotes consta de un array de una o más tareas que ejecutan el mismo ejecutable.
  • Tareas: Son acciones programáticas que se definen como parte de un trabajo y se ejecutan cuando este se ejecuta. Cada tarea es parte del grupo de tareas de un trabajo. Las tareas de un trabajo pueden ejecutarse en paralelo o de forma secuencial en los recursos del trabajo.
  • Recursos: La infraestructura necesaria para ejecutar un trabajo. Cada trabajo por lotes se ejecuta en un grupo de instancias administrado regional (MIG) de VMs de Compute Engine, según los requisitos y la ubicación especificados del trabajo. Si se especifican recursos de procesamiento adicionales, un trabajo también podría usar recursos como GPU o recursos de almacenamiento de lectura o escritura adicionales, como SSD locales o un bucket de Cloud Storage. Algunos factores que determinan la cantidad de VMs que se aprovisionan para un trabajo incluyen los recursos de procesamiento necesarios para cada tarea y el paralelismo del trabajo: si deseas que las tareas se ejecuten de forma secuencial en una VM o de forma simultánea en varias VM.

Batch de Google Cloud te permite crear y ejecutar trabajos que aprovisionan y usan de forma automática los recursos necesarios para ejecutar sus tareas. No hay clúster para aprovisionar o administrar. Las tareas se ejecutan hasta que se completan en una VM que aprovisiona y administra Batch. Esto es rentable porque Compute Engine factura por segundo de uso.

Clúster de tamaño pequeño o mediano para un solo proyecto o equipo

En un equipo típico, los miembros tienen acceso a un clúster administrado por un grupo central para que lo use toda la empresa. Como alternativa, los miembros pueden tener acceso a recursos a gran escala en un centro HPC fuera del sitio. En ambas situaciones, los clústeres se administran de manera profesional y se accede a ellos a través de herramientas estándar. Por ejemplo, los usuarios pueden usar SSH para conectarse a un nodo principal y usar secuencias de comandos de envío de Slurm para enviar trabajos para su ejecución.

En cualquiera de estos casos, cuando implementes en la nube, recomendamos usar Cloud HPC Toolkit para definir un entorno de clúster similar a los sistemas locales o fuera del sitio. Los equipos pueden personalizar el clúster seleccionando el tipo de máquina de Compute Engine que mejor se adapte a su aplicación y personalizar el startup de secuencias de comandos para instalar las dependencias de software para su aplicación. Los datos de entrada pueden habilitarse a publicados en etapa de pruebas en Cloud Storage y el equipo puede instalar gcsfuse en los nodos de procesamiento para activar los datos de entrada.

En el siguiente diagrama, se muestra un flujo de configuración típico a través del kit de herramientas de HPC de Cloud:

Configuración del entorno de HPC con el kit de herramientas de HPC de Cloud

En el diagrama, se muestra cómo puedes usar el kit de herramientas de HPC de Cloud para pasar de un plano YAML a un clúster implementado. Primero, crea un plano o elige entre una gran selección de ejemplos. Luego, el kit de herramientas de HPC de Cloud genera una carpeta de implementación que tiene todas las secuencias de comandos de Terraform y las herramientas de compilación de imágenes necesarias para compilar un clúster de HPC que cumpla con tus requisitos.

Centro de HPC que agrega capacidad de pico de actividad a los clústeres existentes

Los centros de HPC principales tienen una gran capacidad de procesamiento, pero debido a que muchos grupos los usan en toda la organización o empresa, los centros de HPC suelen tener un uso alto constante y tiempos de espera prolongados en la cola. Por lo general, cuando se los compra, se tiene en cuenta una capacidad de producción específica, y cuando se envían cargas de trabajo imprevistas a la combinación, pueden disminuir el progreso de manera notable.

En estas situaciones, puedes generar un pico de actividad en el entorno de Google Cloud si agregas nodos de procesamiento de forma temporal al clúster. El clúster se convierte en un híbrido con el nodo principal y algunos nodos de procesamiento de ejecución local, además de otros nodos de procesamiento que se ejecutan en Google Cloud. Los nodos adicionales se pueden liberar cuando las colas de trabajos se desvían.

Generar un pico de actividad en la nube es conveniente por las siguientes razones:

  • Mantiene un entorno de usuario coherente para el envío de trabajos y la administración. Los usuarios no saben o no les afecta si se agregan nodos adicionales.
  • Permite a los administradores de TI definir políticas sobre cuándo generar picos de actividad para controlar los costos.

El mayor desafío consiste en proporcionar un espacio de nombres de datos y archivos coherente para los trabajos de los usuarios en los nodos locales y de Google Cloud. Es posible que los nodos de Google Cloud no tengan acceso a los mismos sistemas de archivos internos que los nodos locales. Si ese es el caso, los trabajos que hacen referencia a estos archivos no se ejecutarán.

Si los nodos de Google Cloud están configurados con permisos de acceso a archivos internos, los trabajos se ejecutarán, pero es posible que no se realicen de la misma manera, y pueden crear un ancho de banda de red adicional, además de cargos de salida. Además, es posible que los trabajos paralelos que se dividen en los nodos locales y en la nube tampoco funcionen bien debido a la latencia adicional entre las diferentes partes de la app.

¿Qué sigue?

Obtén más información sobre los casos de uso de la computación en clústeres en Google Cloud:

Más información sobre la infraestructura de HPC:

Comienza a usar tu clúster:

Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.