Fare previsioni con modelli remoti su Vertex AI

In questo tutorial, registri un endpoint Vertex AI come modello remoto in BigQuery. Poi, utilizzi la funzione ML.PREDICT per fare previsioni utilizzando il modello remoto.

Puoi utilizzare 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 in Vertex AI Model Registry.
  • 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 vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  5. Attiva le API BigQuery, Vertex AI, Cloud Storage e BigQuery Connection.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

  6. Assicurati di disporre delle autorizzazioni necessarie per eseguire le attività descritte in questo documento.

Ruoli obbligatori

Se crei un nuovo progetto, ne sei il proprietario e ti vengono concesse tutte le autorizzazioni IAM necessarie per completare questo tutorial.

Se utilizzi un progetto esistente, procedi nel seguente modo.

Assicurati di disporre dei seguenti ruoli nel progetto:

Controlla i ruoli

  1. Nella console Google Cloud vai alla pagina IAM.

    Vai a IAM
  2. Seleziona il progetto.
  3. Nella colonna Entità, trova tutte le righe che identificano te o un gruppo di cui fai parte. Per scoprire a quali gruppi appartieni, contatta il tuo amministratore.

  4. Per tutte le righe che ti specificano o ti includono, controlla la colonna Ruolo per verificare se l'elenco dei ruoli include i ruoli richiesti.

Concedi i ruoli

  1. Nella console Google Cloud vai alla pagina IAM.

    Vai a IAM
  2. Seleziona il progetto.
  3. Fai clic su Concedi l'accesso.
  4. Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.

  5. Fai clic su Seleziona un ruolo, quindi cerca il ruolo.
  6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
  7. Fai clic su Salva.

Per saperne di più sulle autorizzazioni IAM in BigQuery, consulta Autorizzazioni BigQuery.

Importa il modello in Vertex AI Model Registry

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à multi-regione US.

Il modello è un modello TensorFlow denominato saved_model.pb. Si tratta di un modello di analisi del sentiment personalizzato creato tramite l'ottimizzazione di un modello BERT con recensioni di film IMDB in formato di testo normale. Il modello utilizza l'input di testo delle recensioni di film e restituisce punteggi di sentiment compresi tra 0 e 1. Quando importi il modello in Model Registry, utilizzi un container TensorFlow predefinito.

Per importare il modello, segui questi passaggi.

  1. Nella console Google Cloud , vai alla pagina Model Registry di Vertex AI.

    Vai a Model Registry

  2. Fai clic su Importa.

  3. Per il Passaggio 1: nome e regione, procedi nel seguente modo:

    1. Seleziona Importa come nuovo modello.

    2. In Nome, inserisci bert_sentiment.

    3. In Descrizione, inserisci BQML tutorial model.

    4. In Regione, seleziona us-central1. Devi scegliere una regione con sede negli Stati Uniti perché il bucket Cloud Storage si trova nella località multi-regione US.

    5. Fai clic su Continua.

  4. Per il passaggio 2: Impostazioni del modello, segui questi passaggi:

    1. Seleziona Importa gli artefatti del modello in un nuovo container predefinito.

    2. Nella sezione Impostazioni contenitore predefinito, segui questi passaggi:

      1. Per Framework modello, scegli TensorFlow.

      2. In Versione framework modello, scegli 2.15.

      3. Per Tipo di acceleratore, scegli GPU.

      4. In Località artefatto modello, inserisci gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/.

      5. 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 Model Registry.

Esegui il deployment del modello su un endpoint Vertex AI

Per eseguire il deployment del modello su un endpoint:

  1. Nella console Google Cloud , vai alla pagina Model Registry di Vertex AI.

    Vai a Model Registry

  2. Nella colonna Nome, fai clic su bert_sentiment.

  3. Fai clic sulla scheda Deployment e test.

  4. Fai clic su Deployment su endpoint.

  5. Per il passaggio 1, Definisci l'endpoint, procedi nel seguente modo:

    1. Fai clic su Crea nuovo endpoint.

    2. In Nome endpoint, inserisci bert sentiment endpoint.

    3. Lascia invariati i restanti valori predefiniti e fai clic su Continua.

  6. Per il passaggio 2, Impostazioni modello, segui questi passaggi:

    1. Nella sezione Impostazioni di calcolo, per Numero minimo di nodi di calcolo, inserisci 1. Si tratta del numero di nodi che devono essere sempre disponibili per il modello.

    2. 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.

    3. Lascia invariati i restanti valori predefiniti e fai clic su Esegui il deployment.

      Quando il modello viene sottoposto a deployment nell'endpoint, lo stato cambia in Active.

    4. Copia l'ID endpoint numerico nella colonna ID e il valore nella colonna Regione. Ti serviranno in un secondo momento.

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML.

Console

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del progetto.

  3. Fai clic su Visualizza azioni > Crea set di dati.

  4. Nella pagina Crea set di dati, segui questi passaggi:

    • In ID set di dati, inserisci bqml_tutorial.

    • Per Tipo di località, seleziona Multi-regione e poi Stati Uniti.

    • 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 --dataset.

  1. Crea un set di dati denominato bqml_tutorial con la località dei dati impostata su US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Verifica che il set di dati sia stato creato:

    bq ls

