Batch-Inferenzen und -Erläuterungen abrufen

Auf dieser Seite wird gezeigt, wie Sie mithilfe der Google Cloud Console oder der Vertex AI API eine Batch-Inferenzanfrage an Ihr trainiertes AutoML-Klassifizierungs- oder Regressionsmodell stellen.

Die Anforderung einer Batch-Inferenz ist eine asynchrone Anfrage (im Gegensatz zu einer Online-Inferenz, die eine synchrone Anfrage ist). Sie können Batch-Inferenzen direkt von der Modellressource anfordern, ohne das Modell auf einem Endpunkt bereitstellen zu müssen. Verwenden Sie für tabellarische Daten Batch-Inferenzen, wenn Sie nicht sofort eine Antwort benötigen und akkumulierte Daten in einer einzigen Anfrage verarbeiten möchten.

Für eine Batch-Inferenz geben Sie eine Eingabequelle und ein Ausgabeformat an, in dem Vertex AI die Inferenzergebnisse speichert.

Hinweise

Bevor Sie eine Batch-Inferenzanfrage stellen können, müssen Sie zuerst ein Modell trainieren.

Eingabedaten

Die Eingabedaten für Batch-Inferenzanfragen sind die Daten, die Ihr Modell zum Erstellen von Inferenzen verwendet. Für Klassifizierungs- oder Regressionsmodelle können Sie Eingabedaten in einem der folgenden Formate bereitstellen:

  • BigQuery-Tabellen
  • CSV-Objekte in Cloud Storage

Wir empfehlen, dass Sie für Ihre Eingabedaten dasselbe Format verwenden, das Sie zum Trainieren des Modells verwendet haben. Wenn Sie Ihr Modell beispielsweise mit Daten in BigQuery trainiert haben, empfiehlt es sich, eine BigQuery-Tabelle als Eingabe für Ihre Batch-Inferenz zu verwenden. Da Vertex AI alle CSV-Eingabefelder als Strings behandelt, kann eine Kombination der Formate von Trainings- und Eingabedaten zu Fehlern führen.

Die Datenquelle muss tabellarische Daten enthalten, die alle Spalten (in beliebiger Reihenfolge) enthalten, die zum Trainieren des Modells verwendet wurden. Sie können Spalten einfügen, die nicht in den Trainingsdaten enthalten waren, oder die in den Trainingsdaten enthalten waren, aber nicht für das Training verwendet wurden. Diese zusätzlichen Spalten sind in der Ausgabe enthalten, haben aber keinen Einfluss auf die Inferenzergebnisse.

Anforderungen an Eingabedaten

BigQuery-Tabelle

Wenn Sie eine BigQuery-Tabelle als Eingabe auswählen, müssen Sie Folgendes beachten:

  • BigQuery-Datenquellentabellen dürfen nicht größer als 100 GB sein.
  • Wenn sich die Tabelle in einem anderen Projekt befindet, müssen Sie dem Vertex AI-Dienstkonto in diesem Projekt die Rolle BigQuery Data Editor zuweisen.

CSV-Datei

