Vorhersagen für ein Prognosemodell abrufen

Vertex AI bietet zwei Optionen zum Projizieren zukünftiger Werte mit Ihrem trainierten Prognosemodell: Onlinevorhersagen und Batchvorhersagen.

Eine Onlinevorhersage ist eine synchrone Anfrage. Verwenden Sie Onlinevorhersagen, wenn Sie Anfragen als Reaktion auf Anwendungseingaben oder in Situationen stellen, in denen eine zeitnahe Inferenz erforderlich ist.

Eine Batchvorhersageanfrage ist eine asynchrone Anfrage. Verwenden Sie Batchvorhersagen, wenn Sie nicht sofort eine Antwort benötigen und akkumulierte Daten in einer einzigen Anfrage verarbeiten möchten.

Auf dieser Seite erfahren Sie, wie Sie zukünftige Werte mithilfe von Batchvorhersagen projizieren. Informationen zum Projizieren von Werten mit Onlinevorhersagen finden Sie unter Onlinevorhersagen für ein Prognosemodell abrufen.

Sie können Batchvorhersagen direkt von der Modellressource anfordern.

Sie können eine Vorhersage mit Erläuterungen anfordern, die auch als Featureattribute bezeichnet werden, um zu sehen, wie Ihr Modell zu einer Vorhersage gelangt ist. Die Werte der lokalen Merkmalwichtigkeit geben an, wie viel jedes Feature zum Vorhersageergebnis beigetragen hat. Eine konzeptionelle Übersicht finden Sie unter Feature-Attributionen für Prognosen.

Weitere Informationen zu den Preisen für Batchvorhersagen finden Sie unter Preise für tabellarische Workflows.

Hinweise

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

Eingabedaten

Die Eingabedaten für Batchvorhersageanfragen sind die Daten, die Ihr Modell zum Erstellen von Prognosen verwendet. Sie können Eingabedaten in einem von zwei Formaten bereitstellen:

  • CSV-Objekte in Cloud Storage
  • BigQuery-Tabellen

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 Quelle für Ihre Batchvorhersagen 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 Prognoseergebnisse.

Anforderungen an Eingabedaten

Eingaben für Prognosemodelle müssen die folgenden Anforderungen erfüllen:

  • Alle Werte in der Zeitspalte müssen vorhanden und gültig sein.
  • Die Datenhäufigkeit für die Eingabedaten und die Trainingsdaten müssen übereinstimmen. Wenn in der Zeitreihe Zeilen fehlen, müssen Sie diese mit dem richtigen Fachwissen manuell einfügen.
  • Zeitachsen mit doppelten Zeitstempeln werden aus Vorhersagen entfernt. Entfernen Sie doppelte Zeitstempel, um sie einzubeziehen.
  • Stellen Sie Verlaufsdaten für jede Zeitreihe bereit, die vorhergesagt werden kann. Um genaue Prognosen zu erhalten, sollte die Datenmenge mit dem Kontextfenster übereinstimmen, das während des Modelltrainings festgelegt wird. Wenn das Kontextfenster z. B. 14 Tage umfasst, geben Sie die Daten von mindestens 14 Tagen an. Wenn Sie weniger Daten bereitstellen, füllt Vertex AI die Daten mit leeren Werten.
  • Die Prognose beginnt in der ersten Zeile einer Zeitreihe (sortiert nach Zeit) mit einem Nullwert in der Zielspalte. Der Nullwert muss innerhalb der Zeitreihe kontinuierlich sein. Wenn die Zielspalte beispielsweise nach Zeit sortiert ist, können Sie nicht 1, 2, null, 3, 4, null und null für eine einzelne Zeitreihe haben. Bei CSV-Dateien behandelt Vertex AI einen leeren String als null und bei BigQuery werden Nullwerte nativ unterstützt.

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 Batchvorhersageanfrage muss nicht mit dem für die Eingabe verwendeten Format übereinstimmen. Wenn Sie beispielsweise BigQuery-Tabelle als Eingabe verwendet haben, können Sie die Prognoseergebnisse an ein CSV-Objekt in Cloud Storage ausgeben.

Batchvorhersageanfrage an das Modell stellen

