Una richiesta di inferenza batch è una richiesta asincrona (a differenza dell'inferenza online, che è una richiesta sincrona). Richiedi inferenze batch direttamente dalla risorsa del modello senza eseguire il deployment del modello in un endpoint. Per i dati tabellari, utilizza le inferenze batch quando non hai bisogno di una risposta immediata e vuoi elaborare i dati accumulati utilizzando una singola richiesta.
Per effettuare una richiesta di inferenza batch, specifica un'origine di input e un formato di output in cui Vertex AI memorizza i risultati dell'inferenza.
Prima di iniziare
Prima di effettuare una richiesta di inferenza batch, devi prima addestrare un modello.
Dati di input
I dati di input per le richieste di inferenza batch sono i dati che il modello utilizza per fare inferenze. Per i modelli di classificazione o regressione, puoi fornire i dati di input in uno dei seguenti formati:
- Tabelle BigQuery
- Oggetti CSV in Cloud Storage
Ti consigliamo di utilizzare lo stesso formato per i dati di input utilizzato per l'addestramento del modello. Ad esempio, se hai addestrato il modello utilizzando i dati in BigQuery, è consigliabile utilizzare una tabella BigQuery come input per l'inferenza batch. Poiché Vertex AI considera tutti i campi di input CSV come stringhe, la combinazione di formati di dati di addestramento e di input può causare errori.
L'origine dati deve contenere dati tabellari che includano tutte le colonne, in qualsiasi ordine, utilizzate per addestrare il modello. Puoi includere colonne che non erano presenti nei dati di addestramento o che erano presenti nei dati di addestramento, ma escluse dall'utilizzo per l'addestramento. Queste colonne aggiuntive sono incluse nell'output, ma non influenzano i risultati dell'inferenza.
Requisiti dei dati di input
Tabella BigQuery
Se scegli una tabella BigQuery come input, devi assicurarti che:
- Le tabelle BigQuery che fungono da origine dati non devono essere più grandi di 100 GB.
- Se la tabella si trova in un progetto diverso, devi concedere il ruolo
BigQuery Data Editor
all'account di servizio Vertex AI in quel progetto.
File CSV
Se scegli un oggetto CSV in Cloud Storage come input, devi assicurarti che:
- L'origine dati deve iniziare con una riga di intestazione contenente i nomi delle colonne.
- Ogni oggetto dell'origine dati non deve essere più grande di 10 GB. Puoi includere più file, fino a un massimo di 100 GB.
- Se il bucket Cloud Storage si trova in un progetto diverso, devi concedere il ruolo
Storage Object Creator
all'account di servizio Vertex AI in quel progetto. - Devi racchiudere tutte le stringhe tra virgolette doppie (").
Formato di output
Il formato di output della richiesta di inferenza batch non deve essere lo stesso del formato di input. Ad esempio, se hai utilizzato la tabella BigQuery come input, puoi restituire i risultati in un oggetto CSV in Cloud Storage.
Effettua una richiesta di inferenza batch al modello
Per effettuare richieste di inferenza batch, puoi utilizzare la console Google Cloud o l'API Vertex AI. L'origine dati di input può essere costituita da oggetti CSV archiviati in un bucket Cloud Storage o da tabelle BigQuery. A seconda della quantità di dati che invii come input, un'attività di inferenza batch può richiedere un po' di tempo per essere completata.
Console Google Cloud
Utilizza la console Google Cloud per richiedere un'inferenza batch.
- Nella console Google Cloud , nella sezione Vertex AI, vai alla pagina Inferenza batch.
- Fai clic su Crea per aprire la finestra Nuova inferenza batch.
- Per Definisci l'inferenza batch, completa i seguenti passaggi:
- Inserisci un nome per l'inferenza batch.
- In Nome modello, seleziona il nome del modello da utilizzare per questa inferenza batch.
- In Versione, seleziona la versione del modello da utilizzare per questa inferenza batch.
- Per Seleziona origine, seleziona se i dati di input dell'origine sono un file CSV
in Cloud Storage o una tabella in BigQuery.
- Per i file CSV, specifica la posizione Cloud Storage in cui si trova il file di input CSV.
- Per le tabelle BigQuery, specifica l'ID progetto in cui si trova la tabella, l'ID set di dati BigQuery e l'ID tabella o visualizzazione BigQuery.
- Per Output, seleziona CSV o BigQuery.
- Per CSV, specifica il bucket Cloud Storage in cui Vertex AI memorizza l'output.
- Per BigQuery, puoi specificare un ID progetto o un set di dati
esistente:
- Per specificare l'ID progetto, inseriscilo nel campo ID progetto Google Cloud. Vertex AI crea un nuovo set di dati di output.
- Per specificare un set di dati esistente, inserisci il relativo percorso BigQuery
nel campo ID progetto Google Cloud, ad esempio
bq://projectid.datasetid
.
- (Facoltativo) L'analisi Model Monitoring
per le inferenze batch è disponibile in Anteprima. Consulta i
Prerequisiti
per aggiungere la configurazione del rilevamento della distorsione al job di inferenza batch.
- Fai clic per attivare l'opzione Abilita il monitoraggio dei modelli per questa inferenza batch.
- Seleziona un'origine dati di addestramento. Inserisci il percorso o la posizione dei dati per l'origine dati di addestramento selezionata.
- (Facoltativo) Nella sezione Soglie di avviso, specifica le soglie in corrispondenza delle quali attivare gli avvisi.
- Per Email di notifica, inserisci uno o più indirizzi email separati da virgole per ricevere avvisi quando un modello supera una soglia di avviso.
- (Facoltativo) Per Canali di notifica, aggiungi canali Cloud Monitoring per ricevere avvisi quando un modello supera una soglia di avviso. Puoi selezionare i canali Cloud Monitoring esistenti o crearne uno nuovo facendo clic su Gestisci canali di notifica. La console supporta i canali di notifica PagerDuty, Slack e Pub/Sub.
- Fai clic su Crea.
API: BigQuery
REST
Utilizza il metodo batchPredictionJobs.create per richiedere una previsione batch.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la regione in cui viene archiviato il modello ed eseguito il job di inferenza batch. Ad esempio,
us-central1
. - PROJECT_ID: il tuo ID progetto
- BATCH_JOB_NAME: Nome visualizzato per il job batch
- MODEL_ID: L'ID del modello da utilizzare per fare inferenze
-
INPUT_URI: riferimento all'origine dati BigQuery. Nel modulo:
bq://bqprojectId.bqDatasetId.bqTableId
-
OUTPUT_URI: riferimento alla destinazione BigQuery (dove vengono scritte le
inferenze). Specifica l'ID progetto e, facoltativamente,
un ID set di dati esistente. Se specifichi solo l'ID progetto,
Vertex AI crea un nuovo set di dati di output. Utilizza il
seguente modulo:
bq://bqprojectId.bqDatasetId
- MACHINE_TYPE: Le risorse macchina da utilizzare per questo job di inferenza batch. Scopri di più.
- STARTING_REPLICA_COUNT: Il numero iniziale di nodi per questo job di inferenza batch. Il conteggio di nodi può essere aumentato o diminuito in base al carico fino al numero massimo di nodi, ma non scenderà mai al di sotto di questo numero.
- MAX_REPLICA_COUNT: il numero massimo di nodi per questo job di inferenza batch. Il numero di nodi può essere aumentato o diminuito in base al carico, ma non supererà mai il valore massimo. Facoltativo, il valore predefinito è 10.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
Corpo JSON della richiesta:
{ "displayName": "BATCH_JOB_NAME", "model": "MODEL_ID", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource": { "inputUri": "INPUT_URI" } }, "outputConfig": { "predictionsFormat": "bigquery", "bigqueryDestination": { "outputUri": "OUTPUT_URI" } }, "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorCount": "0" }, "startingReplicaCount": STARTING_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
ed esegui questo comando:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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 }, "generateExplanation": false, "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
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Vertex AI Java.
Per eseguire l'autenticazione in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Nell'esempio seguente, sostituisci INSTANCES_FORMAT e PREDICTIONS_FORMAT con `bigquery`. Per scoprire come sostituire gli altri segnaposto, consulta la scheda `REST & CMD LINE` di questa sezione.Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Nel seguente esempio, imposta i parametri `instances_format` e `predictions_format` su `"bigquery"`. Per scoprire come impostare gli altri parametri, consulta la scheda `REST & CMD LINE` di questa sezione.API: Cloud Storage
REST
Utilizzi il metodo batchPredictionJobs.create per richiedere un'inferenza batch.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la regione in cui viene archiviato il modello ed eseguito il job di inferenza batch. Ad esempio,
us-central1
. - PROJECT_ID:
- BATCH_JOB_NAME: Nome visualizzato per il job batch
- MODEL_ID: L'ID del modello da utilizzare per fare inferenze
-
URI: percorsi (URI) dei bucket Cloud Storage contenenti i dati di addestramento.
Può essercene più di uno. Ogni URI ha il seguente formato:
gs://bucketName/pathToFileName
-
OUTPUT_URI_PREFIX: percorso di una destinazione Cloud Storage in cui vengono scritte le inferenze. Vertex AI scrive le inferenze batch in una sottodirectory con timestamp di questo percorso. Imposta questo valore su una stringa con il seguente formato:
gs://bucketName/pathToOutputDirectory
- MACHINE_TYPE: Le risorse macchina da utilizzare per questo job di inferenza batch. Scopri di più.
- STARTING_REPLICA_COUNT: Il numero iniziale di nodi per questo job di inferenza batch. Il conteggio di nodi può essere aumentato o diminuito in base al carico fino al numero massimo di nodi, ma non scenderà mai al di sotto di questo numero.
- MAX_REPLICA_COUNT: il numero massimo di nodi per questo job di inferenza batch. Il numero di nodi può essere aumentato o diminuito in base al carico, ma non supererà mai il valore massimo. Facoltativo, il valore predefinito è 10.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
Corpo JSON della richiesta:
{ "displayName": "BATCH_JOB_NAME", "model": "MODEL_ID", "inputConfig": { "instancesFormat": "csv", "gcsSource": { "uris": [ URI1,... ] }, }, "outputConfig": { "predictionsFormat": "csv", "gcsDestination": { "outputUriPrefix": "OUTPUT_URI_PREFIX" } }, "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorCount": "0" }, "startingReplicaCount": STARTING_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
ed esegui questo comando:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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 }, "manualBatchTuningParameters": { "batchSize": 4 } "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", }
Recuperare i risultati dell'inferenza batch
Vertex AI invia l'output delle inferenze batch alla destinazione specificata, che può essere BigQuery o Cloud Storage.
BigQuery
Set di dati di output
Se utilizzi BigQuery, l'output dell'inferenza batch viene archiviato in un set di dati di output. Se hai fornito un set di dati a Vertex AI, il nome del set di dati (BQ_DATASET_NAME) è il nome che hai fornito in precedenza. Se non hai fornito un set di dati di output, Vertex AI ne ha creato uno per te. Puoi trovare il suo nome (BQ_DATASET_NAME) seguendo questi passaggi:
- Nella console Google Cloud , vai alla pagina Inferenza batch di Vertex AI.
- Seleziona l'inferenza che hai creato.
-
Il set di dati di output è indicato in Posizione di esportazione. Il nome del set di dati è
formattato nel seguente modo:
prediction_MODEL_NAME_TIMESTAMP
Il set di dati di output contiene una o più delle seguenti tre tabelle di output:
-
Tabella delle previsioni
Questa tabella contiene una riga per ogni riga dei dati di input in cui è stata richiesta un'inferenza (ovvero dove TARGET_COLUMN_NAME = null).
-
Tabella degli errori
Questa tabella contiene una riga per ogni errore non critico rilevato durante l'inferenza batch. Ogni errore non critico corrisponde a una riga nei dati di input per cui Vertex AI non è riuscita a restituire una previsione.
Tabella delle previsioni
Il nome della tabella (BQ_PREDICTIONS_TABLE_NAME) è formato
aggiungendo `predictions_` con il timestamp dell'inizio del job di inferenza batch: predictions_TIMESTAMP
Per recuperare le inferenze, vai alla pagina BigQuery.
Il formato della query dipende dal tipo di modello:Classificazione:
SELECT predicted_TARGET_COLUMN_NAME.classes AS classes, predicted_TARGET_COLUMN_NAME.scores AS scores FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
classes
è l'elenco delle potenziali classi e scores
sono i
punteggi di confidenza corrispondenti.
Regressione:
SELECT predicted_TARGET_COLUMN_NAME.value FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
Se il modello utilizza l'inferenza probabilistica,
predicted_TARGET_COLUMN_NAME.value
contiene il minimizzatore dell'obiettivo di ottimizzazione. Ad esempio, se l'obiettivo di ottimizzazione è minimize-rmse
,
predicted_TARGET_COLUMN_NAME.value
contiene il valore medio. Se è
minimize-mae
, predicted_TARGET_COLUMN_NAME.value
contiene il valore mediano.
Se il modello utilizza l'inferenza probabilistica con quantili, Vertex AI fornisce valori e inferenze dei quantili, oltre al minimizzatore dell'obiettivo di ottimizzazione. I valori dei quantili vengono impostati durante l'addestramento del modello. Le inferenze quantile sono i valori di inferenza associati ai valori quantile.
Puoi trovare l'importanza delle caratteristiche anche nella tabella delle inferenze. Per accedere all'importanza di una funzionalità BQ_FEATURE_NAME, esegui la seguente query:
SELECT predicted_TARGET_COLUMN_NAME.feature_importance.BQ_FEATURE_NAME FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
Tabella degli errori
Il nome della tabella (BQ_ERRORS_TABLE_NAME) è formato aggiungendoerrors_
al timestamp dell'inizio del job di inferenza batch: errors_TIMESTAMP
Per recuperare la tabella di convalida degli errori:
-
Nella console, vai alla pagina BigQuery.
-
Esegui questa query:
SELECT * FROM BQ_DATASET_NAME.BQ_ERRORS_TABLE_NAME
- errors_TARGET_COLUMN_NAME.code
- errors_TARGET_COLUMN_NAME.message
Cloud Storage
Se hai specificato Cloud Storage come destinazione di output, i risultati della richiesta di inferenza batch vengono restituiti come oggetti CSV in una nuova cartella nel bucket specificato. Il nome della cartella è il nome del modello, preceduto da "prediction-" e seguito dal timestamp dell'inizio del job di inferenza batch. Puoi trovare il nome della cartella Cloud Storage nella scheda Previsioni batch del modello.
La cartella Cloud Storage contiene due tipi di oggetti:-
Oggetti di previsione
Gli oggetti di inferenza sono denominati `predictions_1.csv`, `predictions_2.csv` e così via. Contengono una riga di intestazione con i nomi delle colonne e una riga per ogni inferenza restituita. Negli oggetti di inferenza, Vertex AI restituisce i dati di inferenza e crea una o più nuove colonne per i risultati dell'inferenza in base al tipo di modello:
-
Classificazione: per ogni valore potenziale della colonna di destinazione, ai risultati viene aggiunta una colonna denominata
TARGET_COLUMN_NAME_VALUE_score
. Questa colonna contiene il punteggio o la stima di confidenza per quel valore. -
Regressione: il valore previsto per quella riga viene restituito in una colonna
denominata
predicted_TARGET_COLUMN_NAME
. L'intervallo di previsione non viene restituito per l'output CSV.
-
Classificazione: per ogni valore potenziale della colonna di destinazione, ai risultati viene aggiunta una colonna denominata
-
Oggetti di errore
Gli oggetti di errore sono denominati `errors_1.csv`, `errors_2.csv` e così via. Contengono una riga di intestazione e una riga per ogni riga dei dati di input per cui Vertex AI non è riuscita a restituire un'inferenza (ad esempio, se una caratteristica non annullabile era null).
Nota: se i risultati sono di grandi dimensioni, vengono suddivisi in più oggetti.
L'importanza delle funzionalità non è disponibile per i risultati dell'inferenza batch restituiti in Cloud Storage.
Interpretare i risultati della previsione
Classificazione
I modelli di classificazione restituiscono un punteggio di affidabilità.
Il punteggio di confidenza indica la forza con cui il modello associa ogni classe o etichetta a un elemento di test. Più alto è il numero, maggiore è la certezza del modello che l'etichetta deve essere applicata a quell'elemento. Decidi tu quanto deve essere alto il punteggio di affidabilità per accettare i risultati del modello.
Regressione
I modelli di regressione restituiscono un valore di inferenza.
Se il modello utilizza l'inferenza probabilistica, il campo value
contiene il
minimizzatore dell'obiettivo di ottimizzazione. Ad esempio, se il tuo 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 quantili, Vertex AI fornisce valori e inferenze dei quantili, oltre al minimizzatore dell'obiettivo di ottimizzazione. I valori dei quantili vengono impostati durante l'addestramento del modello. Le inferenze quantile sono i valori di inferenza associati ai valori quantile.
Per i risultati dell'inferenza batch archiviati in BigQuery, TabNet fornisce un'interpretabilità intrinseca del modello, offrendo agli utenti informazioni sulle funzionalità utilizzate per prendere la decisione. L'algoritmo utilizza l'attenzione, che impara a migliorare selettivamente l'influenza di alcune funzionalità, riducendo al contempo l'influenza di altre tramite una media ponderata. Per una determinata decisione, TabNet decide passo dopo passo l'importanza da attribuire a ogni funzionalità. Combina poi ciascuno dei passaggi per creare una previsione finale. L'attenzione è moltiplicativa, dove valori più grandi indicano che la funzionalità ha svolto un ruolo più importante nella previsione e un valore di zero significa che la funzionalità non ha svolto alcun ruolo in questa decisione. Poiché TabNet utilizza più fasi decisionali, l'attenzione posta sulle funzionalità in tutte le fasi viene combinata linearmente dopo un ridimensionamento appropriato. Questa combinazione lineare in tutti i passaggi decisionali di TabNet è l'importanza totale della funzionalità che TabNet ti fornisce.
Passaggi successivi
- Scopri come esportare il modello.
- Scopri di più sui prezzi per le inferenze batch.