In diesem Dokument wird beschrieben, wie Sie mit Compute Engine-Reservierungen dafür sorgen können, dass Ihre benutzerdefinierten Trainingsjobs die erforderlichen Ressourcen für die Ausführung haben.
Verwenden Sie Compute Engine-Reservierungen, damit die Ressourcen für VM-Instanzen (virtuelle Maschinen) für Ihre benutzerdefinierten Trainingsjobs verfügbar sind, wenn sie benötigt werden. Reservierungen bieten ein hohes Maß an Sicherheit beim Beschaffen von Kapazitäten für eine oder mehrere VMs mit der angegebenen Hardwarekonfiguration. Für eine Reservierung einer VM fallen die Kosten für diese VM vom Erstellen der Reservierung bis zum Löschen der Reservierung an. Während Sie diese VM nutzen, entsprechen die Gesamtkosten jedoch denen einer VM ohne Reservierung. Weitere Informationen finden Sie unter Zonale Reservierungen von Compute Engine-Ressourcen.
Beschränkungen und Anforderungen
Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Compute Engine-Reservierungen mit Vertex AI verwenden:
- Vertex AI kann nur Reservierungen von VMs mit angeschlossenen GPUs nutzen.
- Die Verwendung von Compute Engine-Reservierungen mit Vertex AI wird nur für benutzerdefiniertes Training und Vorhersagen unterstützt.
- Die VM-Attribute einer Reservierung müssen genau mit Ihrer Vertex AI-Arbeitslast übereinstimmen, damit die Reservierung verwendet werden kann. Wenn für eine Reservierung beispielsweise der Maschinentyp
a2-ultragpu-8g
angegeben ist, kann die Vertex AI-Arbeitslast die Reservierung nur dann nutzen, wenn auch der Maschinentypa2-ultragpu-8g
verwendet wird. Weitere Informationen zu den Anforderungen - Wenn Sie eine freigegebene Reservierung von GPU-VMs nutzen möchten, müssen Sie sie über das Inhaberprojekt oder ein Nutzerprojekt nutzen, für das die Reservierung freigegeben ist. Siehe Funktionsweise freigegebener Reservierungen.
- Um regelmäßige Updates Ihrer Vertex AI-Bereitstellungen zu ermöglichen, empfehlen wir, die Anzahl der VMs für jede gleichzeitige Bereitstellung um mindestens eine VM zu erhöhen.
-
Die folgenden Dienste und Funktionen werden nicht unterstützt, wenn Sie Compute Engine-Reservierungen mit Vertex AI-Training verwenden:
- Dynamic Workload Scheduler
- Trainingsjobs auf einer nichtflüchtigen Ressource ausführen
Abrechnung
Wenn Sie Compute Engine-Reservierungen verwenden, werden Ihnen Folgendes in Rechnung gestellt:
- Compute Engine-Preise für die Compute Engine-Ressourcen, einschließlich aller anwendbaren Rabatte für zugesicherte Nutzung (Committed Use Discount, CUD). Siehe Compute Engine-Preise.
- Zusätzlich zur Nutzung der Infrastruktur fallen die in den nachstehenden Tabellen aufgeführten Gebühren für die Verwaltung von benutzerdefiniertem Training in Vertex AI an. Siehe Preise für benutzerdefinierte Modelle.
Hinweise
- Informationen zu den Anforderungen und Einschränkungen für Reservierungen
- Informationen zu den Kontingentanforderungen und -einschränkungen für freigegebene Reservierungen.
Verbrauch einer Reservierung zulassen
Bevor Sie eine Reservierung von GPU-VMs nutzen, müssen Sie die Freigaberichtlinie festlegen, damit Vertex AI die Reservierung nutzen kann. Verwenden Sie dazu eine der folgenden Methoden:
- Nutzung beim Erstellen einer Reservierung zulassen
- Verbrauch in einer bestehenden Reservierung zulassen
Nutzung beim Erstellen einer Reservierung zulassen
Wenn Sie eine Reservierung für ein einzelnes Projekt oder eine freigegebene Reservierung von GPU-VMs erstellen, können Sie Vertex AI wie unten beschrieben erlauben, die Reservierung zu nutzen:
- Wenn Sie die Google Cloud Console verwenden, wählen Sie im Bereich Google Cloud-Dienste die Option Reservierung teilen aus.
- Wenn Sie die Google Cloud CLI verwenden, fügen Sie das Flag
--reservation-sharing-policy
mit dem WertALLOW_ALL
hinzu. - Wenn Sie die REST API verwenden, geben Sie im Anfragetext das Feld
serviceShareType
mit dem WertALLOW_ALL
an.
Nutzung in einer bestehenden Reservierung zulassen
Wenn Sie Vertex AI erlauben möchten, eine vorhandene Reservierung von GPU-VMs zu nutzen, lesen Sie den Hilfeartikel Freigaberichtlinie einer Reservierung ändern.Benutzerdefinierten Trainingsjob mit Reservierung erstellen
Verwenden Sie die REST API, um einen benutzerdefinierten Trainingsjob zu erstellen, der eine Compute Engine-Reservierung von GPU-VMs nutzt.
REST
Ersetzen Sie dabei folgende Werte für die Anfragedaten:
- LOCATION: Die Region, in der der Container oder das Python-Paket ausgeführt wird.
- PROJECT_ID: das Projekt, in dem die Reservierung erstellt wurde. Wenn Sie eine freigegebene Reservierung aus einem anderen Projekt nutzen möchten, müssen Sie die Reservierung für dieses Projekt freigeben. Weitere Informationen finden Sie unter Nutzerprojekte in einer freigegebenen Reservierung ändern.
-
JOB_NAME: erforderlich. Ein Anzeigename für
CustomJob
. - MACHINE_TYPE: Der Maschinentyp, der für den Job verwendet werden soll. Die Standardeinstellung ist
n1-standard-2
. Weitere Informationen zu den unterstützten Maschinentypen finden Sie unter Computing-Ressourcen für benutzerdefiniertes Training konfigurieren. - ACCELERATOR_TYPE: Der Typ des Beschleunigers, der an die Maschine angeschlossen werden soll. Weitere Informationen zu den von den einzelnen Maschinentypen unterstützten GPU-Typen finden Sie unter GPUs für Computing-Arbeitslasten.
- ACCELERATOR_COUNT: die Anzahl der Beschleuniger, die an die Maschine angeschlossen werden sollen.
- Definieren Sie den benutzerdefinierten Trainingsjob:
RESERVATION_AFFINITY_TYPE: muss
ANY
,SPECIFIC_RESERVATION
oderNONE
sein.ANY
bedeutet, dass die VMs IhrercustomJob
automatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.SPECIFIC_RESERVATION
bedeutet, dass die VMs IhrercustomJob
nur eine Reservierung nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.NONE
bedeutet, dass die VMs IhrescustomJob
keine Reservierungen nutzen können. Wenn SieNONE
angeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinitätsspezifikation.
- RESERVATION_NAME: den Namen Ihrer Reservierung.
- DISK_TYPE: Optional. Der Typ des Bootlaufwerks, das für den Job verwendet werden soll, entweder
pd-standard
(Standardeinstellung) oderpd-ssd
. Weitere Informationen zu Laufwerkstypen - DISK_SIZE: Optional. Die Größe des Bootlaufwerks in GB, das für den Job verwendet werden soll. Der Standardwert ist 100.
- REPLICA_COUNT: Die Anzahl der zu verwendenden Worker-Replikate. In den meisten Fällen ist dies auf
1
für den ersten Worker-Pool festgelegt. - Wenn Ihre Trainingsanwendung in einem benutzerdefinierten Container ausgeführt wird, geben Sie Folgendes an:
- CUSTOM_CONTAINER_IMAGE_URI: Der URI eines Container-Images in Artifact Registry oder Docker Hub, der auf jedem Worker-Replikat ausgeführt werden soll.
- CUSTOM_CONTAINER_COMMAND: Optional. Der Befehl, der beim Start des Containers aufgerufen werden soll. Mit diesem Befehl wird der Standardeinstiegspunkt des Containers überschrieben.
- CUSTOM_CONTAINER_ARGS: Optional. Die Argumente, die beim Starten des Containers übergeben werden.
- Wenn Ihre Trainingsanwendung ein Python-Paket ist, das in einem vordefinierten Container ausgeführt wird, geben Sie Folgendes an:
- EXECUTOR_IMAGE_URI: Der URI des Container-Images, in dem der bereitgestellte Code ausgeführt wird. Siehe Verfügbare vordefinierte Container für das Training.
- PYTHON_PACKAGE_URIS: Durch Kommas getrennte Liste der Cloud Storage-URIs, die die Python-Paketdateien angeben, wobei es sich um das Trainingsprogramm und die abhängigen Pakete handelt. Die maximale Anzahl der Paket-URIs beträgt 100.
- PYTHON_MODULE: Der Name des Python-Moduls, der nach der Installation der Pakete ausgeführt werden soll.
- PYTHON_PACKAGE_ARGS: Optional. Befehlszeilenargumente, die an das Python-Modul übergeben werden sollen.
- TIMEOUT: Optional. Die maximale Ausführungszeit für den Job.
- Geben Sie LABEL_NAME und LABEL_VALUE für alle Labels an, die Sie auf diesen benutzerdefinierten Job anwenden möchten.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs
JSON-Text der Anfrage:
{ "displayName": "JOB_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT, "reservationAffinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/reservations/RESERVATION_NAME" ] }, }, "replicaCount": REPLICA_COUNT, "diskSpec": { "bootDiskType": DISK_TYPE, "bootDiskSizeGb": DISK_SIZE }, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs // for distributed training. ], "scheduling": { "timeout": TIMEOUT } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
Die Antwort enthält Informationen zu Spezifikationen sowie die TRAININGPIPELINE_ID.
Nächste Schritte
- Weitere Informationen zu Reservierungen von zonalen Ressourcen von Compute Engine
- Weitere Informationen zur Verwendung von Reservierungen mit Vertex AI-Vorhersagen