Une fois qu'un cluster est déployé, vous pouvez le modifier ou le supprimer à l'aide des points de terminaison de l'API Agent Platform suivants :
Update: modifie la configuration d'un cluster existant.Delete: supprime définitivement un cluster et ses ressources.
La mise à jour d'un cluster n'est disponible que via l'API Agent Platform. Vous pouvez supprimer un cluster à partir de l'API Agent Platform ou de la console Google Cloud .
Pour savoir comment lister tous les clusters ou afficher des clusters individuels, consultez Afficher les clusters.
Authentification
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Mettre à jour un cluster
UPDATE_PAYLOAD spécifie le chemin d'accès local à un fichier JSON qui définit l'intégralité de la ressource ModelDevelopmentCluster que vous souhaitez mettre à jour.
Par exemple, pour mettre à jour le nombre de nœuds d'un pool d'un cluster avec processeur uniquement, utilisez la charge utile JSON suivante :
{ "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(chaîne, facultatif) : FieldMask qui spécifie les champs de la ressource de cluster de développement de modèle à mettre à jour. Seuls les champs listés dans le masqueupdateMasksont modifiés.Les champs suivants de la ressource
ModelDevelopmentClusterpeuvent être spécifiés dansupdateMask: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.schedulingetorchestrator_spec.slurm_spec.accounting: anciens champs remplacés parconfig. Un cluster utilise l'un ou l'autre. Consultez Mettre à jour les paramètres de configuration de Slurm.orchestrator_spec.slurm_spec.node_sets
-
updateMode(énumération, facultatif) : spécifie le mode de mise à jour. Les valeurs possibles sont les suivantes :UPDATE_MODE_UNSPECIFIED: valeur par défaut, traitée commeUSER_AND_SERVICE.USER_ONLY: n'appliquez que les modifications de champ spécifiées par l'utilisateur dans la requête. Le service n'actualise pas les champs gérés par le service, tels que les scripts de démarrage, de prologue ou d'épilogue. Chaque pool de nœuds reste également sur l'image qu'il exécute actuellement, sauf si vous définissez vous-mêmenode_image. Par conséquent, une mise à jourUSER_ONLYqui ometnode_imagene recrée pas vos nœuds.USER_AND_SERVICE: appliquez les modifications apportées aux champs spécifiés par l'utilisateur et laissez le service actualiser les champs gérés par le service.
USER_AND_SERVICEpour vous assurer que votre cluster est à jour.
La commande ci-dessous met à jour à la fois la configuration du pool de nœuds et les partitions 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'
Pour les champs répétés, tels que node_pools, prolog_bash_scripts et epilog_bash_scripts, l'API n'accepte qu'une opération de remplacement complet. L'utilisateur doit fournir la liste complète des éléments attendus dans la charge utile de la requête pour remplacer complètement la liste existante.
Pour modifier la partition par défaut sans renvoyer partitions, définissez default_partition_id et spécifiez uniquement orchestrator_spec.slurm_spec.default_partition_id dans updateMask. Une mise à jour qui supprime ou renomme la partition spécifiée par default_partition_id est refusée.
Vous pouvez modifier la configuration Slurm sur un cluster en cours d'exécution. L'application de ces paramètres ne redémarre ni ne draine aucun nœud : le service régénère slurm.conf et recharge le contrôleur Slurm, de sorte que les jobs en file d'attente et en cours d'exécution ne sont pas affectés.
USER_ONLY.
Une fois l'opération terminée, il peut s'écouler un court délai avant que les nouveaux paramètres n'apparaissent dans scontrol show config.
Les paramètres à l'échelle du cluster sont nommés par orchestrator_spec.slurm_spec.config, les paramètres du pool de nœuds par orchestrator_spec.slurm_spec.node_sets et les paramètres de partition par orchestrator_spec.slurm_spec.partitions, qui inclut le config de chaque partition ainsi que son appartenance. Chaque carte est remplacée intégralement, de la même manière que les champs répétés décrits précédemment. Envoyez l'ensemble complet des paramètres souhaités. Un paramètre que vous omettez est supprimé. Pour effacer une carte, nommez son chemin d'accès dans updateMask et envoyez-le vide.
La commande ci-dessous active la préemption de priorité de partition pour un cluster existant.
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'
Où update-payload.json contient, en partie :
{ ..., "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" } } } }
Définissez les paramètres à l'échelle du cluster dans config plutôt que dans scheduling et accounting, qu'il remplace. Un cluster utilise l'un ou l'autre. Une requête qui définit les deux est rejetée.
Si vous appelez PATCH sans updateMask, le service compare l'intégralité de votre charge utile au cluster actuel. Par conséquent, une charge utile qui omet ces paramètres efface tout ce que le cluster possède déjà. Transmettez un updateMask pour limiter la mise à jour aux champs que vous souhaitez modifier. Un champ que vous nommez, mais que vous omettez dans la charge utile, est effacé.
Pour déplacer un cluster existant de scheduling et accounting vers config, envoyez chaque paramètre dans config en utilisant son nom slurm.conf, par exemple AccountingStorageEnforce ou PriorityWeightQOS, laissez scheduling et accounting en dehors de la charge utile, et nommez les trois dans updateMask afin que les anciens champs soient effacés. Ensuite, un updateMask de orchestrator_spec.slurm_spec.config seul suffit.
Étant donné que node_pools est entièrement remplacé, un pool de nœuds de votre charge utile de mise à jour qui omet node_image est résolu en l'image par défaut actuelle pour son type de machine. Cette valeur par défaut évolue au fil du temps. Par conséquent, l'omission de node_image déplace le pool de nœuds vers la dernière image disponible, ce qui correspond souvent à ce que vous souhaitez : elle récupère les correctifs de pilote, de sécurité et de bugs.
Pour conserver un pool de nœuds sur une image spécifique lors des mises à jour, définissez node_image sur cette image. Si vous lisez la valeur actuelle à partir de Get pour la renvoyer, notez qu'un cluster qui n'a jamais été mis à jour renvoie un node_image vide.
Une requête réussie renvoie une opération de longue durée (LRO). Vous pouvez ensuite surveiller l'état de cette opération à l'aide de la commande suivante :
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Supprimer un cluster
gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
Si cette commande aboutit, elle renvoie une opération de longue durée que vous pouvez ensuite surveiller à l'aide de la commande operations describe.
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Étapes suivantes
La gestion de votre cluster d'entraînement Gemini Enterprise Agent Platform vous permet d'optimiser son utilisation, de l'intégrer à des workflows automatisés et de préparer vos modèles entraînés pour le déploiement.
- Orchestrez votre entraînement avec Gemini Enterprise Agent Platform Pipelines : automatisez l'ensemble du cycle de vie de vos jobs d'entraînement, de la préparation des données à l'enregistrement des modèles, à l'aide de pipelines ciblant votre cluster géré.
- Surveillez et déboguez vos jobs d'entraînement : suivez la progression et l'utilisation des ressources, et identifiez les problèmes liés à vos jobs d'entraînement distribués exécutés sur le cluster.
- Déployez votre modèle pour l'inférence : une fois vos modèles entraînés et enregistrés, déployez-les sur un point de terminaison Gemini Enterprise Agent Platform pour diffuser des requêtes d'inférence en ligne à grande échelle.
- Optimisez les coûts : examinez régulièrement l'utilisation de votre cluster et supprimez-le lorsqu'il n'est pas utilisé activement pour minimiser la facturation du matériel réservé.