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 Batch-Vorhersageanfrage 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 Onlinevorhersagen projizieren. Informationen zum Projizieren von Werten mit Batchvorhersagen finden Sie unter Batch-Vorhersagen für ein Prognosemodell abrufen.
Sie müssen Ihr Modell auf einem Endpunkt bereitstellen, bevor Sie es für Vorhersagen verwenden können. Ein Endpunkt ist eine Reihe physischer Ressourcen.
Sie können eine Erklärung anstelle einer Vorhersage anfordern. Die Werte der lokalen Featurewichtigkeit der Erläuterung 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 Onlinevorhersagen finden Sie unter Preise für tabellarische Workflows.
Hinweise
Bevor Sie eine Anfrage für eine Onlinevorhersage stellen können, müssen Sie zuerst ein Modell trainieren.
Endpunkt erstellen oder auswählen
Verwenden Sie die Funktion aiplatform.Endpoint.create()
, um einen Endpunkt zu erstellen. Wenn Sie bereits einen Endpunkt haben, wählen Sie ihn mit der Funktion aiplatform.Endpoint()
aus.
Der folgende Code enthält ein Beispiel:
# Import required modules
from google.cloud import aiplatform
from google.cloud.aiplatform import models
PROJECT_ID = "PROJECT_ID"
REGION = "REGION"
# Initialize the Vertex SDK for Python for your project.
aiplatform.init(project=PROJECT_ID, location=REGION)
endpoint = aiplatform.Endpoint.create(display_name='ENDPOINT_NAME')
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Projekt-ID.
- REGION: Die Region, in der Sie Vertex AI verwenden.
- ENDPOINT_NAME: Anzeigename für den Endpunkt.
Trainiertes Modell auswählen
Verwenden Sie die Funktion aiplatform.Model()
, um ein trainiertes Modell auszuwählen:
# Create reference to the model trained ahead of time.
model_obj = models.Model("TRAINED_MODEL_PATH")
Ersetzen Sie Folgendes:
- TRAINED_MODEL_PATH: zum Beispiel
projects/PROJECT_ID/locations/REGION/models/[TRAINED_MODEL_ID]
Modell für den Endpunkt bereitstellen
Verwenden Sie die Funktion deploy()
, um das Modell für den Endpunkt bereitzustellen. Der folgende Code enthält ein Beispiel:
deployed_model = endpoint.deploy(
model_obj,
machine_type='MACHINE_TYPE',
traffic_percentage=100,
min_replica_count='MIN_REPLICA_COUNT',
max_replica_count='MAX_REPLICA_COUNT',
sync=True,
deployed_model_display_name='DEPLOYED_MODEL_NAME',
)
Ersetzen Sie Folgendes:
- MACHINE_TYPE: zum Beispiel
n1-standard-8
. Weitere Informationen zu Maschinentypen. - MIN_REPLICA_COUNT: Die minimale Anzahl von Knoten für diese Bereitstellung.
Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zur maximalen Anzahl von Knoten und niemals auf weniger als diese Anzahl von Knoten. Dieser Wert muss größer oder gleich 1 sein. Wenn die Variable
min_replica_count
nicht festgelegt ist, wird der Wert standardmäßig auf1
gesetzt. - MAX_REPLICA_COUNT: Die maximale Anzahl von Knoten für diese Bereitstellung.
Die Knotenzahl kann je nach der Vorhersagelast erhöht oder verringert werden, bis zu dieser Anzahl von Knoten und niemals auf weniger als die minimale Anzahl von Knoten. Wenn Sie die Variable
max_replica_count
nicht festlegen, wird die maximale Anzahl von Knoten auf den Wert vonmin_replica_count
festgelegt. - DEPLOYED_MODEL_NAME: Ein Name für
DeployedModel
. Sie können auch den Anzeigenamen vonModel
fürDeployedModel
verwenden.
Die Bereitstellung des Modells kann etwa zehn Minuten dauern.
Onlinevorhersagen abrufen
Verwenden Sie zum Abrufen von Vorhersagen die Funktion predict()
und geben Sie eine oder mehrere Eingabeinstanzen an. Der folgende Code zeigt ein Beispiel:
predictions = endpoint.predict(instances=[{...}, {...}])
Jede Eingabeinstanz ist ein Python-Wörterbuch mit demselben Schema, mit dem das Modell trainiert wurde. Sie muss ein Schlüssel/Wert-Paar verfügbar bei Prognose enthalten, das der Zeitspalte entspricht, und ein Schlüssel/Wert-Paar nicht verfügbar bei Prognose, das die Verlaufsdaten der Zielvorhersagespalte enthält. Vertex AI erwartet, dass jede Eingabeinstanz zu einer einzelnen Zeitachse gehört. Die Reihenfolge der Schlüssel/Wert-Paare in der Instanz ist nicht wichtig.
Die Eingabeinstanz unterliegt den folgenden Einschränkungen:
- Die Schlüssel/Wert-Paare für bei der Prognose verfügbar müssen alle die gleiche Anzahl an Datenpunkten haben.
- Die Schlüssel/Wert-Paare für nicht bei der Prognose verfügbar müssen alle die gleiche Anzahl an Datenpunkten haben.
- Die Schlüssel/Wert-Paare für bei Prognose verfügbar müssen mindestens so viele Datenpunkte haben wie Schlüssel/Wert-Paare für nicht verfügbar bei Prognose.
Weitere Informationen zu den in der Prognose verwendeten Spaltentypen finden Sie unter Featuretyp und Verfügbarkeit bei der Prognose.
Der folgende Code zeigt einen Satz von zwei Eingabeinstanzen.
Die Spalte Category
enthält Attributdaten. Die Spalte Timestamp
enthält Daten, die bei der Prognose verfügbar sind. Drei Punkte sind Kontextdaten und zwei Punkte Horizont-Daten. Die Spalte Sales
enthält Daten, die für die Prognose nicht verfügbar sind. Alle drei Punkte sind Kontextdaten. Informationen zur Verwendung von Kontext und Horizont bei der Prognose finden Sie unter Prognosezeitraum, Kontextfenster und Prognosefenster.
instances=[
{
# Attribute
"Category": "Electronics",
# Available at forecast: three days of context, two days of horizon
"Timestamp": ['2023-08-03', '2023-08-04', '2023-08-05', '2023-08-06', '2023-08-07'],
# Unavailable at forecast: three days of context
"Sales": [490.50, 325.25, 647.00],
},
{
# Attribute
"Category": "Food",
# Available at forecast: three days of context, two days of horizon
"Timestamp": ['2023-08-03', '2023-08-04', '2023-08-05', '2023-08-06', '2023-08-07'],
# Unavailable at forecast: three days of context
"Sales": [190.50, 395.25, 47.00],
}
])
Für jede Instanz antwortet Vertex AI mit zwei Vorhersagen für Sales
, die den beiden Zeitstempeln Horizont („2023-08-06“ und „2023-08-07“) entsprechen.
Für eine optimale Leistung müssen die Anzahl der Kontext-Datenpunkte und die Anzahl der Horizont-Datenpunkte in jeder Eingabeinstanz mit der Kontext- und Horizontlänge übereinstimmen, mit dem das Modell trainiert wurde. Wenn es eine Abweichung gibt, füllt oder kürzt Vertex AI die Instanz, um sie an die Größe des Modells anzupassen.
Wenn die Anzahl der Kontext-Datenpunkte in Ihrer Eingabeinstanz kleiner oder größer ist als die Anzahl der Kontext-Datenpunkte, die für das Modelltraining verwendet werden, muss die Anzahl der Punkte für alle bei der Prognose verfügbaren Schlüssel/Wert-Paare und alle bei der Prognose nicht verfügbaren Schlüssel/Wert-Paare gleich sein.
Nehmen wir als Beispiel ein Modell an, das mit vier Tagen Kontext-Daten und zwei Tagen mit Horizont-Daten trainiert wurde. Sie können eine Vorhersageanfrage mit Kontext-Daten von nur drei Tagen stellen. In diesem Fall enthalten die nicht bei Prognosen verfügbaren Schlüssel/Wert-Paare drei Werte. Die Schlüssel/Wert-Paare für bei Prognose verfügbar müssen fünf Werte enthalten.
Ausgabe der Onlinevorhersage
Vertex AI stellt die Ausgabe der Onlinevorhersage im Feld value
bereit:
{
'value': [...]
}
Die Länge der Vorhersageantwort hängt vom Horizont ab, der beim Modelltraining verwendet wird, und vom Horizont der Eingabeinstanz. Die Länge der Vorhersageantwort ist der kleinste dieser beiden Werte.
Betrachten Sie hierzu folgende Beispiele:
- Sie trainieren ein Modell mit
context
=15
undhorizon
=50
. Ihre Eingabeinstanz hatcontext
=15
undhorizon
=20
. Die Vorhersageantwort hat eine Länge von20
. - Sie trainieren ein Modell mit
context
=15
undhorizon
=50
. Ihre Eingabeinstanz hatcontext
=15
undhorizon
=100
. Die Vorhersageantwort hat eine Länge von50
.
Ausgabe der Onlinevorhersage für TFT-Modelle
Bei Modellen, die mit dem Temporal Fusion Transformer (TFT) trainiert wurden, bietet Vertex AI neben den Vorhersagen im Feld value
auch die TFT-Interpretierbarkeit tft_feature_importance
an:
{
"tft_feature_importance": {
"attribute_weights": [...],
"attribute_columns": [...],
"context_columns": [...],
"context_weights": [...],
"horizon_weights": [...],
"horizon_columns": [...]
},
"value": [...]
}
attribute_columns
: Prognosefunktionen, die zeitunabhängig sind.attribute_weights
: Die mit jeder derattribute_columns
verknüpften Gewichtungen.context_columns
: Prognosefeatures, deren Kontextfensterwerte als Eingaben für den LSTM-Encoder (TFT Long Short-Term Memory) dienen.context_weights
: Die Featurewichtigkeit, die mit jedem dercontext_columns
für die vorhergesagte Instanz verknüpft ist.horizon_columns
: Prognosefeatures, deren Prognosehorizont-Werte als Eingaben für den TFT-Long-Term-Memory-Decoder (LSTM)-Decoder dienen.horizon_weights
: Die Featurewichtigkeit, die mit jedem derhorizon_columns
für die vorhergesagte Instanz verknüpft ist.
Ausgabe der Onlinevorhersage für Modelle mit Quantilverlustoptimierung
Für Modelle, die für den Quantilverlust optimiert sind, bietet Vertex AI die folgende Ausgabe der Onlinevorhersage:
{
"value": [...],
"quantile_values": [...],
"quantile_predictions": [...]
}
-
value
: Wenn Ihre Gruppe von Quantilen den Median enthält, istvalue
der Vorhersagewert am Median. Andernfalls istvalue
der Vorhersagewert im niedrigsten Quantil der Gruppe. Wenn Ihr Quantilsatz beispielsweise[0.1, 0.5, 0.9]
ist, istvalue
die Vorhersage für das Quantil0.5
. Wenn der Quantilsatz[0.1, 0.9]
lautet, istvalue
die Vorhersage für das Quantil0.1
. quantile_values
: Die Werte der Quantile, die während des Modelltrainings festgelegt werden.-
quantile_predictions
: Die Vorhersagewerte, die quantile_values zugeordnet sind.
Betrachten Sie beispielsweise ein Modell, in dem die Zielspalte den Verkaufswert enthält.
Quantilwerte sind als [0.1, 0.5, 0.9]
definiert. Vertex AI gibt die folgenden Quantilvorhersagen zurück: [4484, 5615, 6853]
. Hier enthält der Quantilsatz den Medianwert, sodass value
die Vorhersage für das Quantil 0.5
(5615
) ist. Die Quantilvorhersagen können so interpretiert werden:
- P(Verkaufswert < 4.484) = 10 %
- P(Verkaufswert < 5.615) = 50 %
- P(Verkaufswert < 6853) = 90 %
Ausgabe der Onlinevorhersage für Modelle mit probabilistischer Inferenz
Wenn Ihr Modell die probabilistische Inferenz verwendet, enthält das Feld value
den Minimierer des Optimierungsziels. Wenn Ihr Optimierungsziel beispielsweise minimize-rmse
ist, enthält das Feld value
den Mittelwert. Ist es minimize-mae
, enthält das Feld value
den Medianwert.
Wenn Ihr Modell die probabilistische Inferenz mit Quantilen verwendet, stellt Vertex AI zusätzlich zum Minimierer des Optimierungsziels Quantilwerte und Vorhersagen bereit. Quantilwerte werden während des Modelltrainings festgelegt. Quantilvorhersagen sind die Vorhersagewerte, die den Quantilwerten zugeordnet sind.
Online-Erläuterungen abrufen
Verwenden Sie zum Abrufen von Erläuterungen die Funktion explain()
und geben Sie eine oder mehrere Eingabeinstanzen an. Der folgende Code zeigt ein Beispiel:
explanations = endpoint.explain(instances=[{...}, {...}])
Das Format der Eingabeinstanzen ist für Onlinevorhersagen und Onlineerläuterungen identisch. Weitere Informationen finden Sie unter Onlinevorhersagen abrufen.
Eine konzeptionelle Übersicht über Feature-Attributionen finden Sie unter Feature-Attributionen für Prognosen.
Ausgabe der Onlineerläuterung
Der folgende Code zeigt, wie Sie die Erläuterungsergebnisse ausgeben können:
# Import required modules
import json
from google.protobuf import json_format
def explanation_to_dict(explanation):
"""Converts the explanation proto to a human-friendly json."""
return json.loads(json_format.MessageToJson(explanation._pb))
for response in explanations.explanations:
print(explanation_to_dict(response))
Die Erläuterungsergebnisse haben das folgende Format:
{
"attributions": [
{
"baselineOutputValue": 1.4194682836532593,
"instanceOutputValue": 2.152980089187622,
"featureAttributions": {
...
"store_id": [
0.007947325706481934
],
...
"dept_id": [
5.960464477539062e-08
],
"item_id": [
0.1100526452064514
],
"date": [
0.8525647521018982
],
...
"sales": [
0.0
]
},
"outputIndex": [
2
],
"approximationError": 0.01433318599207033,
"outputName": "value"
},
...
]
}
Die Anzahl der attributions
-Elemente hängt vom Horizont ab, der beim Modelltraining verwendet wird, und vom Horizont der Eingabeinstanz. Die Anzahl der Elemente ist der kleinste dieser beiden Werte.
Das Feld featureAttributions
in einem attributions
-Element enthält einen Wert für jede Spalte im Eingabe-Dataset. Vertex AI generiert Erläuterungen für alle Arten von Features: Attribute, bei Prognose verfügbar und bei Prognose nicht verfügbar. Weitere Informationen zu den Feldern eines attributions
-Elements finden Sie unter Attribution.
Endpunkt löschen
Verwenden Sie die Funktionen undeploy_all()
und delete()
, um den Endpunkt zu löschen. Der folgende Code zeigt ein Beispiel:
endpoint.undeploy_all()
endpoint.delete()
Nächste Schritte
- Weitere Informationen zu Preisen für Onlinevorhersagen.