Auf dieser Seite erfahren Sie, wie Sie mithilfe der Google Cloud Console oder der Vertex AI API Batchvorhersagen aus Ihren benutzerdefiniert trainierten Modellen abrufen.
Für eine Batchvorhersage geben Sie eine Eingabequelle und einen Ausgabespeicherort an, entweder Cloud Storage oder BigQuery, wobei Vertex AI die Ergebnisse der Batchvorhersage speichert.
Beschränkungen und Anforderungen
Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Batch-Vorhersagen abrufen:
- Damit die Verarbeitungszeit möglichst gering ist, müssen sich die Ein- und Ausgabestandorte in derselben Region oder Multiregion befinden. Wenn Ihre Eingabe beispielsweise in
us-central1
liegt, kann die Ausgabe inus-central1
oderUS
liegen, aber nicht ineurope-west4
. Weitere Informationen finden Sie unter Cloud Storage-Standorte und BigQuery-Standorte. - Ihre Eingabe und Ausgabe müssen sich außerdem in derselben Region oder Mehrfachregion befinden wie Ihr Modell.
- Model Garden-Modelle werden nicht unterstützt.
- BigQuery ML-Modelle sind keine benutzerdefinierten trainierten Modelle. Die Informationen auf dieser Seite können jedoch verwendet werden, um unter den folgenden Bedingungen Batchvorhersagen aus einem BigQuery ML-Modell zu erhalten:
- Das BigQuery ML-Modell muss in Vertex AI Model Registry registriert sein.
- Wenn Sie eine BigQuery-Tabelle als Eingabe verwenden möchten, müssen Sie
InstanceConfig.instanceType
mit der Vertex AI API auf"object"
festlegen.
Anforderungen an Eingabedaten
Die Eingabe für Batchanfragen gibt die Elemente an, die zur Vorhersage an Ihr Modell gesendet werden sollen. Wir unterstützen die folgenden Eingabeformate:
JSON Lines
Mit einer JSON Lines-Datei können Sie eine Liste der Eingabeinstanzen festlegen, für die Vorhersagen getroffen werden sollen. Speichern Sie die Datei in einem Cloud Storage-Bucket.
Beispiel 1
Das folgende Beispiel zeigt eine JSON Lines-Datei, in der jede Zeile ein Array enthält:
[1, 2, 3, 4]
[5, 6, 7, 8]
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet:
Alle anderen Container
{"instances": [ [1, 2, 3, 4], [5, 6, 7, 8] ]}
PyTorch-Container
{"instances": [ { "data": [1, 2, 3, 4] }, { "data": [5, 6, 7, 8] } ]}
Beispiel 2
Das folgende Beispiel zeigt eine JSON Lines-Datei, in der jede Zeile ein Objekt enthält.
{ "values": [1, 2, 3, 4], "key": 1 }
{ "values": [5, 6, 7, 8], "key": 2 }
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet. Beachten Sie, dass derselbe Anfragetext an alle Container gesendet wird.
{"instances": [
{ "values": [1, 2, 3, 4], "key": 1 },
{ "values": [5, 6, 7, 8], "key": 2 }
]}
Beispiel 3:
Bei vordefinierten PyTorch-Containern muss jede Instanz gemäß dem Standard-Handler von TorchServe in ein data
-Feld eingebunden werden. Vertex AI verpackt Ihre Instanzen nicht. Beispiel:
{ "data": { "values": [1, 2, 3, 4], "key": 1 } }
{ "data": { "values": [5, 6, 7, 8], "key": 2 } }
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet:
{"instances": [
{ "data": { "values": [1, 2, 3, 4], "key": 1 } },
{ "data": { "values": [5, 6, 7, 8], "key": 2 } }
]}
TFRecord
Speichern Sie Eingabeinstanzen im TFRecord-Format. Optional können Sie die TFRecord-Dateien mit Gzip komprimieren. Speichern Sie die TFRecord-Dateien in einem Cloud Storage-Bucket.
Vertex AI liest jede Instanz in Ihren TFRecord-Dateien als Binärcode und codiert dann die Instanz mit base64 als JSON-Objekt mit einem einzigen Schlüssel namens b64
.
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet:
Alle anderen Container
{"instances": [ { "b64": "b64EncodedASCIIString" }, { "b64": "b64EncodedASCIIString" } ]}
PyTorch-Container
{"instances": [ { "data": {"b64": "b64EncodedASCIIString" } }, { "data": {"b64": "b64EncodedASCIIString" } } ]}
Sorgen Sie dafür, dass Ihr Vorhersagecontainer weiß, wie die Instanz decodiert werden soll.
CSV
Geben Sie eine Eingabeinstanz pro Zeile in einer CSV-Datei an. Die erste Zeile muss eine Kopfzeile sein. Alle Strings müssen in doppelte Anführungszeichen (") eingeschlossen werden. Vertex AI akzeptiert Zellenwerte, die Zeilenumbrüche enthalten, nicht. Werte ohne umschließende Anführungszeichen werden als Gleitkommazahlen gelesen.
Das folgende Beispiel zeigt eine CSV-Datei mit zwei Eingabeinstanzen:
"input1","input2","input3"
0.1,1.2,"cat1"
4.0,5.0,"cat2"
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet:
Alle anderen Container
{"instances": [ [0.1,1.2,"cat1"], [4.0,5.0,"cat2"] ]}
PyTorch-Container
{"instances": [ { "data": [0.1,1.2,"cat1"] }, { "data": [4.0,5.0,"cat2"] } ]}
Dateiliste
Erstellen Sie eine Textdatei, in der jede Zeile der Cloud Storage-URI für eine Datei ist. Vertex AI liest den Inhalt jeder Datei als Binärcode und codiert dann die Instanz mit base64 als JSON-Objekt mit einem einzigen Schlüssel namens b64
.
Wenn Sie die Google Cloud Console zum Abrufen von Batchvorhersagen verwenden möchten, fügen Sie Ihre Dateiliste direkt in die Google Cloud Console ein. Andernfalls speichern Sie die Liste in einem Cloud Storage-Bucket.
Das folgende Beispiel zeigt eine Dateiliste mit zwei Eingabeinstanzen:
gs://path/to/image/image1.jpg
gs://path/to/image/image2.jpg
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet:
Alle anderen Container
{ "instances": [ { "b64": "b64EncodedASCIIString" }, { "b64": "b64EncodedASCIIString" } ]}
PyTorch-Container
{ "instances": [ { "data": { "b64": "b64EncodedASCIIString" } }, { "data": { "b64": "b64EncodedASCIIString" } } ]}
Sorgen Sie dafür, dass Ihr Vorhersagecontainer weiß, wie die Instanz decodiert werden soll.
BigQuery
Geben Sie eine BigQuery-Tabelle als projectId.datasetId.tableId
an.
Vertex AI wandelt jede Zeile aus der Tabelle in eine JSON-Instanz um.
Angenommen, Ihre Tabelle enthält Folgendes:
Spalte 1 | Spalte 2 | Spalte 3 |
---|---|---|
1.0 | 3.0 | "Cat1" |
2.0 | 4.0 | "Cat2" |
Folgendes wird an den Vorhersagecontainer im HTTP-Anfragetext gesendet:
Alle anderen Container
{"instances": [ [1.0,3.0,"cat1"], [2.0,4.0,"cat2"] ]}
PyTorch-Container
{"instances": [ { "data": [1.0,3.0,"cat1"] }, { "data": [2.0,4.0,"cat2"] } ]}
So werden BigQuery-Datentypen in JSON konvertiert:
BigQuery-Typ | JSON-Typ | Beispielwert |
---|---|---|
String | String | "abc" |
Ganzzahl | Ganzzahl | 1 |
Float | Float | 1.2 |
Numerisch | Float | 4925.000000000 |
Boolesch | Boolesch | true |
TimeStamp | String | "2019-01-01 23:59:59.999999+00:00" |
Datum | String | "2018-12-31" |
Zeit | String | "23:59:59.999999" |
DateTime | String | "2019-01-01T00:00:00" |
Datensatz | Object | { "A": 1,"B": 2} |
Wiederkehrender Typ | Array[Type] | [1, 2] |
Verschachtelter Datensatz | Object | {"A": {"a": 0}, "B": 1} |
Partitionsdaten
Die Batchvorhersage verwendet MapReduce, um die Eingabe auf jedes Replikat zu fragmentieren. Damit Sie die MapReduce-Funktionen nutzen können, muss die Eingabe partitionierbar sein.
Vertex AI partitioniert automatisch die BigQuery-, Dateilisten- und JSON Lines-Eingaben.
Vertex AI partitioniert CSV-Dateien nicht automatisch, da sie nicht von Natur aus partitionierbar sind. Zeilen in CSV-Dateien sind weder selbstbeschreibend noch typisiert und können Zeilenumbrüche enthalten. Wir empfehlen, für leistungsintensive Anwendungen keine CSV-Eingabe zu verwenden.
Partitionieren Sie bei der TFRecord-Eingabe die Daten manuell. Teilen Sie dazu die Instanzen in kleinere Dateien auf und übergeben Sie die Dateien mit einem Platzhalter (z. B. gs://my-bucket/*.tfrecord
) an den Job. Die Anzahl der Dateien sollte mindestens der angegebenen Anzahl an Replikaten entsprechen.
Eingabedaten filtern und transformieren
Um Ihre Batcheingabe zu filtern oder zu transformieren, können Sie instanceConfig
in der BatchPredictionJob
-Anfrage angeben.
Mit der Filterung können Sie entweder bestimmte Felder aus den Eingabedaten aus Ihrer Vorhersageanfrage ausschließen oder nur einen Teil der Felder aus den Eingabedaten in Ihrer Vorhersageanfrage einschließen, ohne dass benutzerdefinierte Vor-/Nachverarbeitung im Vorhersagecontainer ausführen. Dies ist nützlich, wenn die Eingabedatendatei zusätzliche Spalten enthält, die vom Modell nicht benötigt werden, z. B. Schlüssel oder zusätzliche Daten.
Mit der Transformation können Sie die Instanzen im JSON-Format array
oder object
an den Vorhersagecontainer senden. Weitere Informationen finden Sie unter instanceType
.
Angenommen, Ihre Eingabetabelle enthält Folgendes:
customerId | col1 | col2 |
---|---|---|
1001 | 1 | 2 |
1002 | 5 | 6 |
und Sie geben die folgende instanceConfig
an:
{
"name": "batchJob1",
...
"instanceConfig": {
"excludedFields":["customerId"]
"instanceType":"object"
}
}
Anschließend werden die Instanzen in Ihrer Vorhersageanfrage als JSON-Objekte gesendet und die Spalte customerId
wird ausgeschlossen:
{"col1":1,"col2":2}
{"col1":5,"col2":6}
Beachten Sie, dass bei Angabe des folgenden instanceConfig
dasselbe Ergebnis zurückgegeben wird:
{
"name": "batchJob1",
...
"instanceConfig": {
"includedFields": ["col1","col2"]
"instanceType":"object"
}
}
Eine Demonstration zur Verwendung von Featurefiltern finden Sie im Notebook Batchvorhersage mit einem benutzerdefiniertes Modell und mit Featurefilterung.
Eine Batchvorhersage anfordern
Für Batchvorhersageanfragen können Sie die Google Cloud Console oder die Vertex AI API verwenden. Abhängig von der Anzahl der Eingabeelemente, die Sie eingereicht haben, kann die Batchvorhersage eine Weile dauern.
Wenn Sie eine Batchvorhersage anfordern, wird der Vorhersagecontainer als vom Nutzer bereitgestelltes benutzerdefiniertes Dienstkonto ausgeführt. Die Lese-/Schreibvorgänge, z. B. das Lesen der Vorhersageinstanzen aus der Datenquelle oder das Schreiben der Vorhersageergebnisse, erfolgen standardmäßig mit dem Vertex AI-Dienst-Agent, der standardmäßig Zugriff auf BigQuery und Cloud Storage hat.
Google Cloud Console
Verwenden Sie die Google Cloud Console, um eine Batchvorhersage anzufordern.
- Rufen Sie in der Google Cloud Console im Abschnitt Vertex AI die Seite Batchvorhersagen auf.
Klicken Sie auf Erstellen, um das Fenster Neue Batchvorhersage zu öffnen.
Führen Sie für Batchvorhersage definieren folgende Schritte aus:
Geben Sie einen Namen für die Batchvorhersage ein.
Wählen Sie für Modellname den Namen des Modells aus, das für diese Batchvorhersage verwendet werden soll.
Wählen Sie unter Quelle auswählen die Quelle aus, die auf Ihre Eingabedaten angewendet wird:
- Wenn Sie Ihre Eingabe im Format JSON Lines, CSV oder TFRecord formatiert haben, wählen Sie Datei in Cloud Storage (JSON Lines, CSV, TFRecord, TFRecord Gzip) aus. Geben Sie Ihre Eingabedatei dann im Feld Quellpfad an.
- Wenn Sie eine Dateiliste als Eingabe verwenden, wählen Sie Dateien in Cloud Storage (other) aus und fügen Sie die Dateiliste in das folgende Feld ein.
- Wählen Sie für die BigQuery-Eingabe die Option BigQuery-Pfad aus. Wenn Sie BigQuery als Eingabe auswählen, müssen Sie auch BigQuery als Ausgabe und den von Google verwalteten Verschlüsselungsschlüssel auswählen. Der vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) wird nicht mit BigQuery als Eingabe/Ausgabe unterstützt.
Geben Sie im Feld Zielpfad das Cloud Storage-Verzeichnis an, in dem Vertex AI die Batchvorhersageausgabe speichern soll.
Sie können optional Featureattributionen für dieses Modell aktivieren anklicken, um Featureattributionen als Teil der Batchvorhersageantwort zu erhalten. Klicken Sie anschließend auf Bearbeiten, um die Erläuterungseinstellungen zu konfigurieren. (Das Bearbeiten der Erläuterungseinstellungen ist optional, wenn Sie zuvor die Erläuterungseinstellungen für das Modell konfiguriert und andernfalls angefordert haben.)
Legen Sie Computing-Optionen für den Batchvorhersagejob fest: Anzahl der Computing-Knoten, Maschinentyp und (optional) Beschleunigertyp und Beschleunigeranzahl.
Optional: Die Model Monitoring-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.
Klicken Sie, um die Option Model Monitoring für diese Batchvorhersage aktivieren einzuschalten.
Wählen Sie eine Quelle der Trainingsdaten aus. Geben Sie den Datenpfad oder den Speicherort für die ausgewählte Trainingsdatenquelle ein.
Optional: Geben Sie unter Benachrichtigungsgrenzwerte Grenzwerte an, ab denen Benachrichtigungen ausgelöst werden sollen.
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.
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 Google Cloud Console unterstützt PagerDuty-, Slack- und Pub/Sub-Benachrichtigungskanäle.
Klicken Sie auf Erstellen.
API
Verwenden Sie die Vertex AI API zum Senden von Batchvorhersageanfragen. Wählen Sie einen Tab aus, je nachdem, mit welchem Tool Sie Batchvorhersagen abrufen.
REST
Ersetzen Sie dabei folgende Werte für die 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 Batchvorhersagejob.
MODEL_ID: Die ID für das Modell, das für Vorhersagen verwendet werden soll.
INPUT_FORMAT: Das Format der Eingabedaten:
jsonl
,csv
,tf-record
,tf-record-gzip
oderfile-list
.INPUT_URI: Cloud Storage-URI Ihrer Eingabedaten. Kann Platzhalter enthalten.
OUTPUT_DIRECTORY: Cloud Storage-URI eines Verzeichnisses, in dem Vertex AI die Ausgabe speichern soll.
MACHINE_TYPE: Die Maschinenressourcen, die für diesen Batchvorhersagejob zu verwenden sind.
Optional können Sie das Feld
machineSpec
konfigurieren, um Beschleuniger zu verwenden. Im folgenden Beispiel wird dies jedoch nicht veranschaulicht.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 }, "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", }
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 PREDICTIONS_FORMAT durch jsonl
.
Informationen zum Ersetzen der anderen Platzhalter finden Sie auf dem Tab REST & CMD LINE
dieses Abschnitts.
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.
BigQuery
Im vorherigen REST-Beispiel wird Cloud Storage für die Quelle und das Ziel verwendet. Wenn Sie stattdessen BigQuery verwenden möchten, nehmen Sie die folgenden Änderungen vor:
Ändern Sie das Feld
inputConfig
in Folgendes:"inputConfig": { "instancesFormat": "bigquery", "bigquerySource": { "inputUri": "bq://SOURCE_PROJECT_ID.SOURCE_DATASET_NAME.SOURCE_TABLE_NAME" } }
Ändern Sie das Feld
outputConfig
in Folgendes:"outputConfig": { "predictionsFormat":"bigquery", "bigqueryDestination":{ "outputUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_DATASET_NAME.DESTINATION_TABLE_NAME" } }
Ersetzen Sie dabei Folgendes:
SOURCE_PROJECT_ID
: ID des Quell-Google Cloud-ProjektsSOURCE_DATASET_NAME
: Name des BigQuery-Quell-DatasetsSOURCE_TABLE_NAME
: Name der BigQuery-QuelltabelleDESTINATION_PROJECT_ID
: ID des Ziel-Google Cloud-ProjektsDESTINATION_DATASET_NAME
: Name des BigQuery-Ziel-DatasetsDESTINATION_TABLE_NAME
: Name der BigQuery-Zieltabelle
Featurewichtigkeit
Wenn Sie für Vorhersagen Featurewichtigkeitswerte zurückgeben möchten, legen Sie für das Attribut generateExplanation
den Wert true
fest. Beachten Sie, dass Prognosemodelle die Featurewichtigkeit nicht unterstützen, sodass Sie sie nicht in Ihre Batchvorhersageanfragen aufnehmen können.
Die Featurewichtigkeit, manchmal auch Featureattributionen genannt, ist Teil von Vertex Explainable AI.
Sie können für generateExplanation
nur dann true
festlegen, wenn Sie Ihr Model
für Erläuterungen konfiguriert haben oder wenn Sie das Feld explanationSpec
von BatchPredictionJob
angeben.
Maschinentyp und Anzahl der Replikate wählen
Durch horizontale Skalierung durch eine Steigerung der Anzahl der Replikate wird der Durchsatz linearer und vorhersehbarer verbessert als durch die Verwendung größerer Maschinentypen.
Im Allgemeinen empfehlen wir, den kleinstmöglichen Maschinentyp für Ihren Job anzugeben und die Anzahl der Replikate zu erhöhen.
Aus Gründen der Kosteneffizienz empfehlen wir, dass Sie die Replikatanzahl so auswählen, dass Ihr Batchvorhersagejob mindestens 10 Minuten lang ausgeführt wird. Der Grund ist, dass Ihnen Kosten pro Replikatknotenstunde in Rechnung gestellt werden, inklusive der etwa 5 Minuten, die jedes Replikat zum Start benötigt. Es ist nicht kostengünstig, nur wenige Sekunden Rechenarbeiten auszuführen und dann herunterzufahren.
Als allgemeine Orientierungshilfe empfehlen wir für Tausende von Instanzen einen starting_replica_count
in mehreren Zehntausend. Bei Millionen von Instanzen empfehlen wir einen starting_replica_count
im Bereich von mehreren Hunderten. Sie können auch die folgende Formel verwenden, um die Anzahl der Replikate zu schätzen:
N / (T * (60 / Tb))
Dabei gilt:
- N: Die Anzahl der Batches im Job. Beispiel: 1 Million Instanzen/Batchgröße von 100 = 10.000 Batches.
- T: Die voraussichtliche Zeit für den Batchvorhersagejob. Beispiel: 10 Minuten.
- Tb: Die Zeit in Sekunden, die ein Replikat benötigt, um einen einzelnen Batch zu verarbeiten. Beispiel: 1 Sekunde pro Batch bei einem Maschinentyp mit 2 Kernen.
In unserem Beispiel werden 10.000 Batches/(10 Minuten * (60/1 s)) auf 17 Replikate aufgerundet.
Im Gegensatz zur Onlinevorhersage werden Batchvorhersagejobs nicht automatisch skaliert. Da alle Eingabedaten vorab bekannt sind, partitioniert das System die Daten beim Start des Jobs auf jedes Replikat. Das System verwendet den Parameter starting_replica_count
. Der Parameter max_replica_count
wird ignoriert.
Diese Empfehlungen sind ungefähre Richtlinien. Sie bieten nicht unbedingt für jedes Modell einen optimalen Durchsatz. Sie liefern keine genauen Vorhersagen in Bezug auf Verarbeitungszeit und Kosten. Und sie bieten nicht unbedingt für jedes Szenario die besten Kompromisse in Bezug auf Kosten/Durchsatz. Verwenden Sie sie als guten Ausgangspunkt und passen Sie sie bei Bedarf an. Führen Sie zum Messen von Merkmalen wie dem Durchsatz für Ihr Modell das Notebook Idealen Maschinentyp ermitteln aus.
Für GPU- oder TPU-beschleunigte Maschinen
Beachten Sie die vorherigen Richtlinien (die auch für reine CPU-Modelle gelten) und beachten Sie folgende zusätzliche Überlegungen:
- Möglicherweise benötigen Sie mehr CPUs und GPUs (z. B. für die Datenvorverarbeitung).
- GPU-Maschinentypen benötigen mehr Zeit für den Start (10 Minuten). Daher sollten Sie für den Batchvorhersagejob längere Zeiten (z. B. mindestens 20 Minuten anstelle von 10 Minuten) einplanen, damit eine angemessener Menge Zeit und Kosten für die Generierung von Vorhersagen genutzt wird.
Batchvorhersageergebnisse 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.
Beispiel für ein Batchvorhersageergebnis
Der Ausgabeordner enthält eine Reihe von JSON-Lines-Dateien.
Die Dateien heißen {gcs_path}/prediction.results-{file_number}-of-{number_of_files_generated}
.
Die Anzahl der Dateien ist aufgrund der verteilten Natur von Batchvorhersagen nicht deterministisch.
Jede Zeile in der Datei entspricht einer Instanz aus der Eingabe und hat die folgenden Schlüssel/Wert-Paare:
prediction
: Enthält den vom Vorhersagecontainer zurückgegebenen Wert.instance
: Enthält für Dateilisten den Cloud Storage-URI. Bei allen anderen Eingabeformaten enthält es den Wert, der an den Vorhersagecontainer im HTTP-Anfragetext gesendet wurde.
Beispiel 1
Wenn die HTTP-Anfrage Folgendes enthält:
{
"instances": [
[1, 2, 3, 4],
[5, 6, 7, 8]
]}
Und der Vorhersagecontainer Folgendes zurückgibt:
{
"predictions": [
[0.1,0.9],
[0.7,0.3]
],
}
Dann ist dies die JSON Lines-Ausgabedatei:
{ "instance": [1, 2, 3, 4], "prediction": [0.1,0.9]}
{ "instance": [5, 6, 7, 8], "prediction": [0.7,0.3]}
Beispiel 2
Wenn die HTTP-Anfrage Folgendes enthält:
{
"instances": [
{"values": [1, 2, 3, 4], "key": 1},
{"values": [5, 6, 7, 8], "key": 2}
]}
Und der Vorhersagecontainer Folgendes zurückgibt:
{
"predictions": [
{"result":1},
{"result":0}
],
}
Dann ist dies die JSON Lines-Ausgabedatei:
{ "instance": {"values": [1, 2, 3, 4], "key": 1}, "prediction": {"result":1}}
{ "instance": {"values": [5, 6, 7, 8], "key": 2}, "prediction": {"result":0}}
Explainable AI verwenden
Wir empfehlen nicht, merkmalsbasierte Erklärungen für eine große Datenmenge auszuführen. Das liegt daran, dass jede Eingabe je nach möglichen Feature-Werten potenziell in Tausende von Anfragen verzweigt werden kann, was zu einer deutlichen Erhöhung der Verarbeitungszeit und der Kosten führen kann. Im Allgemeinen reicht ein kleiner Datensatz aus, um die Bedeutung von Merkmalen zu verstehen.
Die Batch-Vorhersage unterstützt keine beispielbasierten Erklärungen.