Fazer previsões com os modelos importados do TensorFlow

Neste tutorial, você importa modelos do TensorFlow para um conjunto de dados do BigQuery ML. Em seguida, use uma consulta SQL para fazer previsões com base nos modelos importados.

Objetivos

  • Use a instrução CREATE MODEL para importar modelos do TensorFlow para o BigQuery ML.
  • Use a função ML.PREDICT para fazer previsões com os modelos importados do TensorFlow.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Google Cloud podem estar qualificados para um teste sem custo financeiro.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  5. Verifique se a API BigQuery está ativada.

    Ativar a API

  6. Verifique se você tem as permissões necessárias para realizar as tarefas neste documento.

Funções exigidas

Se você criar um projeto, será o proprietário dele e terá todas as permissões necessárias do Identity and Access Management (IAM) para concluir este tutorial.

Se você estiver usando um projeto atual, o papel Administrador do BigQuery Studio (roles/bigquery.studioAdmin) concede todas as permissões necessárias para concluir este tutorial.

Verifique se você tem o seguinte papel ou papéis no projeto: Administrador do BigQuery Studio (roles/bigquery.studioAdmin).

Verificar os papéis

  1. No console do Google Cloud , acesse a página IAM.

    Acessar IAM
  2. Selecione o projeto.
  3. Na coluna Principal, encontre todas as linhas que identificam você ou um grupo no qual você está incluído. Para saber em quais grupos você está incluído, entre em contato com o administrador.

  4. Em todas as linhas que especificam ou incluem você, verifique a coluna Papel para ver se a lista de papéis inclui os papéis necessários.

Conceder os papéis

  1. No console do Google Cloud , acesse a página IAM.

    Acessar IAM
  2. Selecione o projeto.
  3. Clique em Conceder acesso.
  4. No campo Novos principais, digite seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.

  5. Clique em Selecionar um papel e pesquise o papel.
  6. Para conceder outros papéis, adicione-os clicando em Adicionar outro papel.
  7. Clique em Salvar.

Para mais informações sobre as permissões do IAM no BigQuery, consulte Permissões do BigQuery.

crie um conjunto de dados

Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.

Console

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar a página do BigQuery

  2. No painel Explorer, clique no nome do seu projeto.

  3. Clique em Conferir ações > Criar conjunto de dados.

  4. Na página Criar conjunto de dados, faça o seguinte:

    • Para o código do conjunto de dados, insira bqml_tutorial.

    • Em Tipo de local, selecione Multirregião e EUA.

    • Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.

bq

Para criar um conjunto de dados, use o comando bq mk --dataset.

  1. Crie um conjunto de dados chamado bqml_tutorial com o local dos dados definido como US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Confirme se o conjunto de dados foi criado:

    bq ls

API

Chame o método datasets.insert com um recurso de conjunto de dados definido.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Importar um modelo do TensorFlow

As etapas a seguir mostram como importar um modelo do Cloud Storage. O caminho para o modelo é gs://cloud-training-demos/txtclass/export/exporter/1549825580/*. O nome do modelo importado é imported_tf_model.

Observe que o URI do Cloud Storage termina em um caractere curinga (*). Esse caractere indica que o BigQuery ML precisa importar todos os recursos associados ao modelo.

O modelo importado é um classificador de texto do TensorFlow que prevê qual site publicou um determinado título de artigo.

Para importar o modelo do TensorFlow para seu conjunto de dados, siga estas etapas.

