En esta guía, se proporcionan instrucciones para configurar y usar VMs de inicio flexible con Slurm en Gemini Enterprise Agent Platform. Esta integración te permite usar modelos de aprovisionamiento de VM flexibles para tus cargas de trabajo de entrenamiento.
Configuración y creación de clústeres
Antes de definir la configuración del clúster, primero debes completar el siguiente paso de requisito previo único para asegurarte de que las cuentas de servicio necesarias estén autorizadas para administrar los recursos de Flex Start.
Verifica los permisos del agente de servicio de las APIs de Google
- Contexto: Slurm en la plataforma de Gemini Enterprise Agent usa grupos de instancias administrados para aprovisionar de forma dinámica instancias de VM de Flex Start y administrar su ciclo de vida. El agente de servicio de las APIs de Google crea y administra los recursos subyacentes de Compute Engine para el grupo de instancias administrado. Como se detalla en la documentación sobre los grupos de instancias administrados y IAM, esta cuenta de servicio requiere permisos para crear, borrar y enumerar instancias de VM, así como permiso para adjuntarles una identidad de cuenta de servicio.
- Acción: Verifica si tu agente de servicio de las APIs de Google (
PROJECT_NUMBER@cloudservices.s3ns-system.iam.gserviceaccount.com) ya tiene el rol de editor (roles/editor).- Si la respuesta es "sí", es probable que no debas realizar ninguna acción. Por lo general, el rol de Editor incluye todos los permisos necesarios.
- Si la respuesta es "no", debes otorgar explícitamente los siguientes roles para garantizar que el MIG pueda funcionar:
- Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1): Se requiere para crear, enumerar y borrar instancias de VM. - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser): Se requiere para adjuntar una cuenta de servicio a las VMs nuevas.
- Administrador de instancias de Compute (v1) (
Crea un clúster de Slurm con el modelo de aprovisionamiento de inicio flexible
Para crear un clúster de Slurm que use el modelo de aprovisionamiento de Flex Start, debes especificar provisioning_model dentro de la configuración del grupo de nodos de la especificación del clúster cuando envíes la solicitud de creación del clúster a través de la API.
Fragmento de configuración de ejemplo: Guarda la siguiente configuración JSON en un archivo llamado cluster_config.json. En este ejemplo, se usa explícitamente un slurm_spec.
Reemplaza los marcadores de posición (por ejemplo, <project-id>, <region>, <zone>) por tus valores reales.
{
"display_name": "flexvm",
"name": "projects/<project-id>/locations/<region>/modelDevelopmentClusters/",
"network": {
"network": "projects/<project-id>/global/networks/default",
"subnetwork": "projects/<project-id>/regions/<region>/subnetworks/default"
},
"node_pools": [
{
"id": "login",
"machine_spec": { "machine_type": "n2-standard-8" },
"scaling_spec": { "min_node_count": 1, "max_node_count": 1 },
"enable_public_ips": "true",
"zone": "<zone>",
"boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 }
},
{
"id": "a3u",
"machine_spec": {
"machine_type": "a3-ultragpu-8g",
"accelerator_type": "NVIDIA_H200_141GB",
"accelerator_count": 8
},
"provisioning_model": "FLEX_START",
"flex_start_max_duration": "604800s",
"scaling_spec": { "min_node_count": 0, "max_node_count": 2 },
"zone": "<zone>",
"enable_public_ips": "true",
"boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 400 }
}
],
"orchestrator_spec": {
"slurm_spec": {
"home_directory_storage": "projects/<project-id>/locations/<zone>/instances/<filestore-id>",
"partitions": [ { "id": "a3u", "node_pool_ids": [ "a3u" ] } ],
"login_node_pool_id": "login"
}
}
}
Sigue los pasos que se indican en Crea un clúster de Slurm para autenticarte y enviar la solicitud.
Duración máxima del inicio flexible: De manera opcional, puedes establecer la duración máxima de ejecución para tus instancias de inicio flexible. Usa el campo flex_start_max_duration en la configuración del grupo de nodos y especifica el valor como una cadena en segundos, con una "s" al final (por ejemplo, "172800s" para 2 días). Si se omite, el sistema establece de forma predeterminada 7 días.
Ciclo de vida operativo y resiliencia
Comprender el ciclo de vida de los nodos de inicio flexible en un entorno de Slurm en Gemini Enterprise Agent Platform es fundamental para planificar tus trabajos.
Restricciones de inicio flexible
Todas las VMs de inicio flexible tienen una duración máxima de ejecución fija, que se define con el parámetro de configuración flex_start_max_duration.
- Límite de duración: De forma predeterminada,
flex_start_max_durationse establece en 7 días. Puedes anular este límite especificando unflex_start_max_durationpersonalizado entre 30 segundos y un máximo de 7 días (604,800 segundos) en la configuración de tu grupo de nodos para que coincida mejor con los tiempos de ejecución esperados de tus trabajos. - Finalización: Cuando se alcanza este límite, Compute Engine finaliza estrictamente la instancia.
Comportamiento del escalamiento de nodos
En las siguientes secciones, se describen las dos estrategias de ajuste disponibles: estática y dinámica.
Nodo estático
Los nodos estáticos te permiten mantener un grupo fijo de recursos que siempre están disponibles (por ejemplo, min_node_count > 0).
- Aprovisionamiento: Los nodos se solicitan de inmediato cuando se crea o cambia el tamaño del clúster para cumplir con la cantidad mínima de nodos.
- Vencimiento y recuperación: Cuando un nodo estático de Flex Start alcanza su
flex_start_max_durationy Compute Engine lo finaliza, el sistema intenta automáticamente volver a crear el nodo para restablecer la capacidad definida del clúster. Este ciclo garantiza que el grupo estático permanezca completo, independientemente de si un trabajo de Slurm está esperando en los nodos.
Nodo dinámico
Los nodos dinámicos permiten que el clúster escale verticalmente solo cuando sea necesario.
- Aprovisionamiento: Cuando un trabajo se pone en cola (ingresa en un estado
PENDING), el programador de Slurm solicita recursos creando un grupo de instancias administrado y emitiendo una solicitud de cambio de tamaño. - Vencimiento y recuperación: Cuando vence el plazo, el sistema aprovisiona un nuevo nodo de Flex Start solo si hay un trabajo de Slurm pendiente en los nodos.
Resistencia y reparación automática del clúster
Slurm en Gemini Enterprise Agent Platform supervisa el estado del nodo en etapas clave del ciclo de vida del trabajo. Las verificaciones de estado se ejecutan antes de que comience un trabajo (el prólogo) y después de que se complete (el epílogo) para ayudar a mantener la estabilidad del trabajo.
- Manejo de errores de hardware: Si el servicio detecta problemas críticos de hardware (como errores de GPU), está diseñado para reparar automáticamente la VM en mal estado.
- Reemplazo automático: Si el trabajo aún está en estado PENDING (o se volvió a poner en cola en estado PENDING debido a la falla del nodo), el sistema aprovisiona automáticamente una nueva instancia de Flex Start para reemplazar la VM en mal estado. Esto permite que tu carga de trabajo continúe en hardware en buen estado sin intervención manual.