In questo tutorial registri un endpoint Vertex AI come modello remoto in BigQuery. Poi, utilizza la funzione ML.PREDICT
per fare
predizioni utilizzando il modello remoto.
Puoi utilizzare i modelli remoti quando un modello è troppo grande per essere importato in BigQuery. Sono utili anche quando vuoi avere un singolo punto di inferenza per i casi d'uso online, batch e micro-batch.
Obiettivi
- Importa un modello TensorFlow preaddestrato nel registro dei modelli di Vertex AI.
- Esegui il deployment del modello su un endpoint Vertex AI.
- Crea una connessione a una risorsa cloud.
- Utilizza l'istruzione
CREATE MODEL
per creare un modello remoto in BigQuery. - Utilizza la funzione
ML.PREDICT
per fare previsioni con il modello remoto.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Vertex AI, Cloud Storage, and BigQuery Connection APIs.
- Assicurati di disporre delle autorizzazioni necessarie per eseguire le attività descritte in questo documento.
Ruoli obbligatori
Se crei un nuovo progetto, sei il proprietario del progetto e ti vengono concesse tutte le autorizzazioni IAM necessarie per completare questo tutorial.
Se utilizzi un progetto esistente, procedi nel seguente modo.
Make sure that you have the following role or roles on the project:
- BigQuery Studio Admin (
roles/bigquery.studioAdmin
) - Vertex AI User (
roles/aiplatform.user
) - BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi accesso.
-
Nel campo Nuovi principali, inserisci il tuo identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
Per ulteriori informazioni sulle autorizzazioni IAM in BigQuery, consulta Autorizzazioni BigQuery.
Importa il modello nel registro dei modelli di Vertex AI
In questo tutorial utilizzi un modello TensorFlow preaddestrato disponibile in Cloud Storage all'indirizzo
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
. Il
bucket Cloud Storage si trova nella località multiregionale US
.
Il modello è un modello TensorFlow denominato saved_model.pb
. Si tratta di un
modello di analisi del sentiment personalizzato creato ottimizzando un modello BERT
con recensioni di film di IMDB in testo normale. Il modello utilizza l'input di testo delle recensioni del film e restituisce punteggi di sentiment compresi tra 0 e 1. Quando importi il
modello nel Registry dei modelli, utilizzi un
container TensorFlow predefinito.
Per importare il modello, segui questi passaggi.
Nella console Google Cloud, vai alla pagina Model Registry di Vertex AI.
Fai clic su Importa.
Per il passaggio 1: Nome e regione, svolgi i seguenti passaggi:
Seleziona Importa come nuovo modello.
In Nome, inserisci
bert_sentiment
.In Descrizione, inserisci
BQML tutorial model
.In Regione, seleziona
us-central1
. Devi scegliere una regione con sede negli Stati Uniti perché il bucket Cloud Storage si trova nella localitàUS
multiregionale.Fai clic su Continua.
Per il passaggio 2: Impostazioni modello:
Seleziona Importa gli artefatti del modello in un nuovo container predefinito.
Nella sezione Impostazioni del contenitore precompilato, segui questi passaggi:
In Framework modello, scegli TensorFlow.
In Versione framework modello, scegli 2.15.
In Tipo di acceleratore, scegli GPU.
In Posizione artefatto modello, inserisci
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
.Lascia invariati i valori predefiniti per tutte le opzioni rimanenti e fai clic su Importa.
Al termine dell'importazione, il modello viene visualizzato nella pagina Registro dei modelli.
Esegui il deployment del modello su un endpoint Vertex AI
Per eseguire il deployment del modello in un endpoint, segui questi passaggi.
Nella console Google Cloud, vai alla pagina Model Registry di Vertex AI.
Nella colonna Nome, fai clic su
bert_sentiment
.Fai clic sulla scheda Deployment e test.
Fai clic su Esegui il deployment nell'endpoint.
Per il primo passaggio, Definisci il tuo endpoint, svolgi i seguenti passaggi:
Fai clic su Crea nuovo endpoint.
In Nome endpoint, inserisci
bert sentiment endpoint
.Lascia invariati i restanti valori predefiniti e fai clic su Continua.
Per il secondo passaggio, Impostazioni modello, segui questi passaggi:
Nella sezione Impostazioni di Compute, in Numero minimo di nodi compute, inserisci
1
. Si tratta del numero di nodi che devono essere disponibili per il modello in ogni momento.Nella sezione Opzioni di scalabilità avanzate, per Tipo di macchina, scegli Standard (n1-standard-2). Poiché hai scelto GPU come tipo di acceleratore quando hai importato il modello, dopo aver scelto il tipo di macchina, il tipo di acceleratore e il numero di acceleratori vengono impostati automaticamente.
Lascia invariati i restanti valori predefiniti e fai clic su Esegui il deployment.
Quando il modello viene disegnato nell'endpoint, lo stato diventa
Active
.Copia l'ID endpoint numerico nella colonna ID e il valore nella colonna Regione. Ne avrai bisogno in un secondo momento.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su
Visualizza azioni > Crea set di dati.Nella pagina Crea set di dati:
In ID set di dati, inserisci
bqml_tutorial
.Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).
I set di dati pubblici sono archiviati nella
US
multiregione. Per semplicità, archivia il tuo set di dati nella stessa posizione.- Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
bq
Per creare un nuovo set di dati, utilizza il comando
bq mk
con il flag --location
. Per un elenco completo dei possibili parametri, consulta la documentazione di riferimento del comando bq mk --dataset
.
Crea un set di dati denominato
bqml_tutorial
con la posizione dei dati impostata suUS
e una descrizione diBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Anziché utilizzare il flag
--dataset
, il comando utilizza la scorciatoia-d
. Se ometti-d
e--dataset
, il comando crea per impostazione predefinita un set di dati.Verifica che il set di dati sia stato creato:
bq ls
API
Chiama il metodo datasets.insert
con una risorsa set di dati definita.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Creare una connessione a una risorsa cloud BigQuery
Per connetterti a un endpoint Vertex AI, devi disporre di una connessione alla risorsa Cloud.
Console
Vai alla pagina BigQuery.
Per creare una connessione, fai clic su
Aggiungi e poi su Connessioni a origini dati esterne.Nell'elenco Tipo di connessione, seleziona Modelli remoti di Vertex AI, funzioni remote e BigLake (risorsa Cloud).
Nel campo ID connessione, inserisci
bqml_tutorial
.Verifica che sia selezionata l'opzione Più regioni - Stati Uniti.
Fai clic su Crea connessione.
Nella parte inferiore della finestra, fai clic su Vai alla connessione. In alternativa, nel riquadro Explorer, espandi Connessioni esterne e poi fai clic su
us.bqml_tutorial
.Nel riquadro Informazioni sulla connessione, copia l'ID account di servizio. Ti occorre questo ID quando configuri le autorizzazioni per la connessione. Quando crei una risorsa di connessione, BigQuery crea un account di servizio di sistema univoco e lo associa alla connessione.
bq
Crea una connessione:
bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial
Sostituisci
PROJECT_ID
con il tuo ID progetto Google Cloud. Il parametro--project_id
sostituisce il progetto predefinito.Quando crei una risorsa di connessione, BigQuery crea un account di servizio di sistema unico e lo associa alla connessione.
Risoluzione dei problemi: se ricevi il seguente errore di connessione, aggiorna Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupera e copia l'ID account di servizio per utilizzarlo in un passaggio successivo:
bq show --connection PROJECT_ID.us.bqml_tutorial
L'output è simile al seguente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Configurare l'accesso alla connessione
Concedi il ruolo Utente Vertex AI all'account di servizio della connessione della risorsa Cloud. Devi concedere questo ruolo nello stesso progetto in cui hai creato l'endpoint del modello remoto.
Per concedere il ruolo, segui questi passaggi:
Vai alla pagina IAM e amministrazione.
Fai clic su
Concedi accesso.Nel campo Nuove entità, inserisci l'ID account di servizio della connessione della risorsa cloud che hai copiato in precedenza.
Nel campo Seleziona un ruolo, scegli Vertex AI e poi seleziona Utente Vertex AI.
Fai clic su Salva.
Creare un modello remoto BigQuery ML
Puoi creare un modello remoto BigQuery ML utilizzando l'istruzione CREATE MODEL
con la clausola REMOTE WITH CONNECTION
. Per ulteriori informazioni sull'istruzione CREATE MODEL
, consulta L'istruzione CREATE MODEL per i modelli remoti rispetto ai modelli personalizzati.
Crea il modello nella località multiregione US
. In un set di dati BigQuery multiregione (US
, EU
), puoi creare solo un modello remoto che si connette a un endpoint di cui è stato eseguito il deployment in una regione all'interno della stessa località multiregione (US
, EU
).
Quando crei il modello remoto, devi avere l'ID endpoint generato quando hai eseguito il deployment del modello in Vertex AI. Inoltre, i nomi e i tipi di campi di input e di output devono essere esattamente gli stessi di quelli del modello Vertex AI. In questo esempio, l'input è un testo STRING
e l'output è un ARRAY
di tipo FLOAT64
.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Per Crea nuovo, fai clic su Query SQL.
Nell'editor di query, inserisci questa istruzione
CREATE MODEL
e poi fai clic su Esegui:CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY
) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID') Sostituisci quanto segue:
- PROJECT_ID: il nome del progetto.
- ENDPOINT_ID: l'ID endpoint che hai copiato in precedenza.
Al termine dell'operazione, viene visualizzato un messaggio simile a
Successfully created model named bert_sentiment
.Il nuovo modello viene visualizzato nel riquadro Risorse. I modelli sono indicati dall'icona del modello:
.
Se selezioni il nuovo modello nel riquadro Risorse, le informazioni sul modello vengono visualizzate sotto l'editor di query.
bq
Crea il modello remoto inserendo la seguente istruzione
CREATE MODEL
:bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY
) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')" Sostituisci quanto segue:
- PROJECT_ID: il nome del progetto.
- ENDPOINT_ID: l'ID endpoint che hai copiato in precedenza.
Dopo aver creato il modello, verifica che sia visualizzato nel set di dati:
bq ls -m bqml_tutorial
L'output è simile al seguente:
Id Model Type Labels Creation Time ---------------- ------------ -------- ----------------- bert_sentiment 28 Jan 17:39:43
Ottenere previsioni utilizzando ML.PREDICT
Utilizza la funzione ML.PREDICT
per ottenere le previsioni sul sentiment dal
modello remoto. L'input è una colonna di testo (review
) contenente le recensioni dei film
della tabella bigquery-public-data.imdb.reviews
.
In questo esempio, vengono selezionati e inviati 10.000 record per la previsione. Per il modello remoto è predefinita una dimensione batch di 128 istanze per le richieste.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nella sezione Crea nuova, fai clic su Query SQL.
Nell'editor di query, inserisci questa query che utilizza la funzione
ML.PREDICT
e poi fai clic su Esegui.SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )
I risultati della query dovrebbero essere simili al seguente:
bq
Inserisci questo comando per eseguire la query che utilizza ML.PREDICT
.
bq query --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )'
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Console
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimina singole risorse
In alternativa, per rimuovere le singole risorse utilizzate in questo tutorial:
Passaggi successivi
- Per una panoramica di BigQuery ML, consulta Introduzione all'IA e all'apprendimento automatico in BigQuery ML.
- Per ulteriori informazioni sull'utilizzo dell'istruzione
CREATE MODEL
per i modelli remoti, consulta l'istruzione CREATE MODEL per i modelli remoti rispetto ai modelli personalizzati. - Per ulteriori informazioni sull'utilizzo di un notebook BigQuery, consulta Introduzione ai notebook.
- Per ulteriori informazioni sulle regioni e sulle regioni multiple di BigQuery, consulta la pagina Località supportate.
- Per scoprire di più sull'importazione di modelli in Vertex AI Model Registry, consulta Importare modelli in Vertex AI.
- Per scoprire di più sul controllo delle versioni dei modelli in Vertex AI Model Registry, consulta Controllo delle versioni dei modelli con Model Registry.
- Per informazioni sull'utilizzo dei Controlli di servizio VPC di Vertex AI, consulta Controlli di servizio VPC con Vertex AI.