Elaborare previsioni con i modelli TensorFlow importati
Questa pagina mostra come importare i modelli TensorFlow in un set di dati BigQuery ML e utilizzarli per fare previsioni da una query SQL. Puoi importare i modelli TensorFlow utilizzando queste interfacce:
- Nella console Google Cloud
- Il comando
bq query
nello strumento a riga di comando bq - L'API BigQuery
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.
Importare modelli TensorFlow
Per importare i modelli TensorFlow in un set di dati:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor delle query, inserisci un'istruzione
CREATE MODEL
come la seguente.CREATE OR REPLACE MODEL `example_dataset.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
La query precedente importa un modello situato in
gs://cloud-training-demos/txtclass/export/exporter/1549825580/*
come modello BigQuery ML denominatoimported_tf_model
. L'URI Cloud Storage termina con un carattere jolly (*
) in modo che BigQuery ML importi anche gli asset associati al modello. Il modello importato è un modello di classificazione del testo di TensorFlow che prevede su quale sito web è stato pubblicato un determinato titolo dell'articolo.Il nuovo modello dovrebbe ora essere visualizzato nel riquadro Risorse. Man mano che espandi ciascun set di dati di un progetto, i modelli vengono elencati insieme alle altre risorse BigQuery nei set di dati. 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
Per importare un modello TensorFlow da Cloud Storage, esegui una query batch inserendo un comando come il seguente:
bq query \
--use_legacy_sql=false \
"CREATE MODEL
`mydataset.mymodel`
OPTIONS
(MODEL_TYPE='TENSORFLOW',
MODEL_PATH='gs://bucket/path/to/saved_model/*')"
Ad esempio:
bq query --use_legacy_sql=false \
"CREATE OR REPLACE MODEL
`example_dataset.imported_tf_model`
OPTIONS
(MODEL_TYPE='TENSORFLOW',
MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
Dopo aver importato il modello, questo dovrebbe essere visualizzato nell'output di bq ls [dataset_name]
:
$ bq ls example_dataset
tableId Type Labels Time Partitioning
------------------- ------- -------- -------------------
imported_tf_model MODEL
API
Inserisci un nuovo job e compila la proprietà jobs#configuration.query come nel seguente corpo della richiesta:
{
"query": "CREATE MODEL `project_id:mydataset.mymodel` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://bucket/path/to/saved_model/*')"
}
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 ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Importa il modello utilizzando l'oggetto TensorFlowModel
.
Elaborare previsioni con i modelli TensorFlow importati
Per fare previsioni con i modelli TensorFlow importati, segui questi passaggi. Gli esempi riportati di seguito presuppongono che tu abbia importato il modello TensorFlow come hai fatto nell'esempio precedente.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor delle query, inserisci una query utilizzando
ML.PREDICT
come segue.SELECT * FROM ML.PREDICT(MODEL
example_dataset.imported_tf_model
, ( SELECT title AS input FROMbigquery-public-data.hacker_news.full
) )La query precedente utilizza il modello denominato
imported_tf_model
nel set di datiexample_dataset
nel progetto corrente per fare predizioni dai dati di input nella tabella pubblicafull
del set di datihacker_news
nel progettobigquery-public-data
. In questo caso, la funzioneserving_input_fn
del modello TensorFlow specifica che il modello si aspetta una singola stringa di input denominatainput
, pertanto la sottoquery assegna l'aliasinput
alla colonna nell'istruzioneSELECT
della sottoquery.Questa query restituisce risultati come il seguente. In questo esempio, il modello genera la colonna
dense_1
, che contiene un array di valori di probabilità, nonché una colonnainput
, che 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.
bq
Per fare previsioni dai dati di input nella tabella input_data
, inserisci un
comando come il seguente, utilizzando il modello TensorFlow importatomy_model
:
bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
MODEL `my_project.my_dataset.my_model`,
(SELECT * FROM input_data))'
Ad esempio:
bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
MODEL `tensorflow_sample.imported_tf_model`,
(SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'
Questo esempio restituisce risultati come i 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 seguente corpo della richiesta:
{
"query": "SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.my_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 ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Utilizza la funzione predict
per eseguire il modello remoto:
Il risultato è simile al seguente:
Passaggi successivi
- Per ulteriori informazioni sull'importazione dei modelli TensorFlow, consulta l'istruzione
CREATE MODEL
per l'importazione dei modelli TensorFlow. - 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'utilizzo dei modelli, consulta queste risorse: