In questo tutorial importi i modelli TensorFlow in un set di dati BigQuery ML. Poi, utilizzi una query SQL per fare previsioni dai modelli importati.
Obiettivi
- Utilizza l'istruzione
CREATE MODEL
per importare i modelli TensorFlow in BigQuery ML. - Utilizza la funzione
ML.PREDICT
per fare previsioni con i modelli TensorFlow importati.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Verifica che l'API BigQuery sia attivata.
- Assicurati di disporre delle autorizzazioni necessarie per eseguire le attività descritte in questo documento.
Ruoli obbligatori
Se crei un nuovo progetto, sei il proprietario del progetto e ti vengono concesse tutte le autorizzazioni IAM (Identity and Access Management) necessarie per completare questo tutorial.
Se utilizzi un progetto esistente, il ruolo Amministratore BigQuery Studio (roles/bigquery.studioAdmin
) concede tutte le autorizzazioni necessarie per completare questo tutorial.
Make sure that you have the following role or roles on the project:
BigQuery Studio Admin (roles/bigquery.studioAdmin
).
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi accesso.
-
Nel campo Nuovi principali, inserisci il tuo identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
Per ulteriori informazioni sulle autorizzazioni IAM in BigQuery, consulta Autorizzazioni BigQuery.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su
Visualizza azioni > Crea set di dati.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 sono archiviati nella
US
multiregione. Per semplicità, archivia il tuo set di dati nella stessa posizione.- 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
con il flag --location
. Per un elenco completo dei possibili parametri, consulta la documentazione di riferimento del comando bq mk --dataset
.
Crea un set di dati denominato
bqml_tutorial
con la posizione dei dati impostata suUS
e una descrizione diBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Anziché utilizzare il flag
--dataset
, il comando utilizza la scorciatoia-d
. Se ometti-d
e--dataset
, il comando crea per impostazione predefinita un set di dati.Verifica che il set di dati sia stato creato:
bq ls
API
Chiama il metodo datasets.insert
con una risorsa set di dati definita.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Importa un modello TensorFlow
I passaggi riportati di seguito mostrano come importare un modello da Cloud Storage.
Il percorso del modello è
gs://cloud-training-demos/txtclass/export/exporter/1549825580/*
. Il nome del
modello importato è imported_tf_model
.
Tieni presente che l'URI di Cloud Storage termina con un carattere jolly (*
).
Questo carattere indica che BigQuery ML deve importare tutti gli asset
associati al modello.
Il modello importato è un modello di classificazione del testo TensorFlow che predice quale sito web ha pubblicato un determinato titolo dell'articolo.
Per importare il modello TensorFlow nel tuo set di dati, segui questi passaggi.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Per Crea nuovo, fai clic su Query SQL.
Nell'editor di query, inserisci questa istruzione
CREATE MODEL
e poi fai clic su Esegui.CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
Al termine dell'operazione, dovresti visualizzare un messaggio simile a
Successfully created model named imported_tf_model
.Il nuovo modello viene visualizzato nel riquadro Risorse. I modelli sono indicati dall'icona del modello:
.
Se selezioni il nuovo modello nel riquadro Risorse, le informazioni sul modello vengono visualizzate sotto l'editor di query.
bq
Importa il modello TensorFlow da Cloud Storage inserendo il seguente statement
CREATE MODEL
.bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
Dopo aver importato il modello, verifica che sia visualizzato nel set di dati.
bq ls bqml_tutorial
L'output è simile al seguente:
tableId Type ------------------- ------- imported_tf_model MODEL
API
Inserisci un nuovo job e compila la proprietà jobs#configuration.query nel corpo della richiesta.
{ "query": "CREATE MODEL `PROJECT_ID:bqml_tutorial.imported_tf_model` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')" }
Sostituisci PROJECT_ID
con il nome del progetto e del set di dati.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames riportate nella guida introduttiva di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per autenticarti in BigQuery, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Importa il modello utilizzando l'oggetto TensorFlowModel
.
Per ulteriori informazioni sull'importazione dei modelli TensorFlow in
BigQuery ML, inclusi i requisiti di formato e archiviazione, consulta
l'istruzione CREATE MODEL
per l'importazione dei modelli TensorFlow.
Fai previsioni con il modello TensorFlow importato
Dopo aver importato il modello TensorFlow, utilizza la
funzione ML.PREDICT
per fare previsioni con il modello.
La seguente query utilizza imported_tf_model
per fare previsioni utilizzando i dati di input della tabella full
nel set di dati pubblico hacker_news
. Nella query,
la funzione serving_input_fn
del modello TensorFlow specifica che
il modello si aspetta una singola stringa di input denominata input
. La sottoquery assegna l'alias input
alla colonna title
nell'istruzione SELECT
della sottoquery.
Per fare previsioni con il modello TensorFlow importato, segui questi passaggi.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
In Crea nuovo, fai clic su Query SQL.
Nell'editor delle query, inserisci questa query che utilizza la funzione
ML.PREDICT
.SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.imported_tf_model`, ( SELECT title AS input FROM bigquery-public-data.hacker_news.full ) )
I risultati della query dovrebbero essere simili al seguente:
bq
Inserisci questo comando per eseguire la query che utilizza ML.PREDICT
.
bq query \ --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT( MODEL `bqml_tutorial.imported_tf_model`, (SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'
I risultati dovrebbero essere simili ai seguenti:
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | dense_1 | input | +------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | ["0.6251608729362488","0.2989124357700348","0.07592673599720001"] | How Red Hat Decides Which Open Source Companies t... | | ["0.014276246540248394","0.972910463809967","0.01281337533146143"] | Ask HN: Toronto/GTA mastermind around side income for big corp. dev? | | ["0.9821603298187256","1.8601855117594823E-5","0.01782100833952427"] | Ask HN: What are good resources on strategy and decision making for your career? | | ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Forget about promises, use harvests | +------------------------------------------------------------------------+----------------------------------------------------------------------------------+
API
Inserisci un nuovo job e compila la proprietà
jobs#configuration.query come nel corpo della richiesta. Sostituisci project_id
con il nome del progetto.
{ "query": "SELECT * FROM ML.PREDICT(MODEL `project_id.bqml_tutorial.imported_tf_model`, (SELECT * FROM input_data))" }
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames riportate nella guida introduttiva di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per autenticarti in BigQuery, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Utilizza la funzione predict
per eseguire il modello remoto:
I risultati dovrebbero essere simili ai seguenti:
Nei risultati della query, la colonna dense_1
contiene un array di valori di probabilità e la colonna input
contiene i valori di stringa corrispondenti della tabella di input. Ogni valore dell'elemento dell'array rappresenta la probabilità che la stringa di input corrispondente sia il titolo di un articolo di una determinata pubblicazione.
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimina singole risorse
In alternativa, rimuovi le singole risorse utilizzate in questo tutorial:
(Facoltativo) Elimina il set di dati.
Passaggi successivi
- Per una panoramica di BigQuery ML, consulta Introduzione a BigQuery ML.
- Per iniziare a utilizzare BigQuery ML, consulta Creare modelli di machine learning in BigQuery ML.
- Per ulteriori informazioni sull'importazione dei modelli TensorFlow, consulta
L'istruzione
CREATE MODEL
per l'importazione dei modelli TensorFlow. - Per ulteriori informazioni sull'utilizzo dei modelli, consulta queste risorse:
- Per ulteriori informazioni sull'utilizzo dell'API BigQuery DataFrames in un notebook BigQuery, consulta: