Crear clúster

Si te interesan los clústeres de entrenamiento de Gemini Enterprise Agent Platform, comunícate con tu representante de ventas para obtener acceso.

En esta página, se proporciona el método directo controlado por la API para crear y administrar un clúster de entrenamiento. Aprenderás a definir la configuración completa de tu clúster, incluidos los nodos de acceso, las particiones de GPU de alto rendimiento, como A4, y los parámetros de configuración del organizador de Slurm, en un archivo JSON. También se incluye cómo usar las llamadas a la API de REST y curl para implementar esta configuración, crear el clúster y administrar su ciclo de vida con las operaciones GET, LIST, UPDATE y DELETE.

Define la configuración del clúster

Crea un archivo JSON para definir la configuración completa de tu clúster de entrenamiento.

Si la política de tu organización prohíbe las direcciones IP públicas en las instancias de procesamiento, implementa el clúster de entrenamiento con el parámetro enable_public_ips: false y usa Cloud NAT para la salida a Internet.

El primer paso para aprovisionar un clúster de entrenamiento es definir su configuración completa en un archivo JSON. Este archivo actúa como el plano de tu clúster y especifica todo, desde su nombre y configuración de red hasta el hardware para sus nodos de acceso y de trabajador.

En la siguiente sección, se proporcionan varios archivos de configuración JSON completos que sirven como plantillas prácticas para una variedad de casos de uso comunes. Consulta esta lista para encontrar el ejemplo que más se ajuste a tus necesidades y úsalo como punto de partida.

Cada ejemplo va seguido de una descripción detallada de los parámetros clave que se usan en esa configuración específica.

GPU solo con Filestore

Esta es la configuración estándar. Proporciona una instancia de Filestore que sirve como el directorio /home para el clúster, adecuado para el uso general y el almacenamiento de datos del usuario.

En el siguiente ejemplo, se muestra el contenido de gpu-filestore.json. Esta especificación crea un clúster con una partición de GPU. Puedes usarlo como plantilla y modificar valores como machineType o nodeCount para que se adapten a tus necesidades.

Para obtener una lista de parámetros, consulta Referencia de parámetros.

 {
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "labels": { "example-key": "example-value" }
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "labels": { "example-key": "example-value" }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

GPU con Filestore y Managed Lustre

Esta configuración avanzada incluye la instancia de Filestore estándar, además de un sistema de archivos Lustre de alto rendimiento. Elige esta opción si tus trabajos de entrenamiento requieren acceso de alta capacidad de procesamiento a conjuntos de datos grandes.

Para obtener una lista de parámetros, consulta Referencia de parámetros.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}
  

GPU con secuencia de comandos de inicio

En este ejemplo, se muestra cómo agregar una secuencia de comandos personalizada a un grupo de nodos. Esta secuencia de comandos se ejecuta en todos los nodos de ese grupo durante el inicio. Para configurar esto, agrega los campos pertinentes a la definición de tu grupo de nodos, además de los parámetros de configuración generales. Para obtener una lista de parámetros y sus descripciones, consulta la Referencia de parámetros.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n"
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "PROVISIONING_MODEL",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n"
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Clúster solo de CPU

Para aprovisionar un entorno de clúster de entrenamiento, primero debes definir su configuración completa en un archivo JSON. Este archivo actúa como el plano de tu clúster, ya que especifica todo, desde su nombre y configuración de red hasta el hardware para sus nodos de acceso y nodos trabajadores.

Para obtener una lista de parámetros, consulta Referencia de parámetros.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Configuración avanzada de Slurm

En este ejemplo, se proporciona un control detallado sobre Slurm mediante la configuración de los parámetros de slurm.conf por nombre y la ejecución de secuencias de comandos de prólogo y epílogo para la configuración y la limpieza automatizadas de los trabajos. Los parámetros se pueden configurar para todo el clúster, para una sola partición o para un solo grupo de nodos.

Hay tres mapas de configuración, uno para cada registro slurm.conf:

  • config en la especificación de Slurm para la configuración de todo el clúster
  • config en una partición
  • Entrada node_sets para un grupo de nodos

Para conocer las reglas sobre los nombres y valores de los parámetros, y qué parámetros se rechazan, consulta Mapas de configuración de Slurm.

