Fare 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 personalizzato di analisi del sentiment mediante l'ottimizzazione di 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 e 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 del 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 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 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 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. 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 BigQuery ML remoto ha due componenti: una connessione alla risorsa cloud BigQuery e un modello BigQuery remoto che utilizza la connessione.

Creare una connessione alle risorse Cloud BigQuery

Per connetterti a Vertex AI, devi disporre di una connessione alla risorsa 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 di Vertex AI, funzioni remote e BigLake (risorsa Cloud).

  4. Nel campo ID connessione, inserisci un nome per 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 regione di connessione
    • PROJECT_ID: il tuo ID progetto Google Cloud
    • CONNECTION_ID: un ID per 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...
    
  2. Recupera e copia l'ID account di servizio per utilizzarlo in un secondo momento passaggio:

    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 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 connessione
  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • REGION: il tuo regione di connessione

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. La concessione del ruolo in un altro progetto genera l'errore bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.

Per concedere il ruolo:

  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 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 BigQuery

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

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

    Crea il set di dati.

  4. 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 vengono archiviati nell'US più regioni. Per semplicità, per archiviare 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.

Creare un modello remoto di 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'}]}"

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 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')

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.