Fai previsioni con modelli remoti su Vertex AI

Panoramica

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 perfezionando un modello BERT con recensioni di film IMDB in testo normale. Il modello risultante utilizza l'input di testo (recensioni di film) e restituisce punteggi di sentiment compresi tra (0, 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 del sentiment per una colonna di testo (recensioni di film dalla tabella con 100.000 righe di testo bigquery-public-data.imdb.reviews).

Consulta il tutorial del modello remoto BQML per un tutorial su GitHub della versione Python.

Panoramica del flusso di lavoro

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.

  1. Fai clic qui per abilitare le API per le connessioni alle risorse di Vertex AI, Cloud Storage e BigQuery.
  2. Cloud Storage: per creare un bucket nella località multiregionale US predefinita seguendo queste istruzioni.

creazione del modello ML

Crea un modello utilizzando il tutorial del modello remoto BQML, che include un modello di previsione dell'analisi del sentiment creato perfezionando un modello BERT aggiungendo al contempo un livello di classificazione.

Abbiamo già addestrato un modello di esempio e l'abbiamo caricato in gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/ per consentirti di utilizzarlo direttamente.

Esegui il deployment del modello su Vertex AI

Segui le instructions per registrare il modello in Vertex AI Model Registry.

Segui le instructions per eseguire il deployment del modello da Vertex AI Model Registry a un endpoint Vertex AI.

Ti consigliamo di impostare il numero massimo di nodi di computing. Ciò attiva la funzionalità di scalabilità automatica sul lato di Vertex AI e aiuta l'endpoint a elaborare più richieste quando la tabella di dati BigQuery ha un numero elevato di righe.

Modello remoto BigQuery ML

La creazione di un modello remoto di BigQuery ML prevede due componenti: una connessione alla risorsa cloud di BigQuery e un modello remoto di BigQuery che utilizza tale connessione.

Crea una connessione alle risorse Cloud BigQuery

Devi avere una connessione alle risorse Cloud per connetterti a Vertex AI.

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Per creare una connessione, fai clic su Aggiungi e poi su Connessioni a origini dati esterne.

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

  4. Nel campo ID connessione, inserisci un nome per la connessione.

  5. Fai clic su Crea connessione.

  6. Fai clic su Vai alla connessione.

  7. Nel riquadro Informazioni sulla connessione, copia l'ID account di servizio da utilizzare in un passaggio successivo.

bq

  1. 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 tua regione di connessione
    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • CONNECTION_ID: un ID per la tua connessione

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

    Risoluzione dei problemi: se visualizzi 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 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

Aggiungi la sezione seguente al file main.tf.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Sostituisci quanto segue:

  • CONNECTION_ID: un ID per la tua connessione
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • REGION: la tua regione di connessione

Configura l'accesso

Per concedere all'account di servizio della connessione un ruolo appropriato per accedere al servizio Vertex AI, 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 che hai copiato in precedenza.

  4. Nel campo Seleziona un ruolo, scegli Vertex AI e poi seleziona Ruolo utente Vertex AI.

  5. Fai clic su Salva.

crea il tuo set di dati

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

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

    Vai alla pagina di BigQuery

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

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

    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 Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).

      I set di dati pubblici vengono archiviati in US più regioni. Per semplicità, memorizza il set di dati nella stessa posizione.

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.

      Pagina Crea set di dati.

Crea un modello remoto BigQuery ML

Per visualizzare lo schema di input e di output per il modello TensorFlow mediante l'invio di 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'}]}"

Esempio di risposta:

{
  "predictions": [
    [
      [ 0.999410391 ]
    ],
    [
      [ 0.000628352049 ]
    ]
  ]
}

Quando crei un modello remoto, i nomi e i tipi dei campi di input e di output devono essere esattamente uguali a quelli di input e output di Vertex AI.

Per il modello con output singolo, Vertex AI non restituirà il nome del campo. In CREATE MODEL, puoi specificare qualsiasi nome di campo.

L'esempio seguente 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')

Ricevi previsioni con ML.PREDICT

Ottieni 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, la dimensione batch del modello remoto è 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 a regione singola, puoi creare solo un modello remoto che utilizza un endpoint Vertex AI di cui è stato eseguito il deployment nella stessa regione. Un modello remoto in BigQuery a regione singola us-central1 può utilizzare solo un 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 multiregionale (US, EU), puoi creare un modello remoto che utilizza un modello remoto di cui è stato eseguito il deployment in una regione all'interno della stessa area geografica di grandi dimensioni (US, EU). Ad esempio: Un modello remoto in BigQuery multiregionale degli Stati Uniti può utilizzare solo un endpoint Vertex AI di cui è stato eseguito il deployment in una singola regione nell'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 qualsiasi singola regione negli stati membri dell'Unione europea, ad esempio europe-north1, europe-west3 e così via.

Per saperne di più sulle regioni e sulle regioni multiple di BigQuery, consulta la pagina Località dei set di dati. Per saperne di più sulle regioni di Vertex AI, consulta Località di Vertex AI.

Utilizzo dei Controlli di servizio VPC

Controlli di servizio VPC è una funzionalità di Google Cloud che consente di configurare un perimetro sicuro per evitare l'esfiltrazione di dati. Per utilizzare 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 nel perimetro il progetto BigQuery della query utilizzando il modello remoto. Aggiungi il progetto dell'endpoint nel perimetro e imposta l'API Vertex AI nei servizi limitati in base al tipo di endpoint. Per maggiori dettagli, consulta Controlli di servizio VPC di Vertex AI.

Esegui la pulizia

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

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto 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.