Vertex AI offre due opzioni per proiettare i valori futuri utilizzando il modello di previsione addestrato: previsioni online e previsioni batch.
Una previsione online è una richiesta sincrona. Utilizza le previsioni online quando effettui richieste in risposta all'input dell'applicazione o in altre situazioni in cui hai bisogno di un'inferenza tempestiva.
Una richiesta di previsione batch è una richiesta asincrona. Utilizza le previsioni batch quando non hai bisogno di una risposta immediata e vuoi elaborare i dati accumulati tramite una singola richiesta.
Questa pagina mostra come proiettare i valori futuri utilizzando le previsioni online. A per scoprire come proiettare i valori utilizzando le previsioni batch, consulta Ottieni previsioni batch per un modello di previsione.
Devi eseguire il deployment del modello su un endpoint prima di poterlo utilizzare per le previsioni. Un endpoint è un insieme di risorse fisiche.
Puoi richiedere una spiegazione anziché una previsione. Le impostazioni locali I valori di importanza delle caratteristiche indicano in che misura ciascuna caratteristica ha contribuito al risultato della previsione. Per una panoramica concettuale, vedi Attribuzioni delle caratteristiche per la previsione.
Per informazioni sui prezzi delle previsioni online, consulta Prezzi per i flussi di lavoro tabulari.
Prima di iniziare
Prima di poter effettuare una richiesta di previsione online, devi prima addestrare un modello.
Crea o seleziona un endpoint
Utilizzare la funzione
aiplatform.Endpoint.create()
per creare un endpoint. Se hai già un endpoint, utilizza la funzione
aiplatform.Endpoint()
per selezionarlo.
Il seguente codice fornisce un esempio:
# 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')
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto.
- REGION: la regione in cui stai utilizzando Vertex AI.
- ENDPOINT_NAME: nome visualizzato per l'endpoint.
Seleziona un modello addestrato
Utilizza la funzione
aiplatform.Model()
per selezionare un modello addestrato:
# Create reference to the model trained ahead of time.
model_obj = models.Model("TRAINED_MODEL_PATH")
Sostituisci quanto segue:
- TRAINED_MODEL_PATH: ad esempio,
projects/PROJECT_ID/locations/REGION/models/[TRAINED_MODEL_ID]
Esegui il deployment del modello nell'endpoint
Utilizzare la funzione
deploy()
eseguire il deployment del modello
nell'endpoint. Il seguente codice fornisce un esempio:
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',
)
Sostituisci quanto segue:
- MACHINE_TYPE: ad esempio,
n1-standard-8
. Scopri di più sui tipi di macchine. - MIN_REPLICA_COUNT: numero minimo di nodi per questo deployment.
Il numero di nodi può essere aumentato o diminuito in base al carico della previsione fino al numero massimo di nodi e mai meno di questo numero di nodi. Questo valore deve essere maggiore o uguale a 1. Se
La variabile
min_replica_count
non è impostata. Il valore predefinito è1
. - MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment.
Il conteggio dei nodi può essere aumentato o diminuito in base alla previsione
fino a questo numero di nodi e mai meno del numero minimo di
nodi. Se non imposti la variabile
max_replica_count
, il valore massimo di nodi è impostato sul valore dimin_replica_count
. - DEPLOYED_MODEL_NAME: un nome per
DeployedModel
. Puoi utilizzare il nome visualizzato delModel
anche per ilDeployedModel
.
Il deployment del modello potrebbe richiedere circa dieci minuti.
Ottenere previsioni online
Per ottenere le previsioni, utilizza la funzione
predict()
e fornisci una o più istanze di input. Il seguente codice mostra un esempio:
predictions = endpoint.predict(instances=[{...}, {...}])
Ogni istanza di input è un dizionario Python con lo stesso schema su cui è stato addestrato il modello. Deve contenere una coppia chiave-valore disponibile al momento della previsione che corrisponde alla colonna data e a una coppia chiave-valore non disponibile al momento della previsione che contiene i valori storici della colonna di previsione scelta come target. Vertex AI prevede che ogni istanza di input appartenga a una singola serie temporale. L'ordine delle coppie chiave-valore nell'istanza non è importante.
L'istanza di input è soggetta ai seguenti vincoli:
- Le coppie chiave-valore disponibile al momento della previsione devono avere tutte lo stesso numero di punti dati.
- Le coppie chiave-valore non disponibili per la previsione devono avere tutte lo stesso numero di punti dati.
- Le coppie chiave-valore disponibili in base alla previsione devono avere almeno un numero di punti dati uguale a quello delle coppie chiave-valore non disponibili in base alla previsione.
Per ulteriori informazioni sui tipi di colonne utilizzati per le previsioni, consulta Tipo di funzionalità e disponibilità al momento della previsione.
Il seguente codice mostra un insieme di due istanze di input.
La colonna Category
contiene i dati degli attributi. La colonna Timestamp
contiene
disponibili al momento della previsione. Tre punti sono i dati di contesto e
due punti sono dati dell'orizzonte. La colonna Sales
contiene dati non disponibili al momento della previsione. Tutti e tre i punti sono dati di contesto. Per scoprire come vengono utilizzati il contesto e l'orizzonte nella previsione, consulta Orizzonte di previsione, finestra di contesto e finestra di previsione.
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],
}
])
Per ogni istanza, Vertex AI risponde con due previsioni per Sales
, corrispondente ai due timestamp orizzonte ("2023-08-06" e "2023-08-07").
Per un rendimento ottimale, il numero di punti dati di contesto e il numero di punti dati orizzonte in ogni istanza di input deve corrispondere al contesto e dell'orizzonte con cui è stato addestrato il modello. In caso di mancata corrispondenza, Vertex AI aggiunge o tronca l'istanza in modo che corrisponda alle dimensioni del modello.
Se il numero di punti dati contestuale nell'istanza di input è inferiore o superiore al numero di punti dati contestuale utilizzati per l'addestramento del modello, assicurati che questo numero di punti sia coerente in tutte le coppie chiave-valore disponibili per la previsione e in tutte le coppie chiave-valore non disponibili per la previsione.
Ad esempio, considera un modello addestrato con quattro giorni di contesto e due giorni di dati orizzontali. Puoi effettuare una richiesta di previsione con solo tre giorni di dati di contesto. In questo caso, il valore non disponibile al momento della previsione le coppie chiave-valore contengono tre valori. La coppia chiave-valore disponibile al momento della previsione devono contenere cinque valori.
Output della previsione online
Vertex AI fornisce l'output della previsione online nel campo value
:
{
'value': [...]
}
La lunghezza della risposta della previsione dipende dall'orizzonte utilizzato nel modello e sull'orizzonte dell'istanza di input. La lunghezza della risposta della previsione è il più piccolo di questi due valori.
Considera gli esempi seguenti:
- Addestra un modello con
context
=15
ehorizon
=50
. L'istanza di input hacontext
=15
ehorizon
=20
. La risposta della previsione ha una lunghezza di20
. - Addestra un modello con
context
=15
ehorizon
=50
. Il tuo input l'istanza hacontext
=15
ehorizon
=100
. La risposta della previsione ha una lunghezza di50
.
Output previsione online per modelli TFT
Per i modelli addestrati con
Trasformatore di fusione temporale (TFT),
Vertex AI fornisce l'interpretabilità TFT tft_feature_importance
oltre alle previsioni nel campo value
:
{
"tft_feature_importance": {
"attribute_weights": [...],
"attribute_columns": [...],
"context_columns": [...],
"context_weights": [...],
"horizon_weights": [...],
"horizon_columns": [...]
},
"value": [...]
}
attribute_columns
: funzionalità di previsione che sono invariato nel tempo.attribute_weights
: i pesi associati a ciascuno degli elementiattribute_columns
.context_columns
: caratteristiche di previsione i cui valori della finestra di contesto vengono utilizzati come input per l'encoder TFT Long Short-Term Memory (LSTM).context_weights
: i pesi di importanza delle caratteristiche associati a ciascuno deicontext_columns
per l'istanza prevista.horizon_columns
: funzionalità di previsione la cui orizzonte di previsione vengono utilizzati come input per il decoder TFT Long-Term Memory (LSTM).horizon_weights
: i pesi dell'importanza delle caratteristiche associati a ciascuno deihorizon_columns
per l'istanza prevista.
Output della previsione online per i modelli ottimizzati per la perdita quantile
Per i modelli ottimizzati per la perdita quantile, Vertex AI fornisce il seguente output di previsione online:
{
"value": [...],
"quantile_values": [...],
"quantile_predictions": [...]
}
-
value
: se l'insieme di quantili include il valore mediana,value
è il valore della previsione nel punto mediano. In caso contrario,value
è il valore di previsione al quantile più basso nell'insieme. Ad esempio, se l'insieme di quantili è[0.1, 0.5, 0.9]
,value
è la previsione per il quantile0.5
. Se le tue insieme di quantili è[0.1, 0.9]
,value
è il per il quantile0.1
. quantile_values
: i valori delle quantili, che vengono impostati durante l'addestramento del modello.-
quantile_predictions
: i valori di previsione associati a quantile_values.
Prendi in considerazione, ad esempio, un modello in cui la colonna target rappresenta il valore delle vendite.
I valori del quantile sono definiti come [0.1, 0.5, 0.9]
. Vertex AI restituisce
seguenti previsioni dei quantili: [4484, 5615, 6853]
. Qui, l'insieme dei quantili
include la mediana, pertanto value
è la previsione per il quantile 0.5
(5615
).
Le previsioni dei quantili possono essere interpretate come segue:
- P(valore vendite < 4484) = 10%
- P(valore vendite < 5615) = 50%
- P(valore delle vendite < 6853) = 90%
Output della previsione online per modelli con inferenza probabilistica
Se il modello utilizza l'inferenza probabilistica, il campo value
contiene il minimizzatore dell'obiettivo di ottimizzazione. Ad esempio, se la tua ottimizzazione
l'obiettivo è minimize-rmse
, il campo value
contiene il valore medio. Se
è minimize-mae
, il campo value
contiene la mediana
valore.
Se il tuo modello utilizza l'inferenza probabilistica con i quantili, Vertex AI fornisce valori dei quantili e previsioni oltre al minimo obiettivo di ottimizzazione. I valori del quantile vengono impostati durante l'addestramento del modello. Quantile sono i valori di previsione associati ai valori dei quantili.
Ricevi spiegazioni online
Per ottenere spiegazioni, utilizza la funzione
explain()
e fornisci una o più istanze di input. Il seguente codice mostra un esempio:
explanations = endpoint.explain(instances=[{...}, {...}])
Il formato delle istanze di input è lo stesso per le previsioni online e le spiegazioni online. Per saperne di più, consulta la sezione Ricevere previsioni online.
Per una panoramica concettuale delle attribuzioni delle caratteristiche, consulta Attribuzioni delle caratteristiche per le previsioni.
Output della spiegazione online
Il seguente codice mostra come puoi visualizzare i risultati della spiegazione:
# 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))
I risultati della spiegazione hanno il seguente formato:
{
"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"
},
...
]
}
Il numero di elementi attributions
dipende dall'orizzonte utilizzato nel modello
e sull'orizzonte dell'istanza di input. Il numero di elementi è il
meno elevato di questi due valori.
Il campo featureAttributions
in un elemento attributions
contiene un valore per ogni colonna del set di dati di input. Vertex AI genera spiegazioni per tutti i tipi di funzionalità: attributo, disponibile per la previsione e non disponibile per la previsione. Per scoprire di più sui campi di un elemento attributions
, consulta Attribuzione.
Elimina l'endpoint
Utilizzare le funzioni
undeploy_all()
e delete()
per eliminare l'endpoint. Il seguente codice mostra un esempio:
endpoint.undeploy_all()
endpoint.delete()
Passaggi successivi
- Scopri di più sui prezzi per le previsioni online.