Reservierungen mit Batchinferenz verwenden

In diesem Dokument wird erläutert, wie Sie Compute Engine-Reservierungen verwenden, um sicherzustellen, dass für Ihre Batchvorhersagejobs die erforderlichen virtuellen Maschinenressourcen (VM) verfügbar sind.

Reservierungen sind eine Compute Engine-Funktion. Mit ihnen sorgen Sie 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 Festplatten 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 Vertex AI die folgenden Einschränkungen und Anforderungen:

  • Vertex AI kann nur Reservierungen für CPUs, GPU-VMs, oder TPUs (Vorschau) verwenden.
  • Vertex AI kann keine Reservierungen von VMs nutzen, an die lokale SSD-Laufwerke manuell angehängt wurden.
  • Die Verwendung von Compute Engine-Reservierungen mit Vertex AI wird nur unterstützt für serverloses Vertex AI-Training, Vorhersagen und Vertex AI Workbench (Vorschau).
  • Die VM-Attribute einer Reservierung müssen genau mit Ihrer Vertex AI-Arbeitslast übereinstimmen, damit die Reservierung genutzt werden kann. Wenn in einer Reservierung beispielsweise der Maschinentyp a2-ultragpu-8g angegeben ist, kann die Vertex AI-Arbeitslast die Reservierung nur nutzen, wenn sie ebenfalls den Maschinentyp a2-ultragpu-8g verwendet. 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 Inhaberprojekt 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 Viewer IAM-Rolle dem Vertex AI-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 Vertex AI-Batchvorhersagen verwenden:

    • Compliance mit dem Federal Risk and Authorization Management Program (FedRAMP)

Abrechnung

Bei der Verwendung von Compute Engine-Reservierungen werden Ihnen die folgenden Kosten 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 Vertex AI-Batchvorhersagen an. Weitere Informationen finden Sie unter Preise für Vorhersagen.

Hinweise

Verbrauch einer Reservierung zulassen

Bevor Sie eine Reservierung von CPUs, GPU-VMs oder TPUs 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

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 freigeben aus.
  • Wenn Sie die Google Cloud CLI verwenden, fügen Sie das --reservation-sharing-policy Flag mit dem Wert ALLOW_ALL hinzu.
  • Wenn Sie die REST API verwenden, geben Sie im Anfragetext das serviceShareType Feld mit dem Wert ALLOW_ALL an.

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 Vertex AI erlauben möchten, eine vorhandene 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.

Batchvorhersagen mithilfe einer Reservierung abrufen

Wenn Sie eine Batchvorhersageanfrage 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 ist 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, oder file-list.

  • INPUT_URI: Der Cloud Storage-URI Ihrer Eingabedaten. Kann Platzhalter enthalten.

  • OUTPUT_DIRECTORY: Der Cloud Storage-URI eines Verzeichnisses, in dem Sie Vertex AI die Ausgabe speichern sollen.

  • MACHINE_TYPE: Die Maschinenressourcen die für diesen Batchvorhersagejob zu verwenden sind.

  • 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_RESERVATION oder NONE sein.

    • ANY bedeutet, dass die VMs Ihres customJob automatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.
    • SPECIFIC_RESERVATION bedeutet, dass die VMs Ihres customJob nur eine Reservierung nutzen können, die von den VMs namentlich angegeben wird.
    • NONE bedeutet, dass die VMs Ihres customJob keine Reservierungen nutzen können. Wenn Sie NONE angeben, 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 ist 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 Batchvorhersagejob zu verwenden sind.

  • 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_RESERVATION oder NONE sein.

    • ANY bedeutet, dass die VMs Ihres customJob automatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.
    • SPECIFIC_RESERVATION bedeutet, dass die VMs Ihres customJob nur eine Reservierung nutzen können, die von den VMs namentlich angegeben wird.
    • NONE bedeutet, dass die VMs Ihres customJob keine Reservierungen nutzen können. Wenn Sie NONE angeben, 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",
}

Ergebnisse für Batchvorhersagen abrufen

Wenn eine Batchvorhersage abgeschlossen ist, wird die Ausgabe der Vorhersage in dem Cloud Storage-Bucket oder BigQuery-Speicherort gespeichert, den Sie in Ihrer Anfrage angegeben haben.

Nächste Schritte