Nachdem ein Cluster bereitgestellt wurde, können Sie ihn mit den folgenden Agent Platform API-Endpunkten ändern oder entfernen:
Update: Ändert eine vorhandene Clusterkonfiguration.Delete: Entfernt einen Cluster und seine Ressourcen endgültig.
Das Aktualisieren eines Clusters ist nur über die Agent Platform API möglich. Sie können einen Cluster entweder über die Agent Platform API oder über die Cloud de Confiance -Konsole löschen.
Eine Anleitung zum Auflisten aller Cluster oder zum Aufrufen einzelner Cluster finden Sie unter Cluster ansehen.
Authentifizierung
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Cluster aktualisieren
UPDATE_PAYLOAD gibt den lokalen Pfad zu einer JSON-Datei an, die die vollständige ModelDevelopmentCluster enthält, auf die Sie aktualisieren möchten.
Wenn Sie beispielsweise die Anzahl der Knoten eines Pools eines reinen CPU-Clusters aktualisieren möchten, verwenden Sie die folgende JSON-Nutzlast:
{ "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(String, optional): Eine FieldMask, die angibt, welche Felder der Clusterressource für die Modellentwicklung aktualisiert werden sollen. Nur die inupdateMaskaufgeführten Felder werden geändert.Die folgenden Felder in der
ModelDevelopmentCluster-Ressource können in derupdateMaskangegeben werden: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.schedulingundorchestrator_spec.slurm_spec.accounting: Legacy-Felder, die durchconfigersetzt werden. Ein Cluster verwendet entweder das eine oder das andere. Siehe Slurm-Konfigurationseinstellungen aktualisieren.orchestrator_spec.slurm_spec.node_sets
-
updateMode(Enum, optional): Gibt den Aktualisierungsmodus an. Folgende Werte sind möglich:UPDATE_MODE_UNSPECIFIED: Der Standardwert, der alsUSER_AND_SERVICEbehandelt wird.USER_ONLY: Es werden nur die vom Nutzer angegebenen Feldänderungen aus der Anfrage angewendet. Der Dienst aktualisiert keine von ihm verwalteten Felder wie Start-, Prolog- oder Epilog-Scripts. Jeder Knotenpool bleibt auch auf dem Image, auf dem er derzeit ausgeführt wird, sofern Sienode_imagenicht selbst festlegen. Bei einerUSER_ONLY-Aktualisierung, bei dernode_imageausgelassen wird, werden Ihre Knoten also nicht neu erstellt.USER_AND_SERVICE: Vom Nutzer angegebene Feldänderungen werden angewendet und vom Dienst verwaltete Felder werden vom Dienst aktualisiert.
USER_AND_SERVICEzu verwenden, damit Ihr Cluster auf dem neuesten Stand ist.
Mit dem folgenden Befehl werden sowohl die Knotenpoolkonfiguration als auch die Slurm-Partitionen aktualisiert.
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'
Bei wiederkehrenden Feldern wie node_pools, prolog_bash_scripts und epilog_bash_scripts unterstützt die API nur einen vollständigen Ersetzungsvorgang. Der Nutzer muss die gesamte erwartete Liste der Elemente in der Anfrage-Nutzlast angeben, um die vorhandene Liste vollständig zu ersetzen.
Wenn Sie die Standardpartition ändern möchten, ohne partitions noch einmal zu senden, legen Sie default_partition_id fest und geben Sie nur orchestrator_spec.slurm_spec.default_partition_id in der updateMask an. Eine Aktualisierung, bei der die von default_partition_id angegebene Partition entfernt oder umbenannt wird, wird abgelehnt.
Sie können die Slurm-Konfiguration in einem laufenden Cluster ändern. Durch das Anwenden dieser Einstellungen werden keine Knoten neu gestartet oder entleert. Der Dienst generiert slurm.conf neu und lädt den Slurm-Controller neu. In die Warteschlange gestellte und ausgeführte Jobs sind davon nicht betroffen.
USER_ONLY minimiert.
Es kann etwas dauern, bis die neuen Einstellungen in scontrol show config angezeigt werden.
Clusterbezogene Einstellungen werden mit orchestrator_spec.slurm_spec.config, Knotenpool-Einstellungen mit orchestrator_spec.slurm_spec.node_sets und Partitionseinstellungen mit orchestrator_spec.slurm_spec.partitions benannt, wobei die config jeder Partition zusammen mit ihrer Mitgliedschaft angegeben wird. Jede Karte wird vollständig ersetzt, genau wie die oben beschriebenen wiederkehrenden Felder. Senden Sie den vollständigen Satz der gewünschten Parameter. Ein Parameter, den Sie weglassen, wird entfernt. Wenn Sie eine Karte löschen möchten, geben Sie ihren Pfad in updateMask an und senden Sie sie leer.
Mit dem folgenden Befehl wird die Vorrangunterbrechung für Partitionen für einen vorhandenen Cluster aktiviert.
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'
Dabei enthält update-payload.json unter anderem Folgendes:
{ ..., "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" } } } }
Legen Sie clusterweite Parameter in config anstelle von scheduling und accounting fest, die dadurch ersetzt werden. Ein Cluster verwendet entweder das eine oder das andere. Eine Anfrage, in der beide festgelegt sind, wird abgelehnt.
Wenn Sie PATCH ohne updateMask aufrufen, vergleicht der Dienst die gesamte Nutzlast mit dem aktuellen Cluster. Wenn in einer Nutzlast diese Einstellungen fehlen, werden alle Einstellungen gelöscht, die bereits im Cluster vorhanden sind. Übergeben Sie ein updateMask, um das Update auf die Felder zu beschränken, die Sie ändern möchten. Ein Feld, das Sie benennen, aber nicht in die Nutzlast aufnehmen, wird gelöscht.
Wenn Sie einen vorhandenen Cluster von scheduling und accounting zu config verschieben möchten, senden Sie jede Einstellung in config mit dem Namen slurm.conf, z. B. AccountingStorageEnforce oder PriorityWeightQOS. Lassen Sie scheduling und accounting aus der Nutzlast heraus und benennen Sie alle drei im updateMask, damit die älteren Felder gelöscht werden. Danach reicht eine updateMask von orchestrator_spec.slurm_spec.config aus.
Da node_pools vollständig ersetzt wird, wird für einen Knotenpool in Ihrer Update-Payload, in dem node_image fehlt, das aktuelle Standard-Image für den Maschinentyp verwendet. Dieser Standardwert wird im Laufe der Zeit aktualisiert. Wenn Sie node_image weglassen, wird der Knotenpool auf das neueste verfügbare Image verschoben. Das ist oft das, was Sie möchten: Es werden Treiber-, Sicherheits- und Fehlerkorrekturen übernommen.
Wenn Sie einen Knotenpool bei Updates auf einem bestimmten Image belassen möchten, legen Sie node_image auf dieses Image fest. Wenn Sie den aktuellen Wert aus Get lesen, um ihn zurückzusenden, beachten Sie, dass für einen Cluster, der noch nie aktualisiert wurde, ein leerer node_image gemeldet wird.
Eine erfolgreiche Anfrage gibt einen Vorgang mit langer Ausführungszeit zurück. Sie können den Status dieses Vorgangs dann mit dem folgenden Befehl überwachen:
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Cluster löschen
gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
Bei Erfolg gibt dieser Befehl einen Vorgang mit langer Ausführungszeit zurück, den Sie dann mit dem Befehl operations describe überwachen können.
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Nächste Schritte
Wenn Sie Ihren Trainingscluster für die Gemini Enterprise Agent Platform verwalten, können Sie die Nutzung optimieren, ihn in automatisierte Workflows einbinden und Ihre trainierten Modelle für die Bereitstellung vorbereiten.
- Training mit Gemini Enterprise Agent Platform-Pipelines orchestrieren: Sie können den gesamten Lebenszyklus Ihrer Trainingsjobs von der Datenvorbereitung bis zur Modellregistrierung mit Pipelines automatisieren, die auf Ihren verwalteten Cluster ausgerichtet sind.
- Trainingsjobs überwachen und Fehler beheben: Verfolgen Sie den Fortschritt und die Ressourcennutzung und identifizieren Sie Probleme mit Ihren verteilten Trainingsjobs, die im Cluster ausgeführt werden.
- Modell für die Inferenz bereitstellen: Nachdem Ihre Modelle trainiert und registriert wurden, stellen Sie sie an einem Gemini Enterprise Agent Platform-Endpunkt bereit, um Online-Inferenzanfragen im großen Maßstab zu bearbeiten.
- Kosten optimieren: Prüfen Sie regelmäßig die Clusterauslastung und löschen Sie den Cluster, wenn er nicht aktiv verwendet wird, um die Abrechnung für reservierte Hardware zu minimieren.