Descripción general
En esta página, se muestra cómo importar modelos de TensorFlow a un conjunto de datos de BigQuery ML y utilizarlos para realizar predicciones a partir de una consulta de SQL. Puedes importar modelos de TensorFlow con estas interfaces:
- Cloud Console
- Mediante el comando
bq query
en la herramienta de línea de comandos debq
- La API de BigQuery
Para obtener más información sobre cómo importar modelos de TensorFlow a BigQuery ML, incluidos los requisitos de formato y almacenamiento, consulta la declaración CREATE
MODEL
para importar modelos de TensorFlow.
Importa modelos de TensorFlow
Para importar modelos de TensorFlow a un conjunto de datos, sigue estos pasos:
Console
En Cloud Console, ve a la página de BigQuery.
En el editor de consultas, ingresa una declaración
CREATE MODEL
como la siguiente.CREATE OR REPLACE MODEL example_dataset.imported_tf_model OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
La consulta anterior importa un modelo ubicado en
gs://cloud-training-demos/txtclass/export/exporter/1549825580/*
como un modelo de BigQuery ML llamadoimported_tf_model
. El URI de Cloud Storage termina en un carácter comodín (*
) para que BigQuery ML también importe los activos asociados con el modelo. El modelo importado es un modelo clasificador de texto de TensorFlow que predice qué sitio web publicó el título de un artículo determinado.Tu nuevo modelo ahora debería aparecer en el panel Recursos. A medida que expandes cada uno de los conjuntos de datos en un proyecto, se enumeran los modelos junto con los otros recursos de BigQuery en los conjuntos de datos. Los modelos se indican con el ícono del modelo:
.
Si seleccionas el modelo nuevo en el panel Recursos, la información sobre el modelo aparece debajo del Editor de consultas.
bq
Para importar un modelo de TensorFlow desde Cloud Storage, ejecuta una consulta por lotes. Para ello, ingresa un comando como el siguiente:
bq query \
--use_legacy_sql=false \
"CREATE MODEL
mydataset.mymodel
OPTIONS
(MODEL_TYPE='TENSORFLOW',
MODEL_PATH='gs://bucket/path/to/saved_model/*')"
Por ejemplo:
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/*')"
Después de importar el modelo, debe aparecer en el resultado de bq ls [dataset_name]
:
$ bq ls example_dataset
tableId Type Labels Time Partitioning
------------------- ------- -------- -------------------
imported_tf_model MODEL
API
Inserta un nuevo trabajo y propaga la propiedad jobs#configuration.query como en el cuerpo de la solicitud siguiente:
{
"query": "CREATE MODEL project_id:mydataset.mymodel OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://bucket/path/to/saved_model/*')"
}
Realiza predicciones con modelos importados de TensorFlow
Para realizar predicciones con modelos importados de TensorFlow, sigue estos pasos. En los siguientes ejemplos, se da por sentado que importaste el modelo de TensorFlow como lo hiciste en el ejemplo anterior.
Console
En Cloud Console, ve a la página de BigQuery.
En el editor de consultas, ingresa una consulta con
ML.PREDICT
como la que se muestra a continuación.SELECT * FROM ML.PREDICT(MODEL example_dataset.imported_tf_model, ( SELECT title AS input FROM `bigquery-public-data.hacker_news.stories` ) )
La consulta anterior usa el modelo llamado
imported_tf_model
en el conjunto de datosexample_dataset
en el proyecto actual para realizar predicciones a partir de datos de entrada en la tabla públicastories
del conjunto de datoshacker_news
en el proyectobigquery-public-data
. En este caso, la funciónserving_input_fn
del modelo de TensorFlow especifica que el modelo espera una sola string de entrada llamadainput
, por lo que la subconsulta asigna el aliasinput
a la columna en la sentenciaSELECT
de la subconsulta.Esta consulta genera resultados como los siguientes. En este ejemplo, el modelo genera la columna
dense_1
, que contiene un arreglo de valores de probabilidad, así como una columnainput
, que contiene los valores de string correspondientes de la tabla de entrada. Cada valor del elemento del arreglo representa la probabilidad de que la string de entrada correspondiente sea el título de un artículo de una publicación en particular.
bq
Para realizar predicciones a partir de datos de entrada en la tabla input_data
, ingresa un comando como el siguiente con el modelo de TensorFlow importado my_model
:
bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
MODEL `my_project`.my_dataset.my_model,
(SELECT * FROM input_data))'
Por ejemplo:
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.stories`))'
Este ejemplo muestra resultados como el siguiente:
+----------------------------------------------------------------------+------------------------------------------------------------------------------------+
| dense_1 | input |
+----------------------------------------------------------------------+------------------------------------------------------------------------------------+
| ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Appshare |
| ["0.6251608729362488","0.2989124357700348","0.07592673599720001"] | A Handfull of Gold. |
| ["0.014276246540248394","0.972910463809967","0.01281337533146143"] | Fastest Growing Skin Care Supplement for Increased Hair, Skin and Nail Nourishment |
| ["0.9821603298187256","1.8601855117594823E-5","0.01782100833952427"] | R4 3ds sdhc |
| ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Empréstimo Com Nome Sujo |
+----------------------------------------------------------------------+------------------------------------------------------------------------------------+
API
Inserta un nuevo trabajo y propaga la propiedad jobs#configuration.query como en el cuerpo de la solicitud siguiente:
{
"query": "SELECT * FROM ML.PREDICT(MODEL `my_project`.my_dataset.my_model, (SELECT * FROM input_data))"
}
¿Qué sigue?
- Para obtener más información sobre la importación de modelos de TensorFlow, consulta la declaración
CREATE MODEL
para importar modelos de TensorFlow. - Para obtener una descripción general de BigQuery ML, consulta Introducción a BigQuery ML.
- Para comenzar a usar BigQuery ML, consulta Comienza a usar BigQuery ML con Cloud Console.
- Para obtener más información sobre cómo trabajar con modelos, consulta estos recursos: