Reservierungen mit Batchinferenz verwenden

In diesem Dokument wird beschrieben, wie Sie Compute Engine-Reservierungen verwenden, um sicherzustellen, dass für Ihre Batchinferenzjobs die erforderlichen VM-Ressourcen (virtuelle Maschinen) verfügbar sind.

Reservierungen sind eine Compute Engine-Funktion. Mit Reservierungen 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 es passiert Folgendes:

  • Sie können die reservierten Ressourcen sofort nutzen. Sie bleiben verfügbar, bis Sie die Reservierung löschen.
  • Die reservierten Ressourcen werden bis zum Löschen der Reservierung zum gleichen On-Demand-Tarif wie laufende VMs berechnet, einschließlich aller anwendbaren Rabatte. 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. Festplatten 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 Vertex AI verwenden:

  • Vertex AI kann Reservierungen nur für CPUs, GPU-VMs oder TPUs (Vorschau) verwenden.
  • Vertex AI kann keine Reservierungen von VMs nutzen, denen lokale SSD-Laufwerke manuell angehängt wurden.
  • Die Verwendung von Compute Engine-Reservierungen mit Vertex AI wird nur für benutzerdefiniertes Training und Inferenz sowie für Vertex AI Workbench (Vorschau) unterstützt.
  • Die VM-Attribute einer Reservierung müssen genau mit Ihrer Vertex AI-Arbeitslast übereinstimmen, damit die Reservierung verwendet 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 zu den 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 ist. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.
  • Um eine SPECIFIC_RESERVATION-Reservierung zu nutzen, weisen Sie dem Vertex AI-Dienstkonto im Projekt, dem die Reservierungen gehören, die IAM-Rolle Compute-Betrachter zu (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-Batchinferenz 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 die in den nachstehenden Tabellen aufgeführten Gebühren für die Verwaltung von Vertex AI-Batchinferenz 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 -Konsole 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 Wert ALLOW_ALL hinzu.
  • Wenn Sie die REST API verwenden, geben Sie im Anfragetext das Feld serviceShareType an, das auf ALLOW_ALL gesetzt ist.

Nutzung in einer bestehenden Reservierung zulassen

Sie können eine automatisch erstellte Reservierung von GPU-VMs oder TPUs für eine vorausschauende 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.

Batchinferenzen mithilfe einer Reservierung abrufen

Wenn Sie eine Batchinferenzanfrage erstellen möchten, für die eine Compute Engine-Reservierung von GPU-VMs verwendet wird, 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 Batchvorhersagejob 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 Batchvorhersagejob.

  • MODEL_ID: Die ID des Modells, das für Vorhersagen verwendet werden soll.

  • INPUT_FORMAT: Das Format der Eingabedaten: 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 Vertex AI die Ausgabe speichern soll.

  • MACHINE_TYPE: Die Maschinenressourcen, die für diesen Batchvorhersagejob 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_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 Ihrer customJob nur eine Reservierung nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.
    • NONE bedeutet, dass die VMs Ihres customJob keine Reservierungen nutzen können. Wenn Sie NONE angeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinitä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 Batchvorhersagejob.

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 Batchvorhersagejob 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 Batchvorhersagejob.

  • 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 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_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 Ihrer customJob nur eine Reservierung nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.
    • NONE bedeutet, dass die VMs Ihres customJob keine Reservierungen nutzen können. Wenn Sie NONE angeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinitä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 Batchvorhersagejob.

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 Inferenzausgabe in dem Cloud Storage-Bucket oder BigQuery-Speicherort gespeichert, den Sie in Ihrer Anfrage angegeben haben.

Nächste Schritte