Sie können die Google Cloud Console oder die Vertex AI API verwenden, um Batchvorhersageanfragen 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 Batchvorhersage 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 Batchvorhersagen auf.

    Zur Seite "Batchvorhersagen"

  2. Klicken Sie auf Erstellen, um das Fenster Neue Batchvorhersage zu öffnen.
  3. Führen Sie für Batchvorhersage definieren folgende Schritte aus:
    1. Geben Sie einen Namen für die Batchvorhersage ein.
    2. Wählen Sie unter Modellname den Namen des Modells aus, das für diese Batchvorhersage verwendet werden soll.
    3. Wählen Sie unter Version die Version des Modells 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 für CSV-Dateien den Cloud Storage-Speicherort an, in dem sich Ihre CSV-Eingabedatei befindet.
      • Geben Sie für 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 für die Ausgabe der Batchvorhersage 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-Projekt-ID ein. 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. Wenn Ihr Ausgabeziel BigQuery oder JSONL in Cloud Storage ist, können Sie zusätzlich zu Vorhersagen Feature-Attributionen aktivieren. Wählen Sie dazu Feature-Attributionen für dieses Modell aktivieren aus. Feature-Attributionen werden für CSV in Cloud Storage nicht unterstützt. Weitere Informationen
  4. Optional: Die Modellmonitoring-Analyse für Batchvorhersagen ist in der Vorschau verfügbar. Informationen für das Hinzufügen einer Konfiguration zur Abweichungserkennung zu Ihrem Batchvorhersagejob finden Sie unter Voraussetzungen.
    1. Klicken Sie, um die Option Model Monitoring für diese Batchvorhersage 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 Batchvorhersagejob ausgeführt wird. Beispiel: us-central1.
  • PROJECT_ID: Ihre Projekt-ID
  • BATCH_JOB_NAME: Anzeigename für den Batchjob
  • MODEL_ID: Die ID für das Modell, das für Vorhersagen 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 Vorhersagen geschrieben werden Geben Sie die Projekt-ID und optional eine vorhandene Dataset-ID an. Verwenden Sie das folgende Formular:
    bq://bqprojectId.bqDatasetId
    Wenn Sie nur die Projekt-ID angeben, erstellt Vertex AI ein neues Ausgabe-Dataset für Sie. Verwenden Sie das folgende Formular:
    bq://bqprojectId
  • GENERATE_EXPLANATION: Der Standardwert ist false. Setzen Sie diesen Wert auf true, um Featureattributionen zu aktivieren. Weitere Informationen finden Sie unter Feature-Attributionen für Prognosen.

HTTP-Methode und URL:

POST http://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": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "OUTPUT_URI"
    }
  },
  "generate_explanation": 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 \
"http://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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort 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
  },
  "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 mit `bigquery`. Informationen zum Ersetzen der anderen Platzhalter finden Sie auf dem Tab „REST & CMD LINE“ 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());
    }
  }
}

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 Python API.

def create_batch_prediction_job_bigquery_sample(
    project: str,
    location: str,
    model_resource_name: str,
    job_display_name: str,
    bigquery_source: str,
    bigquery_destination_prefix: str,
    sync: bool = True,
):
    aiplatform.init(project=project, location=location)

    my_model = aiplatform.Model(model_resource_name)

    batch_prediction_job = my_model.batch_predict(
        job_display_name=job_display_name,
        bigquery_source=bigquery_source,
        bigquery_destination_prefix=bigquery_destination_prefix,
        sync=sync,
    )

    batch_prediction_job.wait()

    print(batch_prediction_job.display_name)
    print(batch_prediction_job.resource_name)
    print(batch_prediction_job.state)
    return batch_prediction_job

API: Cloud Storage

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 Batchvorhersagejob ausgeführt wird. Beispiel: us-central1.
  • PROJECT_ID: Ihre Projekt-ID
  • BATCH_JOB_NAME: Anzeigename für den Batchjob
  • MODEL_ID: Die ID für das Modell, das für Vorhersagen 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 Vorhersagen geschrieben werden. Vertex AI schreibt Batchvorhersagen in ein mit einem Zeitstempel versehenes Unterverzeichnis dieses Pfads. Geben Sie für diesen Wert einen String im folgenden Format an:
    gs://bucketName/pathToOutputDirectory
    
  • GENERATE_EXPLANATION: Der Standardwert ist false. Setzen Sie diesen Wert auf true, um Featureattributionen 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. Weitere Informationen finden Sie unter Feature-Attributionen für Prognosen.

