Administrar 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.

Una vez que se implementa un clúster, puedes cambiarlo o quitarlo con los siguientes endpoints de API de Agent Platform:

  • Update: Modifica la configuración de un clúster existente.
  • Delete: Quita de forma permanente un clúster y sus recursos.

La actualización de un clúster solo está disponible a través de la API de Agent Platform. Puedes borrar un clúster desde la API de Agent Platform o la consola de Google Cloud .

Para obtener instrucciones sobre cómo enumerar todos los clústeres o ver clústeres individuales, consulta Cómo ver clústeres.

Autenticación

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

Actualiza un clúster

UPDATE_PAYLOAD especifica la ruta de acceso local a un archivo JSON que define el ModelDevelopmentCluster completo al que deseas actualizar.

Por ejemplo, para actualizar el recuento de nodos de un grupo de un clúster solo para CPU, usa la siguiente carga útil de JSON:

{
  "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": UPDATED_MIN_NODE_COUNT,
        "max_node_count": UPDATED_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": 1,
        "max_node_count": 1
      },
      "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"
    }
  }
}

gcurl -X PATCH -d @UPDATE_PAYLOAD https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
Parámetros de consulta
  • updateMask (cadena, opcional): Un objeto FieldMask que especifica qué campos del recurso de clúster de desarrollo del modelo se deben actualizar. Solo se cambian los campos que se indican en updateMask.

    En el recurso ModelDevelopmentCluster, se pueden especificar los siguientes campos en updateMask:

    • labels
    • node_pools
    • orchestrator_spec.slurm_spec.partitions
    • orchestrator_spec.slurm_spec.default_partition_id
    • orchestrator_spec.slurm_spec.login_node_pool_id
    • orchestrator_spec.slurm_spec.prolog_bash_scripts
    • orchestrator_spec.slurm_spec.epilog_bash_scripts
    • orchestrator_spec.slurm_spec.config
    • orchestrator_spec.slurm_spec.scheduling y orchestrator_spec.slurm_spec.accounting: Son campos heredados que config reemplaza. Un clúster usa una o la otra. Consulta Actualiza la configuración de Slurm.
    • orchestrator_spec.slurm_spec.node_sets
  • updateMode (enum, opcional): Especifica el modo de actualización. Los valores posibles son:

    • UPDATE_MODE_UNSPECIFIED: Es el valor predeterminado, que se trata como USER_AND_SERVICE.
    • USER_ONLY: Aplica solo los cambios en los campos especificados por el usuario de la solicitud. El servicio no actualizará los campos administrados por el servicio, como los guiones de inicio, prólogo o epílogo. Cada grupo de nodos también permanece en la imagen que se ejecuta actualmente, a menos que configures node_image por tu cuenta, por lo que una actualización de USER_ONLY que omita node_image no volverá a crear tus nodos.
    • USER_AND_SERVICE: Aplica los cambios en los campos especificados por el usuario y permite que el servicio actualice los campos administrados por el servicio.
    Te recomendamos que uses USER_AND_SERVICE para asegurarte de que tu clúster esté actualizado.

El siguiente comando actualiza la configuración del grupo de nodos y las particiones de Slurm.

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.partitions,node_pools&updateMode=USER_AND_SERVICE'
Nota importante sobre los campos repetidos

En el caso de los campos repetidos, como node_pools, prolog_bash_scripts y epilog_bash_scripts, la API solo admite una operación de reemplazo completa. El usuario debe proporcionar la lista completa esperada de elementos en la carga útil de la solicitud para reemplazar la lista existente por completo.

Cómo cambiar la partición predeterminada

Para cambiar la partición predeterminada sin volver a enviar partitions, establece default_partition_id y especifica solo orchestrator_spec.slurm_spec.default_partition_id en updateMask. Se rechaza una actualización que quita o cambia el nombre de la partición que especifica default_partition_id.

Actualiza los parámetros de configuración de Slurm

Puedes cambiar la configuración de Slurm en un clúster en ejecución. La aplicación de estos parámetros de configuración no reinicia ni agota ningún nodo: el servicio regenera slurm.conf y vuelve a cargar el controlador de Slurm, por lo que los trabajos en cola y en ejecución no se ven afectados.

Siempre existe el riesgo de que los nodos se reinicien después de que se completen los trabajos en ejecución debido a cambios en las dependencias subyacentes. Sin embargo, ese riesgo se minimiza con el modo de actualización USER_ONLY.

Es posible que la nueva configuración tarde un poco en aparecer en scontrol show config después de que se complete la operación.

