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 Visualiza 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 la ModelDevelopmentCluster completa a la que deseas actualizar.

Por ejemplo, para actualizar el recuento de nodos de un grupo de un clúster solo de 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): Es una FieldMask que especifica qué campos del recurso de clúster de Model Development se deben actualizar. Solo se modifican los campos que se indican en updateMask.

    Los siguientes campos dentro del recurso ModelDevelopmentCluster se pueden especificar 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 los parámetros de 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 de campo especificados por el usuario de la solicitud. El servicio no actualizará los campos administrados por el servicio, como las secuencias de comandos 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 tú mismo, 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 de campo especificados por el usuario y permite que el servicio actualice los campos administrados por el servicio.
    Te recomendamos usar 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

Para 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 y esperada de elementos en la carga útil de la solicitud para reemplazar la lista existente por completo.

Cambia la partición predeterminada

Para cambiar la partición predeterminada sin volver a enviar partitions, configura 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. Aplicar esta configuración no reinicia ni vacía ningún nodo: el servicio vuelve a generar 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. Se quitará cualquier parámetro que omitas. Para borrar un mapa, asigna un nombre a su ruta de acceso en updateMask y envíalo vacío.

El siguiente comando activa la interrupción de prioridad de partición para 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 o el otro; se rechaza una solicitud que establece ambos.

Si llamas a PATCH sin un updateMask, el servicio compara toda tu carga útil con el clúster actual, por lo que una carga útil que omita estos parámetros de configuración borrará lo que ya tenga el clúster. Pasa un updateMask para definir el alcance de la actualización a los campos que deseas cambiar. Se borra un campo que nombras, pero que dejas fuera de 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 nombra los tres en la updateMask para que se borren los campos más antiguos. Después de eso, basta con un updateMask de orchestrator_spec.slurm_spec.config.

Selección de imágenes de nodo

Debido a que node_pools se reemplaza por completo, un grupo de nodos en tu 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 más reciente disponible, que suele ser lo que deseas: selecciona el controlador, la seguridad y las correcciones de errores.

Para mantener un grupo de nodos en una imagen específica en todas las actualizaciones, establece node_image en esa imagen (por ejemplo, projects/IMAGE_PROJECT/global/images/IMAGE). Si lees el valor actual de Get para volver a enviarlo, ten en cuenta que un clúster que nunca se actualizó informa un node_image vacío, a menos que se haya establecido node_image cuando se creó el clúster.

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 las secuencias de comandos 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
  

Este comando devuelve una operación de larga duración si se ejecuta de forma correcta, que luego 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 orienten 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 entregar solicitudes de inferencia en línea a gran escala.
  • Optimiza los costos: Revisa con regularidad el uso del clúster y bórralo cuando no esté en uso para minimizar la facturación del hardware reservado.