HTTP-Methode und URL:

POST http://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": "csv",
    "gcsSource": {
      "uris": [
        URI1,...
      ]
    },
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "generate_explanation": 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 \
"http://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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort 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
  }
  "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",
}

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 Python API.

def create_batch_prediction_job_sample(
    project: str,
    location: str,
    model_resource_name: str,
    job_display_name: str,
    gcs_source: Union[str, Sequence[str]],
    gcs_destination: str,
    sync: bool = True,
):
    aiplatform.init(project=project, location=location)

    my_model = aiplatform.Model(model_resource_name)

    batch_prediction_job = my_model.batch_predict(
        job_display_name=job_display_name,
        gcs_source=gcs_source,
        gcs_destination_prefix=gcs_destination,
        sync=sync,
    )

    batch_prediction_job.wait()

    print(batch_prediction_job.display_name)
    print(batch_prediction_job.resource_name)
    print(batch_prediction_job.state)
    return batch_prediction_job

Batchvorhersageergebnisse abrufen

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

Die Cloud Storage-Ausgabe für Featureattributionen wird derzeit nicht unterstützt.

BigQuery

Ausgabe-Dataset

Wenn Sie BigQuery verwenden, wird die Ausgabe der Batchvorhersage 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 für Vertex AI-Batchvorhersagen auf.

    Zur Seite "Batchvorhersagen"

  2. Wählen Sie die erstellte Vorhersage 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 Vorhersage angefordert wurde (d. h., wenn TARGET_COLUMN_NAME = null ist). Wenn Ihre Eingabe beispielsweise 14 Nulleinträge für die Zielspalte (z. B. Verkäufe für die nächsten 14 Tage) enthielt, gibt Ihre Vorhersageanfrage 14 Zeilen zurück, die Summe der Verkäufe für jeden Tag. Wenn Ihre Vorhersageanfrage den Prognosehorizont des Modells überschreitet, gibt Vertex AI nur Vorhersagen bis zum Prognosehorizont zurück.

  • Fehlervalidierungstabelle

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

  • Fehlertabelle

    Diese Tabelle enthält eine Zeile für jeden nicht kritischen Fehler, der während der Batchvorhersage 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 Batchvorhersagejob gestartet wurde: predictions_TIMESTAMP

So rufen Sie die Vorhersagetabelle 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_PREDICTIONS_TABLE_NAME
          

Vertex AI speichert Vorhersagen in der Spalte predicted_TARGET_COLUMN_NAME.value.

Wenn Sie ein Modell mit dem TFT (Temporären Fusion Transformer) trainiert haben, finden Sie die TFT-Interpretierbarkeitsausgabe in der Spalte predicted_TARGET_COLUMN_NAME.tft_feature_importance:

Diese Spalte ist weiter unterteilt:

  • context_columns: Prognosefeatures, deren Kontextfensterwerte als Eingaben für den LSTM-Encoder (TFT Long Short-Term Memory) dienen.
  • context_weights: Die Featurewichtigkeit, die mit jeder der context_columns für die vorhergesagte Instanz verknüpft ist.
  • horizon_columns: Prognosefeatures, deren Prognosehorizont-Werte als Eingaben für den (LSTM)-Decoder (TFT Long Short-Term Memory) dienen.
  • horizon_weights: Die Featurewichtigkeit, die mit jeder der horizon_columns für die vorhergesagte Instanz verknüpft ist.
  • attribute_columns: Prognosefunktionen, die zeitunabhängig sind.
  • attribute_weights: Die mit jeder der attribute_columns verknüpften Gewichtungen.

Wenn Ihr Modell für Quantilverlust optimiert ist und Ihr Quantilsatz den Medianwert enthält, ist predicted_TARGET_COLUMN_NAME.value der Vorhersagewert am Median. Andernfalls ist predicted_TARGET_COLUMN_NAME.value der Vorhersagewert im niedrigsten Quantil des Satzes. Wenn Ihr Quantilsatz beispielsweise [0.1, 0.5, 0.9] lautet, ist value die Vorhersage für das Quantil 0.5. Wenn der Quantilsatz [0.1, 0.9] lautet, ist value die Vorhersage für das Quantil 0.1.

