Effettuare previsioni con modelli remoti su Vertex AI
Puoi registrare un endpoint Vertex AI come modello remoto e chiamarlo direttamente da BigQuery con ML.PREDICT
.
Ciò può essere utile se un modello è troppo grande per essere importato in BigQuery o se vuoi utilizzare un singolo punto di inferenza per i casi d'uso online, batch e micro-batch.
Questo tutorial utilizza un modello di analisi del sentiment personalizzato ottimizzando un modello BERT con recensioni di film di IMDB in testo normale. Il modello risultante utilizza l'input di testo (recensioni di film) e restituisce punteggi di sentiment compresi tra 0 e 1. Il modello è registrato in Vertex AI Model Registry e pubblicato su un endpoint Vertex AI. Da qui, il modello viene aggiunto a BigQuery come modello remoto. Puoi utilizzare il modello remoto in BigQuery per ottenere previsioni sul sentiment per una colonna di testo (recensioni di film dalla tabella con 100.000 righe bigquery-public-data.imdb.reviews
.
Consulta il tutorial sul modello remoto BQML per un tutorial di GitHub sulla versione Python.
Panoramica del flusso di lavoro
- Configurazione del tutorial
- Crea modello ML
- Esegui il deployment del modello su Vertex AI
- Creare un modello BigQuery ML remoto
- Esegui la pulizia
Configurazione del tutorial
Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud: Cloud Storage, Vertex AI e BigQuery. Al termine del tutorial, rimuoverai i componenti fatturabili.
- Fai clic qui per abilitare le API per le connessioni delle risorse cloud Vertex AI, Cloud Storage e BigQuery.
- Cloud Storage: per creare un bucket nella regione multipla predefinita
US
, segui queste istruzioni.
creazione del modello ML
Crea un modello utilizzando il tutorial sui modelli remoti BQML, che include un modello di previsione di analisi del sentiment creato ottimizzando un modello BERT aggiungendo un livello di classificazione.
Abbiamo già addestrato un modello di esempio e lo abbiamo caricato su
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
per consentirti di utilizzarlo direttamente.
Esegui il deployment del modello su Vertex AI
Segui le istruzioni per registrare il modello in Vertex AI Model Registry.
Segui le istruzioni per eseguire il deployment del modello dal registry dei modelli di Vertex AI a un endpoint Vertex AI.
Ti consigliamo di impostare il numero massimo di nodi di calcolo. In questo modo viene attivata la funzionalità di scalabilità automatica lato Vertex AI e l'endpoint può elaborare più richieste quando la tabella di dati BigQuery contiene una grande quantità di righe.
Modello remoto BigQuery ML
La creazione di un modello BigQuery ML remoto ha due componenti: una connessione alla risorsa cloud BigQuery e un modello BigQuery remoto che utilizza la connessione.
Creare una connessione a una risorsa cloud BigQuery
Per connetterti a Vertex AI, devi disporre di una connessione alla risorsa Cloud.
Seleziona una delle seguenti opzioni:
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 un nome per la connessione.
Fai clic su Crea connessione.
Fai clic su Vai alla connessione.
Nel riquadro Informazioni sulla connessione, copia l'ID account di servizio da utilizzare in un passaggio successivo.
bq
In un ambiente a riga di comando, crea una connessione:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
Il parametro
--project_id
sostituisce il progetto predefinito.Sostituisci quanto segue:
REGION
: la regione di connessionePROJECT_ID
: il tuo ID progetto Google CloudCONNECTION_ID
: un ID per la connessione
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.REGION.CONNECTION_ID
L'output è simile al seguente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Utilizza la risorsa google_bigquery_connection
.
Per autenticarti in BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.
L'esempio seguente crea una connessione risorsa Cloud denominata
my_cloud_resource_connection
nella regione US
:
Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Configurare l'accesso
Concedi all'account di servizio della connessione il ruolo Utente Vertex AI. Devi concedere questo ruolo nello stesso progetto che intendi specificare nell'URL dell'endpoint del modello remoto (o nel progetto del modello se utilizzi l'endpoint della versione breve) nella sezione Creare un modello BigQuery ML remoto. Se concedi il ruolo in un progetto diverso, viene visualizzato l'errore bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
.
Per concedere il ruolo, segui questi passaggi:
Vai alla pagina IAM e amministrazione.
Fai clic su
Concedi l'accesso.Nel campo Nuove entità, inserisci l'ID account di servizio che hai copiato in precedenza.
Nel campo Seleziona un ruolo, scegli Vertex AI e poi Ruolo utente Vertex AI.
Fai clic su Salva.
Crea il tuo set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML:
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 set di dati nella stessa posizione.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
Creare un modello remoto BigQuery ML
Per visualizzare lo schema di input e output del modello TensorFlow inviando una richiesta all'endpoint:
Esempio di richiesta:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:predict -d "{'instances': [{ 'text': 'This is an amazing movie'}, { 'text': 'The movie was terrible'}]}"
Un esempio di risposta:
{
"predictions": [
[
[ 0.999410391 ]
],
[
[ 0.000628352049 ]
]
]
}
Quando crei un modello remoto, i nomi e i tipi di campi di input e output devono essere esattamente gli stessi di input e output di Vertex AI.
Per il modello con un solo output, Vertex AI non restituisce il nome del campo. In CREATE MODEL
, puoi specificare qualsiasi nome di campo.
Il seguente esempio mostra come creare un modello remoto utilizzando una connessione:
CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`
INPUT (text STRING)
OUTPUT(scores ARRAY<FLOAT64>)
REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
OPTIONS(endpoint = 'ENDPOINT_URL')
Ottenere previsioni con ML.PREDICT
Ottieni le previsioni dal modello remoto in BigQuery utilizzando la funzione ML.PREDICT
. Qui vengono selezionati e inviati 10.000 record per la previsione. Per impostazione predefinita, il modello remoto utilizza una dimensione batch di 128 istanze per le sue richieste.
SELECT *
FROM ML.PREDICT (
MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`,
(
SELECT review as text
FROM `bigquery-public-data.imdb.reviews`
LIMIT 10000
)
)
Aree geografiche supportate
In BigQuery esistono due tipi di località:
- Una regione è un luogo geografico ben preciso, come Londra.
- Per "più regioni" si intende una realtà geografica di grandi dimensioni, come gli Stati Uniti, che contiene due o più luoghi geografici.
Regione singola
In un set di dati BigQuery di una singola regione, puoi creare solo un modello remoto che utilizza un endpoint Vertex AI di cui è stato eseguito il deployment nella stessa regione.
Un modello remoto nella singola regione us-central1 di BigQuery può utilizzare solo un modello Vertex AI in us-central1
.
Pertanto, per le singole regioni, i modelli remoti sono supportati solo nelle regioni che supportano sia Vertex AI sia BigQuery.
Più regioni
In un set di dati BigQuery multi-regione (US
, EU
), puoi creare solo un modello remoto che utilizza un modello remoto di cui è stato eseguito il deployment in una regione all'interno della stessa area geografica ampia (US
, EU
). Ad esempio:
Un modello remoto in BigQuery US multi-regione può utilizzare solo un endpoint Vertex AI di cui è stato eseguito il deployment in una singola regione dell'area geografica degli Stati Uniti, ad esempio us-central1
, us-east4
, us-west2
e così via.
Un modello remoto nella località multiregionale dell'UE di BigQuery può utilizzare solo un endpoint Vertex AI di cui è stato eseguito il deployment in una singola regione degli stati membri dell'Unione Europea, ad esempio europe-north1
, europe-west3
e così via.
Per saperne di più sulle regioni e sui multiregioni di BigQuery, consulta la pagina Località dei set di dati. Per saperne di più sulle regioni di Vertex AI, consulta le località di Vertex AI.
Utilizzo dei Controlli di servizio VPC
I Controlli di servizio VPC sono una funzionalità di Google Cloud che ti consente di configurare un perimetro sicuro per proteggerti dall'esfiltrazione di dati. Per utilizzare i Controlli di servizio VPC con i modelli remoti per una maggiore sicurezza, segui la guida ai Controlli di servizio VPC per: Creare un perimetro di servizio.
Aggiungi il progetto BigQuery della query che utilizza il modello remoto al perimetro. Aggiungi il progetto dell'endpoint al perimetro e imposta l'API Vertex AI nei servizi limitati in base al tipo di endpoint. Per maggiori dettagli, consulta i Controlli di servizio VPC di Vertex AI.
Esegui la pulizia
- 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.