En este tutorial, importarás modelos de TensorFlow a un conjunto de datos de BigQuery ML. Después, usa una consulta de SQL para hacer predicciones a partir de los modelos importados.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de aprendizaje automático.
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haga clic en
Ver acciones > Crear conjunto de datos.En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, introduce
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregión y, a continuación, EE. UU. (varias regiones de Estados Unidos).
Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos, usa el comando
bq mk
con la marca --location
. Para ver una lista completa de los parámetros posibles, consulta la referencia del comando bq mk --dataset
.
Crea un conjunto de datos llamado
bqml_tutorial
con la ubicación de los datos definida comoUS
y la descripciónBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
En lugar de usar la marca
--dataset
, el comando usa el acceso directo-d
. Si omite-d
y--dataset
, el comando creará un conjunto de datos de forma predeterminada.Confirma que se ha creado el conjunto de datos:
bq ls
API
Llama al método datasets.insert
con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Importar un modelo de TensorFlow
En los siguientes pasos se muestra cómo importar un modelo de Cloud Storage.
La ruta al modelo es gs://cloud-training-demos/txtclass/export/exporter/1549825580/*
. El nombre del modelo importado es imported_tf_model
.
Ten en cuenta que el URI de Cloud Storage termina en un carácter comodín (*
). Este carácter indica que BigQuery ML debe importar cualquier recurso asociado al modelo.
El modelo importado es un modelo de clasificador de texto de TensorFlow que predice qué sitio web ha publicado un título de artículo determinado.
Para importar el modelo de TensorFlow en tu conjunto de datos, sigue estos pasos.
Consola
En la Google Cloud consola, ve a la página BigQuery.
En Crear nuevo, haz clic en Consulta de SQL.
En el editor de consultas, introduce esta instrucción
CREATE MODEL
y, a continuación, haz clic en Ejecutar.CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
Cuando la operación se haya completado, debería aparecer un mensaje como el siguiente:
Successfully created model named imported_tf_model
.El nuevo modelo aparecerá en el panel Recursos. Los modelos se indican con el icono de modelo:
.
Si seleccionas el nuevo modelo en el panel Recursos, la información sobre el modelo aparecerá debajo del Editor de consultas.
bq
Importa el modelo de TensorFlow de Cloud Storage introduciendo la siguiente instrucción
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/*')"
Después de importar el modelo, comprueba que aparece en el conjunto de datos.
bq ls -m bqml_tutorial
El resultado debería ser similar al siguiente:
tableId Type ------------------- ------- imported_tf_model MODEL
API
Inserta un nuevo empleo y rellena la propiedad jobs#configuration.query en el cuerpo de la solicitud.
{ "query": "CREATE MODEL `PROJECT_ID:bqml_tutorial.imported_tf_model` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')" }
Sustituye PROJECT_ID
por el nombre de tu proyecto y del conjunto de datos.
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Importa el modelo mediante el objeto TensorFlowModel
.
Para obtener más información sobre cómo importar modelos de TensorFlow en BigQuery ML, incluidos los requisitos de formato y almacenamiento, consulta la instrucción CREATE MODEL
para importar modelos de TensorFlow.
Hacer predicciones con el modelo de TensorFlow importado
Después de importar el modelo de TensorFlow, usa la función ML.PREDICT
para hacer predicciones con el modelo.
La siguiente consulta usa imported_tf_model
para hacer predicciones con datos de entrada de la tabla full
del conjunto de datos público hacker_news
. En la consulta, la función serving_input_fn
del modelo de TensorFlow especifica que el modelo espera una sola cadena de entrada llamada input
. La subconsulta asigna el alias input
a la columna title
de la instrucción SELECT
de la subconsulta.
Para hacer predicciones con el modelo de TensorFlow importado, sigue estos pasos.
Consola
En la Google Cloud consola, ve a la página BigQuery.
En Crear nuevo, haz clic en Consulta de SQL.
En el editor de consultas, introduce esta consulta que usa la función
ML.PREDICT
.SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.imported_tf_model`, ( SELECT title AS input FROM bigquery-public-data.hacker_news.full ) )
Los resultados de la consulta deberían tener este aspecto:
bq
Introduce este comando para ejecutar la consulta que usa 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`))'
El resultado será similar a:
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | 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
Inserta un nuevo empleo y rellena la propiedad jobs#configuration.query como en el cuerpo de la solicitud. Sustituye project_id
por el nombre de tu proyecto.
{ "query": "SELECT * FROM ML.PREDICT(MODEL `project_id.bqml_tutorial.imported_tf_model`, (SELECT * FROM input_data))" }
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Usa la función predict
para ejecutar el modelo de TensorFlow:
El resultado será similar a:
En los resultados de la consulta, la columna dense_1
contiene una matriz de valores de probabilidad y la columna input
contiene los valores de cadena correspondientes de la tabla de entrada. Cada valor de elemento de la matriz representa la probabilidad de que la cadena de entrada correspondiente sea el título de un artículo de una publicación concreta.