Gemini Enterprise Agent Platform offre due opzioni per proiettare i valori futuri utilizzando il modello di previsione addestrato: inferenze online e inferenze batch.
Un'inferenza online è una richiesta sincrona. Utilizza le inferenze online quando effettui richieste in risposta all'input dell'applicazione o in altre situazioni in cui richiedi un'inferenza tempestiva.
Una richiesta di inferenza batch è una richiesta asincrona. Utilizza le inferenze batch quando non hai bisogno di una risposta immediata e vuoi elaborare i dati accumulati attraverso un'unica richiesta.
Questa pagina mostra come proiettare i valori futuri utilizzando le inferenze online. Per scoprire come proiettare i valori utilizzando le inferenze batch, consulta Ottieni inferenze batch per un modello di previsione.
Devi eseguire il deployment del modello in un endpoint prima di poterlo utilizzare per le inferenze. Un endpoint è un insieme di risorse fisiche.
Puoi richiedere una spiegazione anziché un'inferenza. I valori di importanza delle caratteristiche locali della spiegazione indicano in che misura ciascuna caratteristica ha contribuito al risultato dell'inferenza. Per una panoramica concettuale, consulta Attribuzioni delle caratteristiche per la previsione.
Per informazioni sui prezzi delle inferenze online, consulta Prezzi per i flussi di lavoro tabulari.
Prima di iniziare
Prima di poter effettuare una richiesta di inferenza online, devi addestrare un modello.
Crea o seleziona un endpoint
Utilizza 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: il tuo ID progetto.
- REGION: la regione in cui utilizzi Gemini Enterprise Agent Platform.
- ENDPOINT_NAME: il nome visualizzato dell'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
Utilizza la funzione deploy() per 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 macchina. - MIN_REPLICA_COUNT: il numero minimo di nodi per questo deployment.
Puoi aumentare o diminuire il conteggio dei nodi in base al carico di inferenza, fino al numero massimo di nodi e mai al di sotto di questo numero. Questo valore deve essere maggiore o uguale a 1. Se non imposti la variabile
min_replica_count, il valore predefinito è1. - MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment.
Puoi aumentare o diminuire il numero di nodi in base al carico di inferenza, fino a questo numero di nodi e mai al di sotto del numero minimo di nodi. Se non imposti la variabile
max_replica_count, il numero massimo di nodi viene impostato sul valore dimin_replica_count. - DEPLOYED_MODEL_NAME: un nome per
DeployedModel. Puoi utilizzare il nome visualizzato diModelanche perDeployedModel.
Il deployment del modello potrebbe richiedere circa dieci minuti.
Ottieni inferenze online
Per ottenere le inferenze, 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 dell'ora e una coppia chiave-valore non disponibile al momento della previsione che contiene i valori storici della colonna di inferenza target. Gemini Enterprise Agent Platform 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 disponibili per la previsione devono avere tutte lo stesso numero di punti dati.
- Le coppie chiave-valore unavailable at forecast devono avere tutte lo stesso numero di punti dati.
- Le coppie chiave-valore disponibili al momento della previsione devono avere almeno lo stesso numero di punti dati delle coppie chiave-valore non disponibili al momento della previsione.
Per scoprire di più sui tipi di colonne utilizzati nella previsione, consulta Tipo di funzionalità e disponibilità al momento della previsione.
Il codice seguente mostra un insieme di due istanze di input.
La colonna Category contiene i dati degli attributi. La colonna Timestamp contiene i dati disponibili al momento della previsione. Tre punti sono dati di contesto e due punti sono dati di 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, Gemini Enterprise Agent Platform risponde con due inferenze per Sales,
corrispondenti ai due timestamp di orizzonte ("2023-08-06" e "2023-08-07").
Per prestazioni ottimali, il numero di punti dati di contesto e il numero di punti dati di orizzonte in ogni istanza di input devono corrispondere alle lunghezze di contesto e orizzonte con cui è stato addestrato il modello. Se non c'è corrispondenza, Gemini Enterprise Agent Platform aggiunge o tronca l'istanza in modo che corrisponda alle dimensioni del modello.
Se il numero di punti dati di contesto nell'istanza di input è inferiore o superiore al numero di punti dati di contesto utilizzati per l'addestramento del modello, assicurati che questo numero di punti sia coerente in tutte le coppie chiave-valore disponibili al momento della previsione e in tutte le coppie chiave-valore non disponibili al momento della previsione.
Ad esempio, considera un modello addestrato con quattro giorni di dati di contesto e due giorni di dati di orizzonte. Puoi effettuare una richiesta di inferenza con solo tre giorni di dati di contesto. In questo caso, le coppie chiave-valore non disponibili per la previsione contengono tre valori. Le coppie chiave-valore Disponibile al momento della previsione devono contenere cinque valori.
Output dell'inferenza online
Gemini Enterprise Agent Platform fornisce l'output di inferenza online nel campo value:
{
'value': [...]
}
La lunghezza della risposta di inferenza dipende dall'orizzonte utilizzato nell'addestramento del modello e dall'orizzonte dell'istanza di input. La lunghezza della risposta di inferenza è il valore più piccolo tra questi due.
Considera i seguenti esempi:
- Addestri un modello con
context=15ehorizon=50. L'istanza di input hacontext=15ehorizon=20. La risposta dell'inferenza ha una lunghezza di20. - Addestri un modello con
context=15ehorizon=50. L'istanza di input hacontext=15ehorizon=100. La risposta dell'inferenza ha una lunghezza di50.
Output delle inferenze online per i modelli TFT
Per i modelli addestrati con Temporal Fusion Transformer (TFT), Gemini Enterprise Agent Platform fornisce l'interpretabilità TFT tft_feature_importance oltre alle inferenze nel campo value:
{
"tft_feature_importance": {
"attribute_weights": [...],
"attribute_columns": [...],
"context_columns": [...],
"context_weights": [...],
"horizon_weights": [...],
"horizon_columns": [...]
},
"value": [...]
}
attribute_columns: caratteristiche di previsione invarianti nel tempo.attribute_weights: i pesi associati a ciascuna delleattribute_columns.context_columns: caratteristiche di previsione i cui valori della finestra di contesto fungono da input per l'encoder LSTM (memoria lunga a breve termine) TFT.context_weights: i pesi di importanza delle caratteristiche associati a ciascuna dellecontext_columnsper l'istanza prevista.horizon_columns: caratteristiche di previsione i cui valori di orizzonte di previsione fungono da input per il decoder LSTM (memoria lunga a breve termine) TFT.horizon_weights: i pesi dell'importanza delle caratteristiche associati a ciascuna dellehorizon_columnsper l'istanza prevista.
Output dell'inferenza online per i modelli ottimizzati per la perdita quantile
Per i modelli ottimizzati per la perdita quantile, Gemini Enterprise Agent Platform fornisce il seguente output di inferenza online:
{
"value": [...],
"quantile_values": [...],
"quantile_predictions": [...]
}
-
value: se l'insieme di quantili include la mediana,valueè il valore di inferenza in corrispondenza della mediana. In caso contrario,valueè il valore di inferenza al quantile più basso dell'insieme. Ad esempio, se l'insieme di quantili è[0.1, 0.5, 0.9],valueè l'inferenza per il quantile0.5. Se il tuo insieme di quantili è[0.1, 0.9],valueè l'inferenza per il quantile0.1. quantile_values: i valori dei quantili, impostati durante l'addestramento del modello.-
quantile_predictions: i valori di inferenza associati a quantile_values.
Considera, ad esempio, un modello in cui la colonna target è il valore delle vendite.
I valori dei quantili sono definiti come [0.1, 0.5, 0.9]. Gemini Enterprise Agent Platform restituisce le seguenti inferenze dei quantili: [4484, 5615, 6853]. In questo caso, l'insieme di quantili include la mediana, quindi value è l'inferenza per il quantile 0.5 (5615).
Puoi interpretare le inferenze dei quantili come segue:
P(sales value < 4484)= 10%P(sales value < 5615)= 50%P(sales value < 6853)= 90%
Output dell'inferenza online per i modelli con inferenza probabilistica
Se il modello utilizza l'inferenza probabilistica, il campo value contiene il minimizzatore dell'obiettivo di ottimizzazione. Ad esempio, se l'obiettivo di ottimizzazione è minimize-rmse, il campo value contiene il valore medio. Se è minimize-mae, il campo value contiene il valore mediano.
Se il modello utilizza l'inferenza probabilistica con i quantili, Gemini Enterprise Agent Platform fornisce i valori e le inferenze dei quantili oltre al minimizzatore dell'obiettivo di ottimizzazione. I valori dei quantili vengono impostati durante l'addestramento del modello. Le inferenze dei quantili sono i valori di inferenza 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 inferenze online e le spiegazioni online. Per saperne di più, consulta Ottieni inferenze online.
Per una panoramica concettuale delle attribuzioni delle caratteristiche, consulta Attribuzioni delle caratteristiche per la previsione.
Output della spiegazione online
Il seguente codice mostra come generare i risultati delle spiegazioni:
# 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 nell'addestramento del modello e dall'orizzonte dell'istanza di input. Il numero di elementi è il più piccolo di questi due valori.
Il campo featureAttributions in un elemento attributions contiene un valore per ciascuna delle colonne del set di dati di input. Gemini Enterprise Agent Platform genera spiegazioni per tutti i tipi di caratteristiche: 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
Utilizza 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 inferenze online.