La configuración con alcance de clúster se denomina orchestrator_spec.slurm_spec.config, la configuración del grupo de nodos, orchestrator_spec.slurm_spec.node_sets, y la configuración de la partición, orchestrator_spec.slurm_spec.partitions, que lleva el config de cada partición junto con su membresía. Cada mapa se reemplaza por completo, de la misma manera que los campos repetidos descritos antes. Envía el conjunto completo de parámetros que deseas. Si omites un parámetro, se quitará. Para borrar un mapa, asígnale un nombre a su ruta en updateMask y envíalo vacío.

El siguiente comando activa la preferencia de partición para la preferencia en un clúster existente.

gcurl -X PATCH -d @update-payload.json \
'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.config&updateMode=USER_ONLY'

En el ejemplo anterior, update-payload.json contiene, en parte, lo siguiente:

{
  ...,
  "orchestrator_spec": {
    "slurm_spec": {
      ...,
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "REQUEUE",
        "PreemptExemptTime": "1:01",
        "SchedulerParameters": "bf_continue,bf_window=1440"
      }
    }
  }
}

Establece parámetros para todo el clúster en config en lugar de en scheduling y accounting, que reemplaza. Un clúster usa uno u otro. Se rechaza una solicitud que establece ambos.

Si llamas a PATCH sin un updateMask, el servicio compara todo tu payload con el clúster actual, por lo que un payload que omite estos parámetros de configuración borra lo que el clúster ya tiene. Pasa un updateMask para limitar el alcance de la actualización a los campos que deseas cambiar. Se borra un campo que nombras, pero que no incluyes en la carga útil.

Para mover un clúster existente de scheduling y accounting a config, envía cada parámetro de configuración en config con su nombre slurm.conf, por ejemplo, AccountingStorageEnforce o PriorityWeightQOS, deja scheduling y accounting fuera de la carga útil y asigna un nombre a los tres en la updateMask para que se borren los campos más antiguos. Después de eso, un updateMask de orchestrator_spec.slurm_spec.config por sí solo es suficiente.

Selección de imágenes de nodo

Debido a que node_pools se reemplaza por completo, un grupo de nodos en la carga útil de actualización que omite node_image se resuelve en la imagen predeterminada actual para su tipo de máquina. Ese valor predeterminado avanza con el tiempo, por lo que omitir node_image mueve el grupo de nodos a la imagen disponible más reciente, que suele ser lo que deseas: incluye correcciones de controladores, seguridad y errores.

Para mantener un grupo de nodos en una imagen específica en todas las actualizaciones, establece node_image en esa imagen. Si lees el valor actual de Get para devolverlo, ten en cuenta que un clúster que nunca se actualizó informa un node_image vacío.

Comportamiento posterior a la actualización y estado del clúster

Una solicitud correcta devuelve una operación de larga duración (LRO). Luego, puedes supervisar el estado de esta operación con el siguiente comando:

gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Una vez que la operación de actualización se completa correctamente, la mayoría de las modificaciones se aplican de inmediato (o dentro del tiempo de sincronización de Slurm de 15 s) y no requieren ninguna otra acción. Solo los cambios en la infraestructura de procesamiento del clúster subyacente, incluidas las modificaciones en las fuentes de almacenamiento y los scripts de inicio, requieren que se vuelvan a crear los recursos.

Borrar un clúster

  gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
  

Si este comando se ejecuta correctamente, devuelve una operación de larga duración que puedes supervisar con el comando operations describe.

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

¿Qué sigue?

Administrar tu clúster de entrenamiento de Gemini Enterprise Agent Platform te permite optimizar su uso, integrarlo en flujos de trabajo automatizados y preparar tus modelos entrenados para la implementación.

  • Organiza tu entrenamiento con Gemini Enterprise Agent Platform Pipelines: Automatiza todo el ciclo de vida de tus trabajos de entrenamiento, desde la preparación de datos hasta el registro de modelos, con canalizaciones que se dirigen a tu clúster administrado.
  • Supervisa y depura tus trabajos de entrenamiento: Realiza un seguimiento del progreso y el uso de recursos, y, además, identifica problemas con tus trabajos de entrenamiento distribuido que se ejecutan en el clúster.
  • Implementa tu modelo para la inferencia: Después de entrenar y registrar tus modelos, impleméntalos en un extremo de Gemini Enterprise Agent Platform para atender solicitudes de inferencia en línea a gran escala.
  • Optimiza los costos: Revisa periódicamente la utilización del clúster y bórralo cuando no esté en uso activo para minimizar la facturación del hardware reservado.