In diesem Dokument wird erläutert, wie Sie Compute Engine-Reservierungen verwenden, um sicherzustellen, dass für Ihre serverlosen Trainingsjobs die erforderlichen virtuellen Maschinenressourcen (VM) verfügbar sind.
Reservierungen sind eine Funktion von Compute Engine. Sie sorgen dafür, dass die Ressourcen jederzeit verfügbar sind, die Sie zum Erstellen von VMs mit derselben Hardware (Arbeitsspeicher und vCPUs) und optionalen Ressourcen (CPUs, GPUs, TPUs und lokalen SSD-Laufwerken) benötigen.
Wenn Sie eine Reservierung erstellen, prüft Compute Engine, ob die angeforderte Kapazität in der angegebenen Zone verfügbar ist. Wenn dies der Fall ist, reserviert Compute Engine die Ressourcen, erstellt die Reservierung und Folgendes geschieht:
- Sie können die reservierten Ressourcen sofort nutzen und sie bleiben verfügbar, bis Sie die Reservierung löschen.
- Ihnen werden die reservierten Ressourcen zum gleichen On-Demand-Tarif wie für laufende VMs in Rechnung gestellt, einschließlich aller anwendbaren Rabatte, bis die Reservierung gelöscht wird. Für eine VM, die eine Reservierung nutzt, fallen keine separaten Gebühren an. Ihnen werden nur die Ressourcen außerhalb der Reservierung in Rechnung gestellt, z. B. Laufwerke oder IP-Adressen. Weitere Informationen finden Sie unter Preise für Reservierungen.
Beschränkungen und Anforderungen
Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Compute Engine-Reservierungen mit der Agent Platform verwenden:
- Die Agent Platform kann nur Reservierungen für CPUs, GPU-VMs, oder TPUs (Vorschau) verwenden.
- Die Agent Platform kann keine Reservierungen von VMs nutzen, denen lokale SSD-Laufwerke manuell zugeordnet sind.
- Die Verwendung von Compute Engine-Reservierungen mit der Agent Platform wird nur für serverloses Training, Inferenz und die Gemini Enterprise Agent Platform Workbench (Vorschau) unterstützt.
- Die VM-Attribute einer Reservierung müssen genau mit Ihrer Agent Platform-Arbeitslast übereinstimmen
damit die Reservierung genutzt werden kann. Wenn beispielsweise in einer Reservierung der Maschinentyp
a2-ultragpu-8gangegeben ist, kann die Agent Platform-Arbeitslast die Reservierung nur nutzen, wenn sie ebenfalls den Maschinentypa2-ultragpu-8gverwendet. Weitere Informationen finden Sie unter Anforderungen. - Wenn Sie eine freigegebene Reservierung von GPU-VMs oder TPUs nutzen möchten, müssen Sie sie über das Inhaber projekt oder ein Nutzerprojekt nutzen, für das die Reservierung freigegeben ist. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.
- Um regelmäßige Updates Ihrer Agent Platform-Bereitstellungen zu ermöglichen, empfehlen wir, die Anzahl der VMs für jede gleichzeitige Bereitstellung um mindestens eine VM zu erhöhen.
-
Flex Start für Dynamic Workload Scheduler und das Ausführen von Trainingsjobs auf einer nichtflüchtigen Ressource werden beide unterstützt, außer wenn Sie Compute Engine Reservierungen mit dem Agent Platform-Training verwenden.
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 Gebühren für die Verwaltung des serverlosen Trainings der Agent Platform an. Weitere Informationen finden Sie unter Preise für benutzerdefinierte Modelle.
Hinweis
- 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 CPUs, GPU-VMs oder TPUs nutzen, müssen Sie die Freigaberichtlinie festlegen, damit die Agent Platform 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 der Agent Platform erlauben, die Reservierung wie folgt 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
--reservation-sharing-policyFlag mit dem WertALLOW_ALLhinzu. - Wenn Sie die REST API verwenden, fügen Sie im Anfragetext das
serviceShareTypeFeld mit dem WertALLOW_ALLein.
Nutzung einer bestehenden Reservierung zulassen
Sie können eine automatisch erstellte Reservierung von GPU-VMs oder TPUs für eine zukünftige Reservierung erst nach der Startzeit der Reservierung ändern.
Wenn Sie der Agent Platform erlauben möchten, eine bestehende Reservierung zu nutzen, verwenden Sie eine der folgenden Methoden:
Prüfen, ob eine Reservierung genutzt wird
Informationen zum Prüfen, ob die Reservierung genutzt wird, finden Sie in der Compute Engine-Dokumentation unter Nutzung von Reservierungen prüfen.Serverlosen Trainingsjob mit einer Reservierung erstellen
Verwenden Sie die REST API, um einen serverlosen Trainingsjob für die Gemini Enterprise Agent Platform zu erstellen, der eine Compute Engine-Reservierung von GPU-VMs nutzt.
REST
Ersetzen Sie diese Werte in den folgenden 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 den
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 Rechenressourcen für benutzerdefiniertes Training konfigurieren. - ACCELERATOR_TYPE: Der Typ des Beschleunigers, der an die Maschine angehängt werden soll. Weitere Informationen zum GPU-Typ, der von den einzelnen Maschinentypen unterstützt wird, finden Sie unter GPUs für Rechenarbeitslasten.
- ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an die Maschine angehängt werden sollen.
- Definieren Sie den benutzerdefinierten Trainingsjob:
RESERVATION_AFFINITY_TYPE: Muss
ANY_RESERVATION,SPECIFIC_RESERVATIONoderNO_RESERVATIONsein.ANY_RESERVATIONbedeutet, dass die VMs IhrescustomJobautomatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.SPECIFIC_RESERVATIONbedeutet, dass die VMs IhrescustomJobnur eine Reservierung nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.NO_RESERVATIONbedeutet, dass die VMs IhrescustomJobkeine Reservierungen nutzen können. Wenn SieNO_RESERVATIONangeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinitätsspezifikation.
- ZONE: Die Zone, in der die Reservierung erstellt wurde.
- RESERVATION_NAME: Der Name 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
1fü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/v1/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",
// Use the following key and values only if
// the reservationAffinityType is SPECIFIC_RESERVATION.
"key": "compute.googleapis.com/reservation-name",
"values": [
"projects/PROJECT_ID/zones/ZONE/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/v1/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/v1/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.
- Informationen zum Verwenden von Reservierungen mit der Agent Platform Online-Inferenz
- Informationen zum Verwenden von Reservierungen mit der Agent Platform Batch-Inferenz
- Reservierungen ansehen
- Nutzung von Reservierungen überwachen