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 basado en 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 la A4, y la configuración del orquestador de Slurm, todo en un archivo JSON. También se incluye cómo usar curl y las llamadas a la API de REST 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 tu política de la 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 utiliza Cloud NAT para el tráfico de salida de 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 de sus nodos de acceso y trabajadores.

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 mejor se adapte a tus necesidades y úsalo como punto de partida.

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

Solo GPU con Filestore

Esta es la configuración estándar. Proporciona una instancia de Filestore que actúa como el directorio /home para el clúster, apto para uso general y para almacenar 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 estándar de Filestore, 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 grandes conjuntos de datos.

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 la configuración general. Para obtener una lista de los 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 la configuración de red hasta el hardware de sus nodos de acceso y de trabajador.

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 configurando parámetros slurm.conf por nombre y ejecutando secuencias de comandos de prólogo y epílogo para la configuración y limpieza automatizadas de trabajos. Los parámetros se pueden establecer 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 de 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 los mapas de configuración de Slurm.

No es necesario que los establezcas en el momento de la creación. Los tres mapas se pueden cambiar en un clúster en ejecución, sin reiniciar nodos ni interrumpir los trabajos en cola. Consulta Actualiza la 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 multifactor, la prioridad de partición y la preferencia SchedulerParameters, cuyo término bf_continue muestra la forma compuesta: un término simple activa una marca, y los términos se separan con comas. Es el tiempo de ejecución del trabajo de límites del mapa de partición y la memoria predeterminada para la partición cpu únicamente, y las etiquetas de entrada node_sets que agrupan los nodos 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 atajo 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, la obtención del estado, la enumeración de todos los clústeres y, finalmente, 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 del modelo.

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 de tu proyecto de Google Cloud en el que se creará el clúster.
  • REGION: Es la región Google Cloud del clúster y sus recursos.
  • ZONE: Es la Google Cloud zona 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 los recursos relacionados.

Ejecuta el comando create

Ahora, ejecuta el siguiente comando de gcurl. Utiliza el archivo JSON (en este ejemplo, cpu-cluster.json) como cuerpo de la solicitud y las variables de entorno que acabas de establecer para construir 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. La 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

Haz 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 anteriormente.

    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 de gcurl, se inicia el aprovisionamiento del clúster, que es una operación asíncrona de larga duración. La API muestra 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 está limitada a 10 caracteres.
  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • REGION: Es la Google Cloud región 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 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 tanto para los nodos de acceso como para los nodos trabajadores.

Configuración común del grupo 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 del nodo trabajador (por ejemplo, a3-highgpu-8g, a3-megagpu-8g, a3-ultragpu-8g, a4-highgpu-8g). Para obtener la lista completa de los 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 igual al 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 imagen completa o una ruta de acceso al recurso de la familia de imágenes (por ejemplo, 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. Configúralo 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 preexistentes para activar en el grupo de nodos para el acceso compartido a archivos.
  • LUSTRES (corresponde a lustres dentro de un objeto node_pools): Es una lista de instancias de Lustre preexistentes para activar en el grupo de nodos para el acceso a archivos de alto rendimiento.

Configuración específica del trabajador

  • ACCELERATOR_TYPE: Es el acelerador de GPU correspondiente que se adjuntará a los nodos trabajadores. Los valores admitidos son los siguientes:
    • NVIDIA_H100_80GB
    • NVIDIA_H100_MEGA_80GB
    • NVIDIA_H200_141GB
    • NVIDIA_B200
  • ACCELERATOR_COUNT: Es la cantidad de aceleradores que se deben conectar a cada nodo trabajador.
  • RESERVATION_AFFINITY_TYPE (corresponde a machine_spec.reservation_affinity.reservationAffinityType): Es la afinidad de la 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 de recurso completo de la reserva que se proporciona 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 debe 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 una partición de forma explícita (por ejemplo, cuando se ejecuta sbatch sin la marca --partition). Si no se configura, la primera partición de la lista de particiones se convierte en la predeterminada, por lo que reordenar 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: Parámetros de Slurm establecidos por nombre. Consulta Mapas de configuración de Slurm.
  • scheduling y accounting: Se reemplazaron. Estos dos objetos exponen un conjunto fijo de parámetros de prioridad, preferencia y contabilidad, cada uno de los cuales se puede establecer por nombre en el mapa config con alcance del clúster (priority_type como "PriorityType", preempt_mode como "PreemptMode", y así sucesivamente). 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.

Mapas de configuración de Slurm

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

  • config: Es la configuración con alcance del clúster, escrita como líneas globales de Key=Value.
  • 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 de node_pool_id y un mapa de config. La configuración se escribe como pares adicionales en la línea NodeName= para 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 los documenta SchedMD, 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 misma manera 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 de 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 los clústeres de entrenamiento de Gemini Enterprise Agent Platform.

Cuando realizas la solicitud, se rechaza un parámetro que no se admite en el alcance en el que lo estableces o un valor que no es válido para ese parámetro, 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 trabajos, por lo que no se pueden establecer HealthCheckProgram, HealthCheckInterval, HealthCheckNodeState y RequeueExit.
  • Prolog y Epilog se configuran a través de prolog_bash_scripts y epilog_bash_scripts, respectivamente.
  • Los parámetros slurmdbd.conf, como StorageHost y PurgeJobAfter, no se pueden configurar: la base de datos de contabilidad la administra el servicio.
  • En el alcance de la partición, se rechaza Default. La partición predeterminada es una elección para todo el clúster, establecida 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.