Wenn Sie ein CSV-Objekt in Cloud Storage als Eingabe auswählen, müssen Sie Folgendes beachten:

  • Die Datenquelle muss mit einer Kopfzeile mit den Spaltennamen beginnen.
  • Jede Datenquellendatei darf nicht größer als 10 GB sein. Sie können mehrere Dateien mit einer Gesamtgröße von maximal 100 GB importieren.
  • Wenn sich der Cloud Storage-Bucket in einem anderen Projekt befindet, müssen Sie dem Vertex AI-Dienstkonto in diesem Projekt die Rolle Storage Object Creator zuweisen.
  • Alle Strings müssen in doppelte Anführungszeichen (") gesetzt werden.

Ausgabeformat

Das Ausgabeformat Ihrer Batch-Inferenzanfrage muss nicht mit dem Eingabeformat übereinstimmen. Wenn Sie beispielsweise BigQuery-Tabelle als Eingabe verwendet haben, können Sie die Ergebnisse an ein CSV-Objekt in Cloud Storage ausgeben.

Batch-Inferenzanfrage an das Modell stellen

Sie können die Google Cloud Console oder die Vertex AI API verwenden, um Batch-Inferenzanfragen zu stellen. Die Eingabedatenquelle können CSV-Objekte sein, die in einem Cloud Storage-Bucket oder in BigQuery-Tabellen gespeichert sind. Abhängig von der Datenmenge, die Sie als Eingabe senden, kann eine Batchinference einige Zeit in Anspruch nehmen.

Google Cloud console

Verwenden Sie die Google Cloud Console, um eine Batchvorhersage anzufordern.

  1. Rufen Sie in der Google Cloud Console im Abschnitt „Vertex AI“ die Seite Batch-Inferenzen auf.

    Zur Seite „Batch-Inferenzen“

  2. Klicken Sie auf Erstellen, um das Fenster Neue Batch-Inferenz zu öffnen.
  3. Führen Sie für Batch-Inferenz definieren folgende Schritte aus:
    1. Geben Sie einen Namen für die Batch-Inferenz ein.
    2. Wählen Sie unter Modellname den Namen des Modells aus, das für diese Batch-Inferenz verwendet werden soll.
    3. Wählen Sie für Version die Modellversion für diese Batch-Inferenz aus.
    4. Wählen Sie unter Quelle auswählen aus, ob Ihre Quelleingabedaten eine CSV-Datei in Cloud Storage oder eine Tabelle in BigQuery sind.
      • Geben Sie bei CSV-Dateien den Cloud Storage-Speicherort an, in dem sich Ihre CSV-Eingabedatei befindet.
      • Geben Sie bei BigQuery-Tabellen die Projekt-ID an, in der sich die Tabelle befindet, die BigQuery-Dataset-ID sowie die BigQuery-Tabellen- oder -Ansichts-ID.
    5. Wählen Sie unter Ausgabe die Option CSV oder BigQuery aus.
      • Geben Sie für CSV den Cloud Storage-Bucket an, in dem Vertex AI Ihre Ausgabe speichert.
      • Für BigQuery können Sie eine Projekt-ID oder ein vorhandenes Dataset angeben:
        • Geben Sie die Projekt-ID in das Feld Google Cloud Project ID ein, um die Projekt-ID anzugeben. Vertex AI erstellt ein neues Ausgabe-Dataset.
        • Geben Sie den vorhandenen BigQuery-Pfad in das Feld Google Cloud-Projekt-ID ein, z. B. bq://projectid.datasetid, um ein vorhandenes Dataset anzugeben.
      • Optional: Sie können eine Inferenz mit Erläuterungen anfordern, die auch als Featureattribute bezeichnet werden, um zu sehen, wie Ihr Modell zu einer Inferenz gelangt ist. Die Werte der lokalen Merkmalwichtigkeit geben an, wie viel jedes Merkmal zum Inferenzergebnis beigetragen hat. Feature-Attributionen sind in Vertex AI-Inferenzen über Vertex Explainable AI enthalten.

        Wählen Sie Aktivieren Sie Feature-Attributionen für dieses Modell aus, um Feature-Attributionen zu aktivieren. Diese Option ist verfügbar, wenn das Ausgabeziel BigQuery oder JSONL in Cloud Storage ist. Feature-Attributionen werden für CSV in Cloud Storage nicht unterstützt.

  4. Optional: Die Modell-Monitoring-Analyse für Batch-Inferenzen ist in der Vorschau verfügbar. Informationen für das Hinzufügen einer Konfiguration zur Abweichungserkennung zu Ihrem Batchinference-Job finden Sie unter Voraussetzungen.
    1. Klicken Sie, um die Option Modellmonitoring für diese Batch-Inferenz aktivieren einzuschalten.
    2. Wählen Sie eine Quelle der Trainingsdaten aus. Geben Sie den Datenpfad oder den Speicherort für die ausgewählte Trainingsdatenquelle ein.
    3. (Optional) Geben Sie unter Benachrichtigungsgrenzwert Grenzwerte an, ab denen Benachrichtigungen ausgelöst werden sollen.
    4. Geben Sie unter Benachrichtigungs-E-Mails eine oder mehrere durch Kommas getrennte E-Mail-Adressen ein, um Benachrichtigungen zu erhalten, wenn ein Modell einen Benachrichtigungsgrenzwert überschreitet.
    5. Optional: Fügen Sie unter Benachrichtigungskanäle Cloud Monitoring-Kanäle hinzu, um Benachrichtigungen zu erhalten, wenn ein Modell einen Benachrichtigungsgrenzwert überschreitet. Sie können vorhandene Cloud Monitoring-Kanäle auswählen oder neue erstellen. Klicken Sie dazu auf Benachrichtigungskanäle verwalten. Die Console unterstützt PagerDuty-, Slack- und Pub/Sub-Benachrichtigungskanäle.
  5. Klicken Sie auf Erstellen.

API: BigQuery

REST

Mit der Methode batchPredictionJobs.create können Sie eine Batchvorhersage anfordern.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der das Modell gespeichert ist und der Batch-Inferenzjob ausgeführt wird. Beispiel: us-central1.
  • PROJECT_ID: Ihre Projekt-ID
  • BATCH_JOB_NAME: Anzeigename für den Batchjob
  • MODEL_ID: Die ID des Modells, das für Inferenzen verwendet werden soll
  • INPUT_URI: Referenz zur BigQuery-Datenquelle. Füllen Sie das Formular aus:
    bq://bqprojectId.bqDatasetId.bqTableId
    
  • OUTPUT_URI: Referenz zum BigQuery-Ziel, in das die Inferenzen geschrieben werden. Geben Sie die Projekt-ID und optional eine vorhandene Dataset-ID an. Wenn Sie nur die Projekt-ID angeben, erstellt Vertex AI ein neues Ausgabe-Dataset für Sie. Verwenden Sie das folgende Formular:
    bq://bqprojectId.bqDatasetId
    
  • MACHINE_TYPE: Die Maschinenressourcen, die für diesen Batch-Inferenzjob zu verwenden sind. Weitere Informationen
  • STARTING_REPLICA_COUNT: Die Anzahl der Knoten für diesen Batch-Inferenzjob. Die Knotenanzahl kann je nach Last erhöht (bis zur maximalen Knotenanzahl) oder verringert werden, niemals jedoch unter diese Zahl fallen.
  • MAX_REPLICA_COUNT: Die maximale Anzahl von Knoten für diesen Batch-Inferenzjob. Die Anzahl der Knoten kann je nach Last erhöht oder verringert werden, überschreitet jedoch nie den Höchstwert. Optional; der Standardwert ist 10.
  • GENERATE_EXPLANATION: Sie können eine Inferenz mit Erläuterungen anfordern, die auch als Featureattribute bezeichnet werden, um zu sehen, wie Ihr Modell zu einer Inferenz gelangt ist. Die Werte der lokalen Merkmalwichtigkeit geben an, wie viel jedes Merkmal zum Inferenzergebnis beigetragen hat. Feature-Attributionen sind in Vertex AI-Inferenzen über Vertex Explainable AI enthalten.

    Der Standardwert ist false. Setzen Sie diesen Wert auf true, um Feature-Attributionen zu aktivieren.

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": "MODEL_ID",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "OUTPUT_URI"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "MACHINE_TYPE",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  },

  "generateExplanation": GENERATE_EXPLANATION

}

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_ID/locations/LOCATION_ID/batchPredictionJobs/67890",
  "displayName": "batch_job_1 202005291958",
  "model": "projects/12345/locations/us-central1/models/5678",
  "state": "JOB_STATE_PENDING",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
        "outputUri": bq://12345
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "n1-standard-32",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": 2,
    "maxReplicaCount": 6
  },
  "manualBatchTuningParameters": {
    "batchSize": 4
  },
  "generateExplanation": false,
  "outputInfo": {
    "bigqueryOutputDataset": "bq://12345.reg_model_2020_10_02_06_04
  }
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-09-30T02:58:44.341643Z",
  "updateTime": "2020-09-30T02:58:44.341643Z",
}

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Ersetzen Sie im folgenden Beispiel INSTANCES_FORMAT und PREDICTIONS_FORMAT durch „bigquery“. Informationen zum Ersetzen der anderen Platzhalter finden Sie auf dem Tab „REST UND BEFEHLSZEILE“ in diesem Abschnitt.
import com.google.cloud.aiplatform.v1.BatchPredictionJob;
import com.google.cloud.aiplatform.v1.BigQueryDestination;
import com.google.cloud.aiplatform.v1.BigQuerySource;
import com.google.cloud.aiplatform.v1.JobServiceClient;
import com.google.cloud.aiplatform.v1.JobServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.ModelName;
import com.google.gson.JsonObject;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;

