Incorpora testo con modelli TensorFlow preaddestrati
Questo tutorial mostra come generare incorporamenti di testo NNLM, SWIVEL e BERT in BigQuery utilizzando modelli TensorFlow preaddestrati. Un incorporamento di testo è una rappresentazione vettoriale densa di una porzione di testo in modo che se due parti di testo sono semanticamente simili, i rispettivi incorporamenti sono vicine nello spazio vettoriale di incorporamento.
I modelli NNLM, SWIVEL e BERT
I modelli NNLM, SWIVEL e BERT variano in base a dimensioni, accuratezza, scalabilità e costo. Utilizza la seguente tabella per determinare quale modello utilizzare:
Modello | Dimensione modello | Dimensione di embedding | Caso d'uso | Descrizione |
---|---|---|---|---|
NNLM | < 150 MB | 50 | Frasi brevi, notizie, tweet, recensioni | modello linguistico di rete neurale |
SWIVEL | < 150 MB | 20 | Frasi brevi, notizie, tweet, recensioni | Studente sull'incorporamento vettoriale a sottomatrice |
BERT | ~200MB | 768 | Frasi brevi, notizie, tweet, recensioni, brevi paragrafi | rappresentazioni encoder bidirezionali dei trasformatori |
In questo tutorial, i modelli NNLM e SWIVEL vengono modelli TensorFlow importati, e il modello BERT è un modello remoto su Vertex AI.
Autorizzazioni obbligatorie
Per creare il set di dati, è necessario il
bigquery.datasets.create
Autorizzazione IAM (Identity and Access Management).Per creare il bucket, devi disporre di IAM
storage.buckets.create
autorizzazione.Per caricare il modello in Cloud Storage, è necessario IAM
storage.objects.create
estorage.objects.get
autorizzazioni aggiuntive.Per creare la risorsa di connessione, devi disporre dei seguenti IAM autorizzazioni:
bigquery.connections.create
bigquery.connections.get
Per caricare il modello in BigQuery ML, è necessario quanto segue Autorizzazioni IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Per eseguire l'inferenza, sono necessarie le seguenti autorizzazioni IAM:
bigquery.tables.getData
nella tabella dell'oggettobigquery.models.getData
sul modellobigquery.jobs.create
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- BigQuery: You incur costs for the queries that you run in BigQuery.
- BigQuery ML: You incur costs for the model that you create and the inference that you perform in BigQuery ML.
- Cloud Storage: You incur costs for the objects that you store in Cloud Storage.
- Vertex AI: If you follow the instructions for generating the BERT model, then you incur costs for deploying the model to an endpoint.
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Per maggiori informazioni, consulta le seguenti risorse:
Prima di iniziare
- 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 gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery, BigQuery Connection, and Vertex AI.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API BigQuery, BigQuery Connection, and Vertex AI.
Crea un set di dati
Creare un set di dati denominato tf_models_tutorial
per archiviare i modelli che
che crei, seleziona una delle seguenti opzioni:
SQL
Utilizza la
Dichiarazione CREATE SCHEMA
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE SCHEMA `PROJECT_ID.tf_models_tutorial`;
Sostituisci
PROJECT_ID
con l'ID progetto.Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.
bq
Nella console Google Cloud, attiva Cloud Shell.
Per creare il set di dati, esegui Comando
bq mk
:bq mk --dataset --location=us PROJECT_ID:tf_models_tutorial
Sostituisci
PROJECT_ID
con l'ID progetto.
Genera e carica un modello in Cloud Storage
Per istruzioni più dettagliate sulla generazione di incorporamenti di testo utilizzando Per i modelli TensorFlow, consulta Blocco note di Colab. Altrimenti, seleziona uno dei seguenti modelli:
NNLM
Installa il Raccolta
bigquery-ml-utils
utilizzando pip:pip install bigquery-ml-utils
Generare un modello NNLM. Il codice Python seguente carica un modello NNLM da TensorFlow Hub e lo prepara BigQuery:
from bigquery_ml_utils import model_generator # Establish an instance of TextEmbeddingModelGenerator. text_embedding_model_generator = model_generator.TextEmbeddingModelGenerator() # Generate an NNLM model. text_embedding_model_generator.generate_text_embedding_model('nnlm', OUTPUT_MODEL_PATH)
Sostituisci
OUTPUT_MODEL_PATH
con un percorso a un indirizzo locale in cui archiviare temporaneamente il modello.(Facoltativo) Stampa la firma del modello generato:
import tensorflow as tf reload_embedding_model = tf.saved_model.load(OUTPUT_MODEL_PATH) print(reload_embedding_model.signatures["serving_default"])
Per copiare il modello generato dalla cartella locale in un nel bucket Cloud Storage, utilizza Google Cloud CLI:
gcloud storage cp OUTPUT_MODEL_PATH gs://BUCKET_PATH/nnlm_model --recursive
Sostituisci
BUCKET_PATH
con il nome del Bucket Cloud Storage in cui stai copiando il modello.
SWIVEL
Installa il Raccolta
bigquery-ml-utils
utilizzando pip:pip install bigquery-ml-utils
Genera un modello SWIVEL. Il seguente codice Python carica un modello SWIVEL da TensorFlow Hub e lo prepara BigQuery:
from bigquery_ml_utils import model_generator # Establish an instance of TextEmbeddingModelGenerator. text_embedding_model_generator = model_generator.TextEmbeddingModelGenerator() # Generate a SWIVEL model. text_embedding_model_generator.generate_text_embedding_model('swivel', OUTPUT_MODEL_PATH)
Sostituisci
OUTPUT_MODEL_PATH
con un percorso a un indirizzo locale in cui archiviare temporaneamente il modello.(Facoltativo) Stampa la firma del modello generato:
import tensorflow as tf reload_embedding_model = tf.saved_model.load(OUTPUT_MODEL_PATH) print(reload_embedding_model.signatures["serving_default"])
Per copiare il modello generato dalla cartella locale in un nel bucket Cloud Storage, utilizza Google Cloud CLI:
gcloud storage cp OUTPUT_MODEL_PATH gs://BUCKET_PATH/swivel_model --recursive
Sostituisci
BUCKET_PATH
con il nome del Bucket Cloud Storage in cui stai copiando il modello.
BERT
Installa il Raccolta
bigquery-ml-utils
utilizzando pip:pip install bigquery-ml-utils
Generare un modello BERT. Il seguente codice Python carica un modello BERT da TensorFlow Hub e lo prepara BigQuery:
from bigquery_ml_utils import model_generator # Establish an instance of TextEmbeddingModelGenerator. text_embedding_model_generator = model_generator.TextEmbeddingModelGenerator() # Generate a BERT model. text_embedding_model_generator.generate_text_embedding_model('bert', OUTPUT_MODEL_PATH)
Sostituisci
OUTPUT_MODEL_PATH
con un percorso a un indirizzo locale in cui archiviare temporaneamente il modello.(Facoltativo) Stampa la firma del modello generato:
import tensorflow as tf reload_embedding_model = tf.saved_model.load(OUTPUT_MODEL_PATH) print(reload_embedding_model.signatures["serving_default"])
Per copiare il modello generato dalla cartella locale in un nel bucket Cloud Storage, utilizza Google Cloud CLI:
gcloud storage cp OUTPUT_MODEL_PATH gs://BUCKET_PATH/bert_model --recursive
Sostituisci
BUCKET_PATH
con il nome del Bucket Cloud Storage in cui stai copiando il modello.
Carica il modello in BigQuery
Seleziona uno dei seguenti modelli:
NNLM
Utilizza la
Dichiarazione CREATE MODEL
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE OR REPLACE MODEL
tf_models_tutorial.nnlm_model
OPTIONS ( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/nnlm_model/*');Sostituisci
BUCKET_NAME
con il nome del bucket creato in precedenza.Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.
SWIVEL
Utilizza la
Dichiarazione CREATE MODEL
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE OR REPLACE MODEL
tf_models_tutorial.swivel_model
OPTIONS ( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/swivel_model/*');Sostituisci
BUCKET_NAME
con il nome del bucket creato in precedenza.Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.
BERT
Per caricare il modello BERT in BigQuery, importa BERT di un modello in Vertex AI, eseguire il deployment del modello l'endpoint Vertex AI, creare una connessione per creare un modello remoto in BigQuery.
Per importare il modello BERT in Vertex AI, segui questi passaggi:
Nella console Google Cloud, vai a Vertex AI Pagina Model registry.
Fai clic su Importa, quindi procedi nel seguente modo:
- In Nome, inserisci
BERT
. - In Regione, selezionane una che corrisponda alla tua regione del bucket Cloud Storage.
- In Nome, inserisci
Fai clic su Continua, quindi:
- Per Versione framework modello, seleziona
2.8
. - In Posizione artefatto modello, inserisci il percorso
Bucket Cloud Storage in cui hai archiviato il file del modello. Per
ad esempio
gs://BUCKET_PATH/bert_model
.
- Per Versione framework modello, seleziona
Fai clic su Importa. Al termine dell'importazione, il modello viene visualizzato della pagina Model registry.
Per eseguire il deployment del modello BERT su un endpoint Vertex AI e connetterlo a BigQuery, segui questi passaggi:
Nella console Google Cloud, vai a Vertex AI Pagina Model registry.
Fai clic sul nome del modello.
Fai clic su Esegui il deployment e test.
Fai clic su Esegui il deployment nell'endpoint.
In Nome endpoint, inserisci
bert_model_endpoint
.Fai clic su Continua.
Seleziona le risorse di computing.
Fai clic su Esegui il deployment.
Crea una connessione alle risorse Cloud BigQuery e concedere l'accesso all'account di servizio della connessione.
Per creare un modello remoto basato sull'endpoint Vertex AI,
utilizza la
Dichiarazione CREATE MODEL
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE OR REPLACE MODEL
tf_models_tutorial.bert_model
INPUT(content
STRING) OUTPUT(embedding
ARRAY<FLOAT64>
) REMOTE WITH CONNECTION `PROJECT_ID.CONNECTION_LOCATION.CONNECTION_ID` OPTIONS ( ENDPOINT = "https://ENDPOINT_LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/ENDPOINT_LOCATION/endpoints/ENDPOINT_ID");Sostituisci quanto segue:
PROJECT_ID
: ID progettoCONNECTION_LOCATION
: la posizione del tuo Connessione BigQueryCONNECTION_ID
: l'ID del tuo Connessione BigQueryQuando visualizzi i dettagli della connessione nella console Google Cloud, questo è il valore riportato nell'ultima sezione l'ID connessione completo mostrato ID connessione, ad esempio
projects/myproject/locations/connection_location/connections/myconnection
ENDPOINT_LOCATION
: la posizione del tuo l'endpoint Vertex AI. Ad esempio: "us-central1".ENDPOINT_ID
: l'ID del modello endpoint
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, vedi Eseguire una query interattiva.
Genera incorporamenti di testo
In questa sezione, utilizzi
Funzione di inferenza di ML.PREDICT()
per generare incorporamenti di testo della colonna review
dal set di dati pubblico
bigquery-public-data.imdb.reviews
. La
la query limita la tabella a 500 righe per ridurre la quantità di dati elaborati.
NNLM
SELECT * FROM ML.PREDICT( MODEL `tf_models_tutorial.nnlm_model`, ( SELECT review AS content FROM `bigquery-public-data.imdb.reviews` LIMIT 500) );
Il risultato è simile al seguente:
+-----------------------+----------------------------------------+ | embedding | content | +-----------------------+----------------------------------------+ | 0.08599445223808289 | Isabelle Huppert must be one of the... | | -0.04862852394580841 | | | -0.017750458791851997 | | | 0.8658871650695801 | | | ... | | +-----------------------+----------------------------------------+
SWIVEL
SELECT * FROM ML.PREDICT( MODEL `tf_models_tutorial.swivel_model`, ( SELECT review AS content FROM `bigquery-public-data.imdb.reviews` LIMIT 500) );
Il risultato è simile al seguente:
+----------------------+----------------------------------------+ | embedding | content | +----------------------+----------------------------------------+ | 2.5952553749084473 | Isabelle Huppert must be one of the... | | -4.015787601470947 | | | 3.6275434494018555 | | | -6.045154333114624 | | | ... | | +----------------------+----------------------------------------+
BERT
SELECT * FROM ML.PREDICT( MODEL `tf_models_tutorial.bert_model`, ( SELECT review AS content FROM `bigquery-public-data.imdb.reviews` LIMIT 500) );
Il risultato è simile al seguente:
+--------------+---------------------+----------------------------------------+ | embedding | remote_model_status | content | +--------------+---------------------+----------------------------------------+ | -0.694072425 | null | Isabelle Huppert must be one of the... | | 0.439208865 | | | | 0.99988997 | | | | -0.993487895 | | | | ... | | | +--------------+---------------------+----------------------------------------+
Esegui la pulizia
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.