No es necesario que los definas en el momento de la creación. Los tres mapas se pueden cambiar en un clúster en ejecución, sin reiniciar los nodos ni interrumpir los trabajos en cola. Consulta Actualiza los parámetros de configuración de Slurm.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PriorityWeightFairshare": "10000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "SUSPEND,GANG",
        "SchedulerParameters": "bf_continue,bf_window=1440,bf_resolution=600",
        "AccountingStorageEnforce": "limits,qos"
      },
      "prolog_bash_scripts": [
        "#!/bin/bash\necho 'Prolog script running'"
      ],
      "epilog_bash_scripts": [
        "#!/bin/bash\necho 'Epilog script running'"
      ],
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ],
          "config": {
            "MaxTime": "4-00:00:00",
            "DefMemPerCPU": "4096",
            "PriorityTier": "20"
          }
        }
      ],
      "node_sets": [
        {
          "node_pool_id": "cpu",
          "config": {
            "Weight": "10",
            "Features": "cpu,spot"
          }
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

El mapa con alcance de clúster establece la prioridad de varios factores, la interrupción de la prioridad de la partición y SchedulerParameters, cuyo término bf_continue muestra la forma compuesta: un término simple activa una marca y los términos se separan por comas. El mapa de particiones limita el tiempo de ejecución del trabajo y la memoria predeterminada solo para la partición cpu, y las etiquetas de entrada node_sets etiquetan los nodos de ese grupo para que los trabajos puedan seleccionarlos con --constraint.

Una vez que tu clúster esté definido en un archivo JSON, usa los siguientes comandos de la API de REST para implementarlo y administrarlo. En los ejemplos, se usa un alias gcurl, que es un acceso directo autenticado y conveniente para interactuar con los extremos de la API. Estos comandos abarcan todo el ciclo de vida, desde la implementación inicial del clúster hasta la actualización de un clúster, la obtención de su estado, la creación de una lista de todos los clústeres y, por último, la eliminación del clúster.

Autenticación

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

Crea un archivo JSON

Crea un archivo JSON (por ejemplo, @cpu-cluster.json) para especificar la configuración de tu clúster de entrenamiento de modelos.

Implementa el clúster

Una vez que hayas creado el archivo de configuración JSON, puedes implementar el clúster con la API de REST.

Configura las variables de entorno

Antes de ejecutar el comando, establece las siguientes variables de entorno. Esto hace que el comando de la API sea más limpio y fácil de administrar.

  • PROJECT_ID: Es el ID del proyecto de Google Cloud en el que se creará el clúster.
  • REGION: Es la región de Google Cloud para el clúster y sus recursos.
  • ZONE: Es la zona de Google Cloud en la que se aprovisionarán los recursos del clúster.
  • CLUSTER_ID: Es un identificador único para tu clúster de entrenamiento, que también se usa como prefijo para nombrar recursos relacionados.

Ejecuta el comando create

Ahora, ejecuta el siguiente comando de gcurl. Usa el archivo JSON (en este ejemplo, cpu-cluster.json) como el cuerpo de la solicitud y las variables de entorno que acabas de configurar para crear el extremo de API y los parámetros de consulta.

  gcurl -X POST -d @cpu-cluster.json https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters?model_development_cluster_id=CLUSTER_ID
    

Una vez que comience la implementación, se generará un ID de operación. Asegúrate de copiar este ID. Lo necesitarás para validar tu clúster en el siguiente paso.

  gcurl -X POST -d @cpu-cluster.json https://us-central1-aiplatform.googleapis.com/v1beta1/projects/managedtraining-project/locations/us-central1/modelDevelopmentClusters?model_development_cluster_id=training
  {
      "name": "projects/1059558423163/locations/us-central1/operations/2995239222190800896",
      "metadata": {
      "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateModelDevelopmentClusterOperationMetadata",
      "genericMetadata": {
        "createTime": "2025-10-24T14:16:59.233332Z",
        "updateTime": "2025-10-24T14:16:59.233332Z"
      },
      "progressMessage": "Create Model Development Cluster request received, provisioning..."
  }
    

Valida la implementación del clúster

Realiza un seguimiento del progreso de la implementación con el ID de operación que se proporcionó cuando implementaste el clúster. Por ejemplo, 2995239222190800896 es el ID de la operación en el ejemplo citado antes.

    gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

En resumen

Cuando envías la configuración del clúster con el comando POST gcurl, se inicia el aprovisionamiento del clúster, que es una operación asíncrona de larga duración. La API devuelve de inmediato una respuesta que contiene un Operation ID. Es fundamental que guardes este ID, ya que lo usarás en los siguientes pasos para supervisar el progreso de la implementación, verificar que el clúster se haya creado correctamente y administrar su ciclo de vida.

Referencia del parámetro

En la siguiente lista, se describen todos los parámetros que se usan en los ejemplos de configuración. Los parámetros se organizan en grupos lógicos según el recurso que configuran.

Configuración general y de red

  • DISPLAY_NAME: Es un nombre único para tu clúster de entrenamiento. La cadena solo puede contener caracteres alfanuméricos en minúscula, debe comenzar con una letra y tiene un límite de 10 caracteres.
  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • REGION: Es la región de Google Cloud en la que se ubicarán el clúster y sus recursos.
  • NETWORK: Es la red de nube privada virtual que se usará para los recursos del clúster.
  • ZONE: Es la zona de Google Cloud para el clúster y sus recursos.
  • SUBNETWORK: Es la subred que se usará para los recursos del clúster.

Configuración de grupos de nodos

Los siguientes parámetros se usan para definir los grupos de nodos de acceso y de nodos trabajadores.

Configuración común de los grupos de nodos

  • ID: Es un identificador único para el grupo de nodos dentro del clúster (por ejemplo, "login", "a4", "cpu").
  • PROVISIONING_MODEL: Es el modelo de aprovisionamiento del nodo trabajador (por ejemplo, ON_DEMAND, SPOT, RESERVATION, FLEX_START).
  • MACHINE_TYPE: Es el tipo de máquina para el nodo trabajador (por ejemplo, a3-highgpu-8g, a3-megagpu-8g, a3-ultragpu-8g, a4-highgpu-8g). Para obtener la lista completa de tipos de máquinas compatibles, consulta Recursos de procesamiento.
  • MIN_NODE_COUNT: El MIN_NODE_COUNT debe ser igual que el MAX_NODE_COUNT.
  • MAX_NODE_COUNT: Para el grupo de nodos de acceso, el MAX_NODE_COUNT debe ser el mismo que el MIN_NODE_COUNT.
  • ENABLE_PUBLIC_IPS: Es un valor booleano (true o false) para determinar si el nodo de acceso tiene una dirección IP pública.
  • BOOT_DISK_TYPE: Es el tipo de disco de arranque para el nodo de acceso (por ejemplo, pd-standard, pd-ssd).
  • BOOT_DISK_SIZE_GB: Es el tamaño del disco de arranque en GB para el nodo de acceso.
  • LABELS: Es un conjunto de pares clave-valor para etiquetar el grupo de nodos.
  • NODE_IMAGE (corresponde a node_image dentro de un objeto node_pools): Es la imagen de VM desde la que se inician los nodos del grupo de nodos, como una ruta de acceso de recursos de imagen completa o de familia de imágenes (por ejemplo, projects/IMAGE_PROJECT/global/images/IMAGE o projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY ). Si la omites, el grupo de nodos usa la imagen predeterminada actual para su tipo de máquina, que avanza con el tiempo. Establécelo para mantener el grupo de nodos en una imagen específica. Si cambias la imagen de un grupo de nodos, se vuelven a crear sus nodos.

Configuración de almacenamiento adicional

  • FILESTORES (corresponde a filestores dentro de un objeto node_pools): Es una lista de instancias de Filestore existentes que se activarán en el grupo de nodos para el acceso a archivos compartidos.
  • LUSTRES (corresponde a lustres dentro de un objeto node_pools): Es una lista de instancias de Lustre preexistentes que se activarán en el grupo de nodos para acceder a archivos de alto rendimiento.

Configuración específica del trabajador

  • ACCELERATOR_TYPE: Es el acelerador de GPU correspondiente que se conectará a los nodos trabajadores. Los valores admitidos son los que se detallan a continuación:
    • NVIDIA_H100_80GB
    • NVIDIA_H100_MEGA_80GB
    • NVIDIA_H200_141GB
    • NVIDIA_B200
  • ACCELERATOR_COUNT: Es la cantidad de aceleradores que se conectarán a cada nodo trabajador.
  • RESERVATION_AFFINITY_TYPE (corresponde a machine_spec.reservation_affinity.reservationAffinityType): Es la afinidad de reserva para el grupo de nodos. Este parámetro debe ser SPECIFIC_RESERVATION, que es el único valor admitido. Cuando se usa SPECIFIC_RESERVATION, debes especificar la reserva en machine_spec.reservation_affinity.values.
  • RESERVATION_NAME: Es el nombre de la reserva que se usará para el grupo de nodos. Se usa en el nombre completo del recurso de reserva proporcionado en machine_spec.reservation_affinity.values, por ejemplo, projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME. Se requiere una reserva cuando RESERVATION_AFFINITY_TYPE es SPECIFIC_RESERVATION.

Configuración del organizador y del almacenamiento

Estos campos se definen dentro del bloque orchestrator_spec.slurm_spec del archivo JSON.

Configuración principal de Slurm y Storage

  • HOME_DIRECTORY_STORAGE (corresponde a home_directory_storage): Es el nombre completo del recurso de la instancia de Filestore preexistente que se activará como el directorio /home.
  • LOGIN_NODE_POOL_ID (corresponde a login_node_pool_id): Es el ID del grupo de nodos que se debe usar para los nodos de acceso.
  • partitions: Es una lista de objetos de partición, en la que cada objeto requiere un id y una lista de node_pool_ids.
  • default_partition_id (opcional): Es el id de la partición que se usa para ejecutar trabajos de Slurm cuando no se especifica ninguna partición de forma explícita (por ejemplo, cuando se ejecuta sbatch sin la marca --partition). Si no se establece, la primera partición de la lista de particiones se convierte en la predeterminada, por lo que, si se reordena la lista, cambiará la partición predeterminada.

Configuración avanzada de Slurm

  • prolog_bash_scripts: Es una lista de cadenas, en la que cada cadena contiene el contenido completo de una secuencia de comandos de Bash que se ejecutará antes de que comience un trabajo.
  • epilog_bash_scripts: Es una lista de cadenas, en la que cada cadena contiene el contenido completo de una secuencia de comandos de Bash que se ejecutará después de que se complete un trabajo.
  • config, partitions[].config y node_sets: Son parámetros de Slurm establecidos por nombre. Consulta Mapas de configuración de Slurm.
  • scheduling y accounting: Reemplazados. Estos dos objetos exponen un conjunto fijo de parámetros de prioridad, interrupción y contabilización, cada uno de los cuales se puede establecer por nombre en el mapa config con alcance de clúster (priority_type como "PriorityType", preempt_mode como "PreemptMode", etcétera). Aún funcionan para los clústeres que los usan, pero los clústeres nuevos deben usar config, que admite muchos más parámetros de slurm.conf que este subconjunto.

ConfigMaps de Slurm

Los parámetros de Slurm se configuran por nombre, en tres mapas, uno para cada registro slurm.conf:

  • config: Es la configuración con alcance de clúster, escrita como líneas Key=Value globales.
  • partitions[].config: Es la configuración de una partición, escrita como pares adicionales en la línea PartitionName= de esa partición.
  • node_sets: Es una lista de objetos, cada uno con un mapa node_pool_id y un mapa config. La configuración se escribe como pares adicionales en la línea NodeName= de los nodos de ese grupo de nodos. Como máximo, una entrada por grupo de nodos, y el grupo debe ser un grupo de procesamiento del clúster, no el grupo de acceso.

En los tres, las claves son nombres de parámetros de Slurm, tal como SchedMD los documenta, sin distinguir mayúsculas de minúsculas y sin tener en cuenta los guiones bajos, por lo que DefMemPerCPU, defmempercpu y def_mem_per_cpu significan el mismo parámetro. Los valores se escriben de la forma en que los escribe slurm.conf, incluidas las listas separadas por comas, como "PreemptMode": "SUSPEND,GANG", y los valores compuestos, como "SchedulerParameters": "bf_window=1440,bf_resolution=600".

Cada mapa admite un subconjunto de los parámetros slurm.conf que son válidos para su registro, no todos. Si necesitas un parámetro que no se admite, comunícate con tu contacto de clústeres de entrenamiento de Gemini Enterprise Agent Platform.

Un parámetro que no se admite en el permiso en el que lo estableces o un valor que no es legal para ese parámetro se rechaza cuando realizas la solicitud, y el error nombra el parámetro. No se descarta nada de forma silenciosa. Algunos parámetros se rechazan por un motivo específico:

  • El servicio administra la verificación de estado de los nodos y la puesta en cola de los trabajos, por lo que no se pueden configurar HealthCheckProgram, HealthCheckInterval, HealthCheckNodeState ni RequeueExit.
  • En su lugar, Prolog y Epilog se configuran a través de prolog_bash_scripts y epilog_bash_scripts.
  • Los parámetros de slurmdbd.conf, como StorageHost y PurgeJobAfter, no se pueden configurar: el servicio administra la base de datos de contabilidad.
  • En el permiso de partición, se rechaza Default. La partición predeterminada es una opción para todo el clúster, que se configura con default_partition_id.

Configuración del entorno de ejecución

Estos campos se definen dentro del bloque runtime_spec del archivo JSON.

  • service_account: Es la cuenta de servicio predeterminada que usa el clúster cuando ejecuta cualquier carga de trabajo en él. Si no se especifica, se usa la cuenta de servicio predeterminada de Compute Engine. Este campo no se puede actualizar después de crear el clúster.

¿Qué sigue?

Usa tu clúster de entrenamiento persistente activo para ejecutar tus cargas de trabajo de aprendizaje automático.