public class CreateBatchPredictionJobBigquerySample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String displayName = "DISPLAY_NAME";
    String modelName = "MODEL_NAME";
    String instancesFormat = "INSTANCES_FORMAT";
    String bigquerySourceInputUri = "BIGQUERY_SOURCE_INPUT_URI";
    String predictionsFormat = "PREDICTIONS_FORMAT";
    String bigqueryDestinationOutputUri = "BIGQUERY_DESTINATION_OUTPUT_URI";
    createBatchPredictionJobBigquerySample(
        project,
        displayName,
        modelName,
        instancesFormat,
        bigquerySourceInputUri,
        predictionsFormat,
        bigqueryDestinationOutputUri);
  }

  static void createBatchPredictionJobBigquerySample(
      String project,
      String displayName,
      String model,
      String instancesFormat,
      String bigquerySourceInputUri,
      String predictionsFormat,
      String bigqueryDestinationOutputUri)
      throws IOException {
    JobServiceSettings settings =
        JobServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();
    String location = "us-central1";

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (JobServiceClient client = JobServiceClient.create(settings)) {
      JsonObject jsonModelParameters = new JsonObject();
      Value.Builder modelParametersBuilder = Value.newBuilder();
      JsonFormat.parser().merge(jsonModelParameters.toString(), modelParametersBuilder);
      Value modelParameters = modelParametersBuilder.build();
      BigQuerySource bigquerySource =
          BigQuerySource.newBuilder().setInputUri(bigquerySourceInputUri).build();
      BatchPredictionJob.InputConfig inputConfig =
          BatchPredictionJob.InputConfig.newBuilder()
              .setInstancesFormat(instancesFormat)
              .setBigquerySource(bigquerySource)
              .build();
      BigQueryDestination bigqueryDestination =
          BigQueryDestination.newBuilder().setOutputUri(bigqueryDestinationOutputUri).build();
      BatchPredictionJob.OutputConfig outputConfig =
          BatchPredictionJob.OutputConfig.newBuilder()
              .setPredictionsFormat(predictionsFormat)
              .setBigqueryDestination(bigqueryDestination)
              .build();
      String modelName = ModelName.of(project, location, model).toString();
      BatchPredictionJob batchPredictionJob =
          BatchPredictionJob.newBuilder()
              .setDisplayName(displayName)
              .setModel(modelName)
              .setModelParameters(modelParameters)
              .setInputConfig(inputConfig)
              .setOutputConfig(outputConfig)
              .build();
      LocationName parent = LocationName.of(project, location);
      BatchPredictionJob response = client.createBatchPredictionJob(parent, batchPredictionJob);
      System.out.format("response: %s\n", response);
      System.out.format("\tName: %s\n", response.getName());
    }
  }
}

Vertex AI SDK für Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.

Im folgenden Beispiel legen Sie die Parameter "instances_format" und "predictions_format" auf "bigquery" fest. Informationen zum Festlegen der anderen Parameter finden Sie auf dem Tab "REST UND BEFEHLSZEILE" in diesem Abschnitt.
from google.cloud import aiplatform_v1beta1
from google.protobuf import json_format
from google.protobuf.struct_pb2 import Value


def create_batch_prediction_job_bigquery_sample(
    project: str,
    display_name: str,
    model_name: str,
    instances_format: str,
    bigquery_source_input_uri: str,
    predictions_format: str,
    bigquery_destination_output_uri: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)
    model_parameters_dict = {}
    model_parameters = json_format.ParseDict(model_parameters_dict, Value())

    batch_prediction_job = {
        "display_name": display_name,
        # Format: 'projects/{project}/locations/{location}/models/{model_id}'
        "model": model_name,
        "model_parameters": model_parameters,
        "input_config": {
            "instances_format": instances_format,
            "bigquery_source": {"input_uri": bigquery_source_input_uri},
        },
        "output_config": {
            "predictions_format": predictions_format,
            "bigquery_destination": {"output_uri": bigquery_destination_output_uri},
        },
        # optional
        "generate_explanation": True,
    }
    parent = f"projects/{project}/locations/{location}"
    response = client.create_batch_prediction_job(
        parent=parent, batch_prediction_job=batch_prediction_job
    )
    print("response:", response)