Console

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar a página do BigQuery

  2. Em Criar nova, clique em Consulta SQL.

  3. No editor de consultas, insira esta instrução CREATE MODEL e clique em Executar.

      CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model`
      OPTIONS (MODEL_TYPE='TENSORFLOW',
        MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')

    Quando a operação for concluída, você vai receber uma mensagem como Successfully created model named imported_tf_model.

  4. Seu novo modelo vai aparecer no painel Recursos. Os modelos são indicados pelo ícone: model
icon.

  5. Se você selecionar o novo modelo no painel Recursos, as informações sobre o modelo serão exibidas abaixo do Editor de consultas.

    Informações do modelo do TensorFlow

bq

  1. Importe o modelo do TensorFlow do Cloud Storage inserindo a seguinte instrução 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/*')"
  2. Depois de importar o modelo, verifique se ele aparece no conjunto de dados.

    bq ls -m bqml_tutorial

    O resultado será o seguinte:

    tableId             Type
    ------------------- -------
    imported_tf_model   MODEL

API

Insira um novo job e preencha a propriedade jobs#configuration.query no corpo da solicitação.

{
  "query": "CREATE MODEL `PROJECT_ID:bqml_tutorial.imported_tf_model` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
}

Substitua PROJECT_ID pelo nome do projeto e do conjunto de dados.

BigQuery DataFrames

Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.

Importe o modelo usando o objeto TensorFlowModel.

import bigframes
from bigframes.ml.imported import TensorFlowModel

bigframes.options.bigquery.project = PROJECT_ID
# You can change the location to one of the valid locations: https://cloud.google.com/bigquery/docs/locations#supported_locations
bigframes.options.bigquery.location = "US"

imported_tensorflow_model = TensorFlowModel(
    model_path="gs://cloud-training-demos/txtclass/export/exporter/1549825580/*"
)

Para mais informações sobre como importar modelos do TensorFlow no BigQuery ML, incluindo requisitos de formato e armazenamento, consulte a instrução CREATE MODEL para importar modelos do TensorFlow.

Fazer previsões com o modelo importado do TensorFlow

Depois de importar o modelo do TensorFlow, use a função ML.PREDICT para fazer previsões com o modelo.

A consulta a seguir usa imported_tf_model para fazer previsões com dados de entrada da tabela full no conjunto de dados público hacker_news. Na consulta, a função serving_input_fn do modelo do TensorFlow especifica que o modelo espera uma única string de entrada chamada input. A subconsulta atribui o alias input à coluna title na instrução SELECT da subconsulta.

Para fazer previsões com o modelo importado do TensorFlow, siga estas etapas.

Console

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar a página do BigQuery

  2. Em Criar nova, clique em Consulta SQL.

  3. No editor de consultas, insira esta consulta que usa a função ML.PREDICT.

    SELECT *
      FROM ML.PREDICT(MODEL `bqml_tutorial.imported_tf_model`,
        (
         SELECT title AS input
         FROM bigquery-public-data.hacker_news.full
        )
    )

    Os resultados da consulta devem ser parecidos com este:

    Resultados da consulta

bq

Digite este comando para executar a 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`))'

Os resultados devem ficar assim:

+------------------------------------------------------------------------+----------------------------------------------------------------------------------+
|                               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

Insira um novo job e preencha a propriedade jobs#configuration.query como no corpo da solicitação. Substitua project_id pelo nome do projeto.

{
  "query": "SELECT * FROM ML.PREDICT(MODEL `project_id.bqml_tutorial.imported_tf_model`, (SELECT * FROM input_data))"
}

BigQuery DataFrames

Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.

Use a função predict para executar o modelo do TensorFlow:

import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.hacker_news.full")
df_pred = df.rename(columns={"title": "input"})
predictions = imported_tensorflow_model.predict(df_pred)
predictions.head(5)

Os resultados devem ficar assim:

Result_visualization

Nos resultados da consulta, a coluna dense_1 contém uma matriz de valores de probabilidade, e a coluna input contém os valores de string correspondentes da tabela de entrada. Cada valor de elemento da matriz representa a probabilidade de que a string de entrada correspondente seja um título de artigo de uma publicação específica.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

Console

  1. No console Google Cloud , acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

gcloud

    Excluir um projeto do Google Cloud :

    gcloud projects delete PROJECT_ID

Excluir recursos individuais

Como alternativa, remova os recursos individuais usados neste tutorial:

  1. Exclua o modelo importado.

  2. Opcional: exclua o conjunto de dados.

A seguir