API

Chiama il metodo datasets.insert con una risorsa dataset definita.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Crea una connessione a una risorsa cloud BigQuery

Per connetterti a un endpoint Vertex AI, devi disporre di una connessione a una risorsa Cloud.

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

    Pulsante evidenziato per il riquadro Spazio di esplorazione.

    Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.

  3. Nel riquadro Explorer, fai clic su Aggiungi dati.

    Si apre la finestra di dialogo Aggiungi dati.

  4. Nel riquadro Filtra per, seleziona Database nella sezione Tipo di origine dati.

    In alternativa, nel campo Cerca origini dati, puoi inserire Vertex AI.

  5. Nella sezione Origini dati in evidenza, fai clic su Vertex AI.

  6. Fai clic sulla scheda della soluzione Vertex AI Models: BigQuery Federation.

  7. Nell'elenco Tipo di connessione, seleziona Modelli remoti di Vertex AI, funzioni remote e BigLake (risorsa Cloud).

  8. Nel campo ID connessione, inserisci bqml_tutorial.

  9. Verifica che sia selezionata l'opzione Multi-regione - Stati Uniti.

  10. Fai clic su Crea connessione.

  11. Nella parte inferiore della finestra, fai clic su Vai alla connessione. In alternativa, nel riquadro Explorer, fai clic su Connessioni e poi su us.bqml_tutorial.

  12. Nel riquadro Informazioni sulla connessione, copia l'ID service account. Hai bisogno di questo ID quando configuri le autorizzazioni per la connessione. Quando crei una risorsa di connessione, BigQuery crea unaccount di serviziot di sistema univoco e lo associa alla connessione.

bq

  1. Creare una connessione:

    bq mk --connection --location=US --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE bqml_tutorial

    Sostituisci PROJECT_ID con il tuo ID progettoGoogle Cloud . Il parametro --project_id esegue l'override del progetto predefinito.

    Quando crei una risorsa di connessione, BigQuery crea un account di serviziot di sistema univoco e lo associa alla connessione.

    Risoluzione dei problemi: se viene visualizzato il seguente errore di connessione, aggiorna Google Cloud SDK:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupera e copia l'ID dell'account di servizio da utilizzare 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 al service account della connessione alla risorsa Google Cloud. Devi concedere questo ruolo nello stesso progetto in cui hai creato l'endpoint del modello remoto.

Per concedere il ruolo, segui questi passaggi:

  1. Vai alla pagina IAM e amministrazione.

    Vai a IAM e amministrazione

  2. Fai clic su Concedi l'accesso.

  3. Nel campo Nuove entità, inserisci l'ID account di servizio della connessione alla risorsa cloud che hai copiato in precedenza.

  4. Nel campo Seleziona un ruolo, scegli Vertex AI, quindi seleziona Utente Vertex AI.

  5. Fai clic su Salva.

Crea un modello remoto BigQuery ML

Crea un modello remoto BigQuery ML utilizzando l'istruzione CREATE MODEL con la clausola REMOTE WITH CONNECTION. Per saperne di più sull'istruzione CREATE MODEL, consulta L'istruzione CREATE MODEL per i modelli remoti nei modelli personalizzati.

Crea il modello nella località multiregionale US. In un set di dati BigQuery multiregionale (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à multiregionale (US, EU).

Quando crei il modello remoto, hai bisogno dell'ID endpoint generato quando hai eseguito il deployment del modello su Vertex AI. Inoltre, i nomi e i tipi dei campi di input e output devono essere esattamente gli stessi dell'input e dell'output del modello Vertex AI. In questo esempio, l'input è un testo STRING e l'output è un ARRAY di tipo FLOAT64.

Console

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Per Crea nuovo, fai clic su Query SQL.

  3. 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<FLOAT64>)
    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: model
icon.

    Se selezioni il nuovo modello nel riquadro Risorse, le informazioni sul modello vengono visualizzate sotto l'editor di query.

bq

  1. 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<FLOAT64>)
    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.
  2. Dopo aver creato il modello, verifica che venga 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

Utilizzi la funzione ML.PREDICT per ottenere le previsioni del sentiment dal modello remoto. L'input è una colonna di testo (review) che contiene recensioni di film dalla tabella bigquery-public-data.imdb.reviews.

In questo esempio, vengono selezionati e inviati per la previsione 10.000 record. Il modello remoto utilizza per impostazione predefinita una dimensione batch di 128 istanze per le richieste.

Console

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nella sezione Crea nuovo, fai clic su Query SQL.

  3. 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 ai seguenti:

    Risultati delle query

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

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

gcloud

    Elimina un progetto Google Cloud :

    gcloud projects delete PROJECT_ID

Elimina singole risorse

In alternativa, per rimuovere le singole risorse utilizzate in questo tutorial:

  1. Elimina il modello.

  2. (Facoltativo) Elimina il set di dati.

  3. Annulla il deployment del modello ed elimina l'endpoint.

  4. Elimina il modello da Model Registry.

  5. Elimina la connessione alle risorse Cloud.

Passaggi successivi