API: Cloud Storage

REST

Mit der Methode batchPredictionJobs.create können Sie eine Batch-Inferenz anfordern.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der das Modell gespeichert ist und der Batch-Inferenzjob ausgeführt wird. Beispiel: us-central1.
  • PROJECT_ID: Ihre Projekt-ID
  • BATCH_JOB_NAME: Anzeigename für den Batchjob
  • MODEL_ID: Die ID des Modells, das für Inferenzen verwendet werden soll
  • URI: Pfade (URIs) zu den Cloud Storage-Buckets mit den Trainingsdaten. Es können mehrere sein. Jeder URI hat das folgende Format:
    gs://bucketName/pathToFileName
    
  • OUTPUT_URI_PREFIX: Pfad zu einem Cloud Storage-Ziel, in das die Inferenzen geschrieben werden. Vertex AI schreibt Batch-Inferenzen in ein mit einem Zeitstempel versehenes Unterverzeichnis dieses Pfads. Geben Sie für diesen Wert einen String im folgenden Format an:
    gs://bucketName/pathToOutputDirectory
    
  • MACHINE_TYPE: Die Maschinenressourcen, die für diesen Batch-Inferenzjob zu verwenden sind. Weitere Informationen
  • STARTING_REPLICA_COUNT: Die Anzahl der Knoten für diesen Batch-Inferenzjob. Die Knotenanzahl kann je nach Last erhöht (bis zur maximalen Knotenanzahl) oder verringert werden, niemals jedoch unter diese Zahl fallen.
  • MAX_REPLICA_COUNT: Die maximale Anzahl von Knoten für diesen Batch-Inferenzjob. Die Anzahl der Knoten kann je nach Last erhöht oder verringert werden, überschreitet jedoch nie den Höchstwert. Optional; der Standardwert ist 10.
  • GENERATE_EXPLANATION: Sie können eine Inferenz mit Erläuterungen anfordern, die auch als Featureattribute bezeichnet werden, um zu sehen, wie Ihr Modell zu einer Inferenz gelangt ist. Die Werte der lokalen Merkmalwichtigkeit geben an, wie viel jedes Merkmal zum Inferenzergebnis beigetragen hat. Feature-Attributionen sind in Vertex AI-Inferenzen über Vertex Explainable AI enthalten.

    Der Standardwert ist false. Setzen Sie diesen Wert auf true, um Feature-Attributionen zu aktivieren. Diese Option ist nur verfügbar, wenn das Ausgabeziel JSONL ist. Feature-Attributionen werden für CSV in Cloud Storage nicht unterstützt.

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": "MODEL_ID",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        URI1,...
      ]
    },
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "MACHINE_TYPE",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  },

  "generateExplanation": GENERATE_EXPLANATION

}

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__ID/locations/LOCATION_ID/batchPredictionJobs/67890",
  "displayName": "batch_job_1 202005291958",
  "model": "projects/12345/locations/us-central1/models/5678",
  "state": "JOB_STATE_PENDING",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        "gs://bp_bucket/reg_mode_test"
      ]
    }
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "n1-standard-32",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": 2,
    "maxReplicaCount": 6
  },
  "manualBatchTuningParameters": {
    "batchSize": 4
  }
  "outputInfo": {
    "gcsOutputDataset": "OUTPUT_URI_PREFIX/prediction-batch_job_1 202005291958-2020-09-30T02:58:44.341643Z"
  }
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-09-30T02:58:44.341643Z",
  "updateTime": "2020-09-30T02:58:44.341643Z",
}

Batch-Inferenzergebnisse abrufen

Vertex AI sendet die Ausgabe von Batchinferenzen an das von Ihnen angegebene Ziel, entweder BigQuery oder Cloud Storage.

BigQuery

Ausgabe-Dataset