Darüber hinaus speichert Vertex AI Quantilwerte und Vorhersagen in den folgenden Spalten:

  • predicted_TARGET_COLUMN_NAME.quantile_values: Die Werte der Quantile, die während des Modelltrainings festgelegt werden. Dies können beispielsweise 0.1, 0.5 und 0.9 sein.
  • predicted_TARGET_COLUMN_NAME.quantile_predictions: Die Vorhersagewerte, die den Quantilwerten zugeordnet sind.

Wenn Ihr Modell die probabilistische Inferenz verwendet, enthält predicted_TARGET_COLUMN_NAME.value den Minimierer des Optimierungsziels. Wenn Ihr Optimierungsziel beispielsweise minimize-rmse ist, enthält predicted_TARGET_COLUMN_NAME.value den Mittelwert. Ist es minimize-mae, enthält predicted_TARGET_COLUMN_NAME.value den Medianwert.

Wenn Ihr Modell die probabilistische Inferenz mit Quantilen verwendet, speichert Vertex AI Quantilwerte und Vorhersagen in den folgenden Spalten:

  • predicted_TARGET_COLUMN_NAME.quantile_values: Die Werte der Quantile, die während des Modelltrainings festgelegt werden. Dies können beispielsweise 0.1, 0.5 und 0.9 sein.
  • predicted_TARGET_COLUMN_NAME.quantile_predictions: Die Vorhersagewerte, die den Quantilwerten zugeordnet sind.

Wenn Sie Feature-Attributionen 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
  

Weitere Informationen finden Sie unter Feature-Attributionen für Prognosen.

Fehlervalidierungstabelle

Der Name der Tabelle (BQ_ERRORS_VALIDATION_TABLE_NAME) wird durch Anfügen von "errors_validation" mit dem Zeitstempel gebildet, ab dem der Batchvorhersagejob gestartet wurde: errors_validation_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_VALIDATION_TABLE_NAME
          
Die Fehlermeldung wird in der folgenden Spalte gespeichert:
  • errors_TARGET_COLUMN_NAME

Fehlertabelle

Der Name der Tabelle (BQ_ERRORS_TABLE_NAME) wird durch Anfügen von "errors_" mit dem Zeitstempel gebildet, ab dem der Batchvorhersagejob 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 Batchvorhersageanfrage 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 wird und der Zeitstempel vom Start des Vorhersagejobs 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 Vorhersageobjekte heißen "predictions_1.csv", "predictions_2.csv" usw. Sie enthalten eine Kopfzeile mit den Spaltennamen und eine Zeile für jede zurückgegebene Vorhersage. Die Anzahl der Vorhersagewerte hängt von der Vorhersageeingabe und dem Vorhersagezeitraum ab. Wenn Ihre Eingabe beispielsweise 14 Nulleinträge für die Zielspalte (z. B. Verkäufe für die nächsten 14 Tage) enthielt, gibt Ihre Vorhersageanfrage 14 Zeilen zurück, die Summe der Verkäufe für jeden Tag. Wenn Ihre Vorhersageanfrage den Prognosehorizont des Modells überschreitet, gibt Vertex AI nur Vorhersagen bis zum Prognosehorizont zurück.

    Die Prognosewerte werden in einer Spalte mit dem Namen "predicted_TARGET_COLUMN_NAME" zurückgegeben. Bei Quantilprognosen enthält die Ausgabespalte die Quantilvorhersagen und Quantilwerte im JSON-Format.

  • 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 Prognose 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.

Beispiele für Abfragen der Feature-Attribution in BigQuery

Beispiel 1: Attributionen für eine einzelne Vorhersage ermitteln

Stellen Sie sich folgende Frage:

Wie stark hat ein Advertising für ein Produkt die für den 24. November in einem bestimmten Geschäft vorhergesagten Umsätze gesteigert?

Die entsprechende Abfrage sieht so aus:

SELECT
  * EXCEPT(explanation, predicted_sales),
  ROUND(predicted_sales.value, 2) AS predicted_sales,
  ROUND(
    explanation.attributions[OFFSET(0)].featureAttributions.advertisement,
    2
  ) AS attribution_advertisement
