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
-
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 enupdateMask.En el recurso
ModelDevelopmentCluster, se pueden especificar los siguientes campos enupdateMask:labelsnode_poolsorchestrator_spec.slurm_spec.partitionsorchestrator_spec.slurm_spec.default_partition_idorchestrator_spec.slurm_spec.login_node_pool_idorchestrator_spec.slurm_spec.prolog_bash_scriptsorchestrator_spec.slurm_spec.epilog_bash_scriptsorchestrator_spec.slurm_spec.configorchestrator_spec.slurm_spec.schedulingyorchestrator_spec.slurm_spec.accounting: Son campos heredados queconfigreemplaza. 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 comoUSER_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 configuresnode_imagepor tu cuenta, por lo que una actualización deUSER_ONLYque omitanode_imageno 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.
USER_AND_SERVICEpara 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'
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.
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.
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.
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.
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.
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
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.