Wenn Sie BigQuery verwenden, wird die Ausgabe der Batch-Inferenz in einem Ausgabe-Dataset gespeichert. Wenn Sie ein Dataset für Vertex AI bereitgestellt haben, ist der Name des Datasets (BQ_DATASET_NAME) der Name, den Sie zuvor angegeben haben. Wenn Sie kein Ausgabe-Dataset angegeben haben, hat Vertex AI ein Dataset für Sie erstellt. Sie finden den Namen (BQ_DATASET_NAME) mit den folgenden Schritten:

  1. Rufen Sie in der Google Cloud Console die Seite Batchvorhersagen für Vertex AI auf.

    Zur Seite „Batch-Inferenzen“

  2. Wählen Sie die erstellte Inferenz aus.
  3. Das Ausgabe-Dataset ist unter Exportspeicherort angegeben. Der Dataset-Name wird so erstellt: prediction_MODEL_NAME_TIMESTAMP
Ausgabetabellen

Das Ausgabe-Dataset enthält eine oder mehrere der folgenden drei Ausgabetabellen:

  • Vorhersagetabelle

    Diese Tabelle enthält eine Zeile für jede Zeile in Ihren Eingabedaten, in der eine Inferenz angefordert wurde (d. h., wenn TARGET_COLUMN_NAME = null ist).

  • Fehlertabelle

    Diese Tabelle enthält eine Zeile für jeden nicht kritischen Fehler, der während der Batch-Inferenz aufgetreten ist. Jeder nicht kritische Fehler entspricht einer Zeile in den Eingabedaten, für die Vertex AI keine Prognose zurückgeben konnte.

Vorhersagetabelle

Der Name der Tabelle (BQ_PREDICTIONS_TABLE_NAME) wird durch Anfügen von „predictions_“ mit dem Zeitstempel gebildet, wann der Batch-Inferenzjob gestartet wurde: predictions_TIMESTAMP.

Rufen Sie zum Abrufen von Inferenzen die BigQuery-Seite auf.

BigQuery aufrufen

Das Format der Abfrage hängt vom Modelltyp ab.

Klassifikation:

SELECT predicted_TARGET_COLUMN_NAME.classes AS classes,
predicted_TARGET_COLUMN_NAME.scores AS scores
FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME

classes ist die Liste der möglichen Klassen und scores die entsprechenden Konfidenzwerte.

Regression:

SELECT predicted_TARGET_COLUMN_NAME.value,
predicted_TARGET_COLUMN_NAME.lower_bound,
predicted_TARGET_COLUMN_NAME.upper_bound
FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME

Wenn Sie Featureattributionen aktiviert haben, finden Sie diese auch in der Vorhersagetabelle. Führen Sie die folgende Abfrage aus, um auf Zuordnungen für ein Feature BQ_FEATURE_NAME zuzugreifen:

SELECT explanation.attributions[OFFSET(0)].featureAttributions.BQ_FEATURE_NAME FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
  

Fehlertabelle

Der Name der Tabelle (BQ_ERRORS_TABLE_NAME) wird durch Anfügen von errors_ mit dem Zeitstempel erstellt, zu dem der Batchinference-Job gestartet wurde: errors_TIMESTAMP. So rufen Sie die Fehlervalidierungstabelle ab:
  1. Rufen Sie in der Console die Seite "BigQuery" auf.

    BigQuery aufrufen

  2. Führen Sie die folgende Abfrage aus:
    SELECT * FROM BQ_DATASET_NAME.BQ_ERRORS_TABLE_NAME
          
Die Fehler werden in den folgenden Spalten gespeichert:
  • errors_TARGET_COLUMN_NAME.code
  • errors_TARGET_COLUMN_NAME.message

Cloud Storage

Wenn Sie Cloud Storage als Ausgabeziel angegeben haben, werden die Ergebnisse Ihrer Batchinferenzanafrage als CSV-Dateien in einem neuen Ordner in dem von Ihnen angegebenen Bucket zurückgegeben. Der Name des Ordners ist der Name Ihres Modells, dem „prediction_“ vorangestellt und der Zeitstempel vom Start des Batch-Inferenzjobs angehängt wird. Sie finden den Namen des Cloud Storage-Ordners auf dem Tab Batchvorhersagen für Ihr Modell.

