In diesem Dokument wird erläutert, wie Sie Compute Engine-Reservierungen verwenden, um sicherzustellen, dass für Ihre Batchinferenzjobs die erforderlichen virtuellen Maschinenressourcen (VM) verfügbar sind.
Reservierungen sind eine Compute Engine-Funktion. 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 ja, 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 zu demselben 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. Sie zahlen nur für die Ressourcen außerhalb der Reservierung, z. B. für Laufwerke oder IP-Adressen. Weitere Informationen finden Sie unter Preise für Reservierungen.
Beschränkungen und Anforderungen
Beachten Sie bei der Verwendung von Compute Engine-Reservierungen mit der Agent Platform die folgenden Beschränkungen und Anforderungen:
- Die Agent Platform kann Reservierungen nur für CPUs, GPU-VMs, oder TPUs (Vorschau) verwenden.
- Die Agent Platform kann keine Reservierungen von VMs nutzen, denen lokale SSD-Laufwerke manuell angehängt wurden.
- Die Verwendung von Compute Engine-Reservierungen mit der Agent Platform wird nur für serverloses Training und serverlose Inferenzen der Gemini Enterprise Agent Platform sowie für 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 in einer Reservierung beispielsweise 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 wurde. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.
- Wenn Sie eine
SPECIFIC_RESERVATION-Reservierung nutzen möchten, gewähren Sie dem Compute-Betrachter die IAM-Rolle „Agent Platform-Dienstkonto“ im Projekt, das die Reservierungen besitzt (service-${PROJECT_NUMBER}@gcp-sa-aiplatform.iam.gserviceaccount.com, wobei PROJECT_NUMBER die Projektnummer des Projekts ist, das die Reservierung nutzt). -
Die folgenden Dienste und Funktionen werden nicht unterstützt, wenn Sie Compute Engine Reservierungen mit der Batchinferenz der Agent Platform verwenden:
- Compliance mit dem Federal Risk and Authorization Management Program (FedRAMP)
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 der Batchinferenz der Agent Platform an. Weitere Informationen finden Sie unter Preise für Vorhersagen.
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 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 unten beschrieben 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, geben Sie im Anfragetext das
serviceShareTypeFeld mit dem WertALLOW_ALLan.
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 dem Startzeitpunkt 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.Batchinferenzen mithilfe einer Reservierung abrufen
Wenn Sie eine Batchinferenzanfrage erstellen möchten, die eine Compute Engine-Reservierung von GPU-VMs nutzt, können Sie die REST API verwenden und entweder Cloud Storage oder BigQuery als Quelle und Ziel auswählen.
Cloud Storage
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
LOCATION_ID: Die Region, in der das Modell gespeichert und der Batch-Vorhersagejob ausgeführt wird. Beispiel:
us-central1. -
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.
-
BATCH_JOB_NAME: Ein Anzeigename für den Batch-Vorhersagejob.
-
MODEL_ID: Die ID des Modells, das für Vorhersagen verwendet werden soll.
-
INPUT_FORMAT: Das Format Ihrer Eingabe daten:
jsonl,csv,tf-record,tf-record-gzip, oderfile-list. -
INPUT_URI: Der Cloud Storage-URI Ihrer Eingabedaten. Kann Platzhalter enthalten.
-
OUTPUT_DIRECTORY: Der Cloud Storage-URI eines Verzeichnisses, in dem Sie die Agent Platform die Ausgabe speichern sollen.
-
MACHINE_TYPE: Die Maschinenressourcen die für diesen Batch-Vorhersagejob verwendet werden sollen.
-
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 Compute-Arbeitslasten.
ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an die Maschine angehängt werden sollen.
-
RESERVATION_AFFINITY_TYPE: Muss
ANY,SPECIFIC_RESERVATIONoderNONEsein.ANYbedeutet, dass die VMs IhrescustomJobautomatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.SPECIFIC_RESERVATIONbedeutet, dass die VMs IhrescustomJobnur eine Reservierung nutzen können, die die VMs explizit nach Namen anfordern.NONEbedeutet, dass die VMs IhrescustomJobkeine Reservierungen nutzen können. Wenn SieNONEangeben, hat das denselben Effekt wie das Weglassen einer Reservierungs affinitätsspezifikation.
-
BATCH_SIZE: Die Anzahl der Instanzen, die in jeder Vorhersageanfrage gesendet werden sollen. Der Standardwert ist 64. Das Erhöhen der Batchgröße kann den Durchsatz erhöhen, aber auch zu Zeitüberschreitungen bei Anfragen führen.
-
STARTING_REPLICA_COUNT: Die Anzahl der Knoten für diesen Batch-Vorhersagejob.
HTTP-Methode und URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
JSON-Text der Anfrage:
{
"displayName": "BATCH_JOB_NAME",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "INPUT_FORMAT",
"gcsSource": {
"uris": ["INPUT_URI"],
},
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_DIRECTORY",
},
},
"dedicatedResources" : {
"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/zones/ZONE/reservations/RESERVATION_NAME"
]
}
},
"startingReplicaCount": STARTING_REPLICA_COUNT
},
"manualBatchTuningParameters": {
"batch_size": BATCH_SIZE,
}
}
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID",
"displayName": "BATCH_JOB_NAME 202005291958",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_DIRECTORY"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2020-05-30T02:58:44.341643Z",
"updateTime": "2020-05-30T02:58:44.341643Z",
}
BigQuery
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
LOCATION_ID: Die Region, in der das Modell gespeichert und der Batch-Vorhersagejob ausgeführt wird. Beispiel:
us-central1. -
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.
-
BATCH_JOB_NAME: Ein Anzeigename für den Batch-Vorhersagejob.
-
MODEL_ID: Die ID des Modells, das für Vorhersagen verwendet werden soll.
-
INPUT_PROJECT_ID: Die ID des Google Cloud Projekts, aus dem Sie die Daten abrufen möchten.
-
INPUT_DATASET_NAME: Der Name des BigQuery-Datasets aus dem Sie die Daten abrufen möchten.
-
INPUT_TABLE_NAME: Der Name der BigQuery-Tabelle, aus der Sie die Daten abrufen möchten.
-
OUTPUT_PROJECT_ID: Die ID des Google Cloud Projekts, in dem Sie die Ausgabe speichern möchten.
-
OUTPUT_DATASET_NAME: Der Name des BigQuery-Ziel-Datasets, in dem Sie die Ausgabe speichern möchten.
-
OUTPUT_TABLE_NAME: Der Name der BigQuery-Zieltabelle, in der Sie die Ausgabe speichern möchten.
-
MACHINE_TYPE: Die Maschinenressourcen die für diesen Batch-Vorhersagejob verwendet werden sollen.
-
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 Compute-Arbeitslasten.
ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an die Maschine angehängt werden sollen.
-
RESERVATION_AFFINITY_TYPE: Muss
ANY,SPECIFIC_RESERVATIONoderNONEsein.ANYbedeutet, dass die VMs IhrescustomJobautomatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.SPECIFIC_RESERVATIONbedeutet, dass die VMs IhrescustomJobnur eine Reservierung nutzen können, die die VMs explizit nach Namen anfordern.NONEbedeutet, dass die VMs IhrescustomJobkeine Reservierungen nutzen können. Wenn SieNONEangeben, hat das denselben Effekt wie das Weglassen einer Reservierungs affinitätsspezifikation.
-
BATCH_SIZE: Die Anzahl der Instanzen, die in jeder Vorhersageanfrage gesendet werden sollen. Der Standardwert ist 64. Das Erhöhen der Batchgröße kann den Durchsatz erhöhen, aber auch zu Zeitüberschreitungen bei Anfragen führen.
-
STARTING_REPLICA_COUNT: Die Anzahl der Knoten für diesen Batch-Vorhersagejob.
HTTP-Methode und URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
JSON-Text der Anfrage:
{
"displayName": "BATCH_JOB_NAME",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "bigquery",
"bigquerySource": {
"inputUri": "bq://INPUT_PROJECT_ID.INPUT_DATASET_NAME.INPUT_TABLE_NAME"
},
},
"outputConfig": {
"predictionsFormat":"bigquery",
"bigqueryDestination":{
"outputUri": "bq://OUTPUT_PROJECT_ID.OUTPUT_DATASET_NAME.OUTPUT_TABLE_NAME"
}
},
"dedicatedResources" : {
"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/zones/ZONE/reservations/RESERVATION_NAME"
]
}
},
"startingReplicaCount": STARTING_REPLICA_COUNT
},
"manualBatchTuningParameters": {
"batch_size": BATCH_SIZE,
}
}
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID",
"displayName": "BATCH_JOB_NAME 202005291958",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"bigquerySource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"bigqueryDestination": {
"outputUri": "OUTPUT_URI"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2020-05-30T02:58:44.341643Z",
"updateTime": "2020-05-30T02:58:44.341643Z",
}
Batchinferenzergebnisse abrufen
Wenn eine Batchinferenz abgeschlossen ist, wird die Ausgabe der Inferenz in dem Cloud Storage-Bucket oder BigQuery-Speicherort gespeichert, den Sie in Ihrer Anfrage angegeben haben.
Nächste Schritte
- Weitere Informationen zu Reservierungen von zonalen Ressourcen von Compute Engine.
- Reservierungen mit der Onlineinferenz der Agent Platform verwenden
- Reservierungen mit dem Training der Agent Platform verwenden.
- Reservierungen ansehen
- Nutzung von Reservierungen überwachen