Fare 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 personalizzato di analisi del sentiment mettendo a punto 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. Successivamente, il modello viene aggiunto a BigQuery come modello remoto. Puoi utilizzare il modello remoto in BigQuery per ottenere previsioni di sentiment per una colonna di testo (recensioni dei film dalla tabella di 100.000 righe bigquery-public-data.imdb.reviews.

Consulta il tutorial sul modello remoto BQML per un tutorial sulla versione Python di GitHub.

Panoramica del flusso di lavoro

Configurazione di un tutorial

Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud: Cloud Storage, Vertex AI e BigQuery. Al termine del tutorial, verranno rimossi i componenti fatturabili.

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

creazione del modello ML

Crea un modello utilizzando il tutorial sui modelli remoti BQML, che include un modello di previsione dell'analisi del sentiment creato mediante il perfezionamento di un modello BERT durante l'aggiunta di un livello di classificazione.

Abbiamo già addestrato un modello di esempio e lo 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. Questa operazione attiva la funzionalità di scalabilità automatica sul lato Vertex AI e consente all'endpoint di elaborare più richieste quando la tabella dati BigQuery ha una grande quantità di righe.

Modello remoto BigQuery ML

La creazione di un modello remoto di BigQuery ML prevede due componenti: una connessione alle risorse cloud BigQuery e un modello remoto BigQuery che utilizza la connessione.

Creare una connessione alle risorse Cloud BigQuery

Per connetterti a Vertex AI, devi disporre di una connessione alle risorse Cloud.

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 per utilizzarlo 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 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 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 seguente sezione al tuo 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, quindi 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 tuo progetto.

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

    Crea il 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à, archivia il tuo set di dati nella stessa località.

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

      Pagina Crea set di dati.

Creare un modello remoto di BigQuery ML

Per vedere lo schema di input e output per il 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'}]}"

Esempio di risposta:

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

Quando crei un modello remoto, i nomi e i tipi dei campi di input e output devono essere esattamente gli stessi di 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')

Ottieni previsioni con ML.PREDICT

Ottenere previsioni dal modello remoto in BigQuery utilizzando la funzione ML.PREDICT. Qui vengono selezionati e inviati per la previsione 10.000 record. Per impostazione predefinita, il modello remoto ha 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 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 una singola regione di BigQuery us-central1 può utilizzare Vertex AI solo in us-central1. Pertanto, per le singole regioni, i modelli remoti sono supportati solo nelle regioni che supportano sia Vertex AI che BigQuery.

Più regioni

In un set di dati BigQuery multiregionale (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 di grandi dimensioni (US, EU). Ad esempio: un modello remoto in BigQuery con più regioni negli Stati Uniti può utilizzare solo un endpoint Vertex AI di cui è stato eseguito il deployment in qualsiasi singola regione nell'area geografica degli Stati Uniti, come us-central1, us-east4, us-west2 e così via.

Un modello remoto in BigQuery EU (più regioni) può utilizzare solo un endpoint Vertex AI di cui è stato eseguito il deployment in una 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 ulteriori informazioni 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 prevenire l'esfiltrazione di dati. Per utilizzare Controlli di servizio VPC con modelli remoti per maggiore sicurezza, consulta la guida sui 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 endpoint al perimetro e imposta l'API Vertex AI nei servizi limitati in base al tipo di endpoint. Per ulteriori 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.