Der Cloud Storage-Ordner enthält zwei Arten von Objekten:
  • Vorhersageobjekte

    Die Inferenzobjekte heißen „predictions_1.csv“, „predictions_2.csv“ usw. Sie enthalten eine Kopfzeile mit den Spaltennamen und eine Zeile für jede zurückgegebene Inferenz. In den Inferenzobjekten gibt Vertex AI Ihre Inferenzdaten zurück und erstellt basierend auf Modelltyp eine oder mehrere neue Spalten für die Inferenzergebnisse:

    • Klassifizierung: Für jeden potenziellen Wert Ihrer Zielspalte wird eine Spalte mit dem Namen TARGET_COLUMN_NAME_VALUE_score den Ergebnissen hinzugefügt. Diese Spalte enthält den Wert oder die Konfidenzschätzung für diesen Wert.
    • Regression: Der vorhergesagte Wert für diese Zeile wird in einer Spalte mit dem Namen predicted_TARGET_COLUMN_NAME zurückgegeben. Das Vorhersageintervall wird für die CSV-Ausgabe nicht zurückgegeben.
  • Fehlerobjekte

    Die Fehlerobjekte heißen "errors_1.csv", "errors_2.csv" usw. Sie enthalten eine Kopfzeile und eine Zeile für jede Zeile in Ihren Eingabedaten, für die Vertex AI keine Inferenz zurückgeben konnte, z. B. wenn eine Funktion, die keinen Nullwert zulässt, null war.

Hinweis: Wenn die Ergebnisse umfangreich sind, werden sie in mehrere Objekte aufgeteilt.

Feature-Attributionen sind für Batch-Inferenzergebnisse, die in Cloud Storage zurückgegeben werden, nicht verfügbar.

Inferenzergebnisse interpretieren

Klassifizierung

Klassifizierungsmodelle geben einen Konfidenzwert zurück.

Der Konfidenzwert gibt an, wie stark Ihr Modell die einzelnen Klassen oder Labels mit einem Testelement verknüpft. Je höher die Zahl, desto höher die Konfidenz des Modells, dass das Label auf dieses Element angewendet werden sollte. Sie entscheiden, wie hoch der Konfidenzwert für die Annahme der Ergebnisse des Modells sein muss.

Regression

Regressionsmodelle geben einen Inferenzwert zurück. Für BigQuery-Ziele geben sie auch ein Inferenzintervall zurück. Das Intervall für die Inferenz bietet einen Wertebereich, bei dem das Modell eine Konfidenz von 95% hat, dass er das tatsächliche Ergebnis enthält.

Erläuterungsergebnisse interpretieren

Wenn die Ergebnisse der Batchinferenz in BigQuery gespeichert sind und Sie Featureattributionen aktivieren möchten, finden Sie die Werte der Feature-Attribution in der Inferenztabelle.

Zur Berechnung der lokalen Featurewichtigkeit wird zuerst der Baseline-Inferenzwert berechnet. Die Basiswerte werden aus den Trainingsdaten berechnet, wobei der Medianwert für numerische Features und der Modus für kategoriale Features verwendet werden. Die aus den Basiswerten generierte Inferenz ist der Basis-Inferenzwert. Baselinewerte werden für ein Modell einmal berechnet und bleiben unverändert.

Bei einer bestimmten Inferenz zeigt Ihnen die lokale Featurewichtigkeit für jedes Feature an, wie viel dieses Feature im Vergleich zum Baseline-Inferenzwert zum Ergebnis hinzugefügt oder davon abgezogen hat. Die Summe aller Featurewichtigkeitswerte entspricht der Differenz zwischen dem Baseline-Inferenzwert und dem Inferenzergebnis.

Bei Klassifizierungsmodellen liegt die Punktzahl immer zwischen 0,0 und 1,0 (einschließlich). Daher liegen die lokalen Featurewichtigkeitswerte für Klassifizierungsmodelle immer zwischen -1.0 und 1.0 (einschließlich).

Beispiele für Feature-Attributionsabfragen und weitere Informationen finden Sie unter Featureattributionen für Klassifizierung und Regression.

Nächste Schritte