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.
Cluster können nur über die Agent Platform API aktualisiert werden. Sie können einen Cluster entweder über die Agent Platform API oder die Google Cloud Console 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 definiert, auf die Sie aktualisieren möchten.
Wenn Sie beispielsweise die Knotenanzahl eines Pools eines Clusters nur mit CPU 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 in derupdateMaskaufgefü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: Nur vom Nutzer angegebene Feldänderungen aus der Anfrage werden angewendet. Vom Dienst verwaltete Felder wie Start-, Prolog- oder Epilogskripts werden nicht aktualisiert. Jeder Knotenpool bleibt auch auf dem Image, auf dem er derzeit ausgeführt wird, es sei denn, Sie legennode_imageselbst fest. Bei einemUSER_ONLY-Update, bei demnode_imageweggelassen wird, werden Ihre Knoten also nicht neu erstellt.USER_AND_SERVICE: Vom Nutzer angegebene Feldänderungen werden angewendet und der Dienst aktualisiert die vom Dienst verwalteten Felder.
USER_AND_SERVICEzu verwenden, um dafür zu sorgen, dass 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'
Für wiederkehrende Felder 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 Anfragenutzlast 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. Ein Update, bei dem 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 geleert: Der Dienst generiert slurm.conf neu und lädt den Slurm-Controller neu, sodass in der Warteschlange befindliche und ausgeführte Jobs nicht betroffen sind.
USER_ONLY minimiert.
Es kann nach Abschluss des Vorgangs 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 Partitions-Einstellungen 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 Zuordnung löschen möchten, geben Sie ihren Pfad im updateMask an und senden Sie ihn leer.
Mit dem folgenden Befehl wird die Partitionsprioritäts-Vorabversion 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 fest, nicht in scheduling und accounting, die dadurch ersetzt werden. Ein Cluster verwendet entweder das eine oder das andere. Eine Anfrage, die beides festlegt, wird abgelehnt.
Wenn Sie PATCH ohne updateMask aufrufen, vergleicht der Dienst die gesamte Nutzlast mit dem aktuellen Cluster. Eine Nutzlast, die diese Einstellungen weglässt, löscht also alles, was der Cluster bereits hat. Übergeben Sie eine updateMask, um die Aktualisierung 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 nach config verschieben möchten, senden Sie jede Einstellung in config mit ihrem slurm.conf-Namen, z. B. AccountingStorageEnforce oder PriorityWeightQOS. Lassen Sie scheduling und accounting aus der Nutzlast heraus und benennen Sie alle drei in der updateMask, damit die älteren Felder gelöscht werden. Danach reicht ein updateMask von orchestrator_spec.slurm_spec.config aus.
Da node_pools vollständig ersetzt wird, wird ein Knotenpool in Ihrer Update-Nutzlast, der node_image weglässt, auf das aktuelle Standard-Image für seinen Maschinentyp aufgelöst. 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 beibehalten möchten, setzen Sie node_image auf dieses Image (z. B. projects/IMAGE_PROJECT/global/images/IMAGE). Wenn Sie den aktuellen Wert aus Get lesen, um ihn zurückzusenden, beachten Sie, dass ein Cluster, der noch nie aktualisiert wurde, einen leeren node_image meldet, es sei denn, node_image wurde beim Erstellen des Clusters festgelegt.
Eine erfolgreiche Anfrage gibt einen Vorgang mit langer Ausführungszeit zurück. Anschließend können Sie den Status dieses Vorgangs 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
Dieser Befehl gibt bei Erfolg 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 Gemini Enterprise Agent Platform-Trainingscluster verwalten, können Sie seine Nutzung optimieren, ihn in automatisierte Workflows einbinden und Ihre trainierten Modelle für die Bereitstellung vorbereiten.
- Training mit Gemini Enterprise Agent Platform-Pipelines orchestrieren: Automatisieren Sie den gesamten Lebenszyklus Ihrer Trainingsjobs, von der Datenvorbereitung bis zur Modellregistrierung, mit Pipelines, die auf Ihren verwalteten Cluster abzielen.
- 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 auf einem Gemini Enterprise Agent Platform-Endpunkt bereit, um Online-Inferenzanfragen in großem Umfang zu verarbeiten.
- 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.