FROM
  `project.dataset.predictions`
WHERE
  product = 'product_0'
  AND store = 'store_0'
  AND date = '2019-11-24'

Beispiel 2: Globale Merkmalwichtigkeit ermitteln

Stellen Sie sich folgende Frage:

Wie viel hat jedes Feature insgesamt zum vorhergesagten Umsatz beigetragen?

Sie können die globale Merkmalwichtigkeit manuell berechnen, indem Sie die Attributionen der lokalen Merkmalwichtigkeit zusammenfassen. Die entsprechende Abfrage sieht so aus:

WITH

/*
* Aggregate from (id, date) level attributions to global feature importance.
*/
attributions_aggregated AS (
 SELECT
   SUM(ABS(attributions.featureAttributions.date)) AS date,
   SUM(ABS(attributions.featureAttributions.advertisement)) AS advertisement,
   SUM(ABS(attributions.featureAttributions.holiday)) AS holiday,
   SUM(ABS(attributions.featureAttributions.sales)) AS sales,
   SUM(ABS(attributions.featureAttributions.store)) AS store,
   SUM(ABS(attributions.featureAttributions.product)) AS product,
 FROM
   project.dataset.predictions,
   UNNEST(explanation.attributions) AS attributions

),

/*
* Calculate the normalization constant for global feature importance.
*/
attributions_aggregated_with_total AS (
 SELECT
   *,
   date + advertisement + holiday + sales + store + product AS total
 FROM
   attributions_aggregated
)

/*
* Calculate the normalized global feature importance.
*/
SELECT
 ROUND(date / total, 2) AS date,
 ROUND(advertisement / total, 2) AS advertisement,
 ROUND(holiday / total, 2) AS holiday,
 ROUND(sales / total, 2) AS sales,
 ROUND(store / total, 2) AS store,
 ROUND(product / total, 2) AS product,
FROM
 attributions_aggregated_with_total

Beispielausgabe einer Batchvorhersage in BigQuery

In einem Beispiel-Dataset von Spirituosen gibt es vier Geschäfte in der Stadt "Ida Grove": "Ida Grove Food Pride", "Discount Liquors of Ida Grove", "Casey's General Store #3757", und "Brew Ida Grove". store_name ist der series identifier und drei der vier Speicheranfragevorhersagen für die Zielspalte sale_dollars. Ein Validierungsfehler wird generiert, da keine Prognose für "Discount Liquors of Ida Grove" angefordert wurde.

Es folgt ein Auszug aus dem Eingabe-Dataset, das für die Vorhersage verwendet wird:

Beispieleingabe-Dataset für Prognosevorhersagen

Dies ist ein Auszug aus den Vorhersageergebnissen:

Beispiele für Prognoseergebnisse

Hier ein Auszug aus den Validierungsfehlern:

Beispiele für Fehler bei der Validierung

Beispielausgabe einer Batchvorhersage für ein für Quantilverlust optimiertes Modell

Das folgende Beispiel zeigt die Batchvorhersageausgabe für ein für einen Quantilverlust optimiertes Modell. In diesem Szenario hat das Prognosemodell den Umsatz für die kommenden 14 Tage für jedes Filiale vorhergesagt.

Beispiel für eine Batchvorhersageausgabe für ein für Quantilverlust optimiertes Modell

Die Quantilwerte werden in der Spalte predicted_Sales.quantile_values angegeben. In diesem Beispiel hat das Modell Werte in den Quantilen 0.1, 0.5 und 0.9 vorhergesagt.

Die Vorhersagewerte werden in der Spalte predicted_Sales.quantile_predictions angegeben. Dies ist ein Array von Umsatzwerten, die den Quantilwerten in der Spalte predicted_Sales.quantile_values zugeordnet sind. In der ersten Zeile sehen wir, dass die Wahrscheinlichkeit, dass der Verkaufswerts unter 4484.04 liegt, 10 % beträgt. Die Wahrscheinlichkeit, dass der Verkaufswert unter 5615.64 liegt, beträgt 50 %. Die Wahrscheinlichkeit, dass der Verkaufswert unter 6853.29 liegt, beträgt 90 %. Die Vorhersage für die erste Zeile, dargestellt als ein einzelner Wert, ist 5615.64.

Nächste Schritte