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
-
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 enupdateMask.Los siguientes campos dentro del recurso
ModelDevelopmentClusterse pueden especificar 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 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 comoUSER_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 configuresnode_imagetú mismo, por lo que una actualización deUSER_ONLYque omitanode_imageno 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.
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'
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.
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.
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.
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.
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.
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
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.