Neste tutorial, você vai registrar um endpoint da Vertex AI como um modelo remoto no BigQuery. Em seguida, use a função ML.PREDICT
para fazer
previsões usando o modelo remoto.
É possível usar modelos remotos quando um modelo é muito grande para ser importado para o BigQuery. Eles também são úteis quando você quer ter um único ponto de inferência para casos de uso on-line, em lote e de microlote.
Objetivos
- Importar um modelo do TensorFlow pré-treinado para o Vertex AI Model Registry.
- Implante o modelo em um endpoint da Vertex AI.
- Crie uma conexão de recursos do Cloud.
- Use a instrução
CREATE MODEL
para criar um modelo remoto no BigQuery. - Use a função
ML.PREDICT
para fazer previsões com o modelo remoto.
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.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Vertex AI, Cloud Storage, and BigQuery Connection APIs.
- Verifique se você tem as permissões necessárias para realizar as tarefas neste documento.
-
Make sure that you have the following role or roles on the project:
- BigQuery Studio Admin (
roles/bigquery.studioAdmin
) - Vertex AI User (
roles/aiplatform.user
) - BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)
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.
Acessar o IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Na lista Selecionar um papel, escolha um.
- Para conceder outros papéis, adicione-os clicando em Adicionar outro papel.
- Clique em Salvar.
No console do Google Cloud , acesse a página Model Registry da Vertex AI.
Clique em Importar.
Para Etapa 1: nome e região, faça o seguinte:
Selecione Importar como novo modelo.
Em Nome, insira
bert_sentiment
.Em Descrição, insira
BQML tutorial model
.Em Região, selecione
us-central1
. Você precisa escolher uma região nos EUA porque o bucket do Cloud Storage está no local multirregionalUS
.Clique em Continuar.
Em Etapa 2: configurações do modelo, faça o seguinte:
Selecione Importar artefatos de modelo em um novo contêiner predefinido.
Na seção Configurações de contêiner pré-criado, faça o seguinte:
Em Framework do modelo, escolha TensorFlow.
Em Versão do framework do modelo, escolha 2.15.
Em Tipo de acelerador, escolha GPU.
Em Local do artefato do modelo, insira
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
.Mantenha os valores padrão de todas as opções restantes e clique em Importar.
No console Google Cloud , acesse a página Model Registry da Vertex AI.
Na coluna Nome, clique em
bert_sentiment
.Clique na guia Implantar e testar.
Clique em Implantar no endpoint.
Para a etapa 1, Definir seu endpoint, faça o seguinte:
Clique em Criar novo endpoint.
Em Nome do endpoint, insira
bert sentiment endpoint
.Mantenha os outros valores como o padrão e clique em Continuar.
Na etapa dois, Configurações do modelo, faça o seguinte:
Na seção Configurações de computação, em Número mínimo de nós de computação, insira
1
. Esse é o número de nós que precisam estar disponíveis para o modelo em todos os momentos.Na seção Opções avançadas de escalonamento, em Tipo de máquina, escolha Padrão (n1-standard-2). Como você escolheu GPU como o tipo de acelerador ao importar o modelo, depois de escolher o tipo de máquina, o tipo e a contagem de aceleradores serão definidos automaticamente.
Mantenha os outros valores como o padrão e clique em Implantar.
Quando o modelo é implantado no endpoint, o status muda para
Active
.Copie o ID numérico do endpoint na coluna ID e o valor na coluna Região. Você vai precisar deles mais tarde.
No console Google Cloud , acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em
Conferir ações > Criar conjunto de dados.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 (várias regiões nos Estados Unidos).
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
Crie um conjunto de dados chamado
bqml_tutorial
com o local dos dados definido comoUS
e uma descrição deBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Em vez de usar a flag
--dataset
, o comando usa o atalho-d
. Se você omitir-d
e--dataset
, o comando vai criar um conjunto de dados por padrão.Confirme se o conjunto de dados foi criado:
bq ls
Acessar a página do BigQuery.
No painel Explorer, clique em
Adicionar dados.A caixa de diálogo Adicionar dados é aberta.
No painel Filtrar por, na seção Tipo de fonte de dados, selecione Bancos de dados.
Como alternativa, no campo Pesquisar fontes de dados, insira
Vertex AI
.Na seção Fontes de dados em destaque, clique em Vertex AI.
Clique no card da solução Modelos da Vertex AI: federação do BigQuery.
Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (Cloud Resource).
No campo ID da conexão, insira
bqml_tutorial
.Verifique se a opção Multirregião — EUA está selecionada.
Clique em Criar conexão.
Na parte de baixo da janela, clique em Acessar conexão. Como alternativa, no painel Explorer, expanda Conexões externas e clique em
us.bqml_tutorial
.No painel Informações da conexão, copie o ID da conta de serviço. Você precisa desse ID ao configurar as permissões da conexão. Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.
Criar uma conexão
bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial
Substitua
PROJECT_ID
pelo Google Cloud ID do projeto. O parâmetro--project_id
substitui o projeto padrão.Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.
Solução de problemas: se você receber o seguinte erro de conexão, atualize o SDK Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupere e copie o ID da conta de serviço para uso em uma etapa posterior:
bq show --connection PROJECT_ID.us.bqml_tutorial
O resultado será assim:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Acessar a página AM e administrador
Clique em
Conceder acesso.No campo Novos principais, insira o ID da conta de serviço da conexão de recursos do Cloud que você copiou anteriormente.
No campo Selecionar um papel, escolha Vertex AI e, em seguida, selecione Usuário da Vertex AI.
Clique em Salvar.
No console Google Cloud , acesse a página BigQuery.
Em Criar, clique em Consulta SQL.
No editor de consultas, insira esta instrução
CREATE MODEL
e clique em Executar:CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY<FLOAT64>) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')
Substitua:
- PROJECT_ID: o nome do projeto.
- ENDPOINT_ID: o ID do endpoint que você copiou anteriormente.
Quando a operação for concluída, uma mensagem semelhante a
Successfully created model named bert_sentiment
será exibida.Seu novo modelo vai aparecer no painel Recursos. Os modelos são indicados pelo ícone:
.
Se você selecionar o novo modelo no painel Recursos, as informações sobre o modelo serão exibidas abaixo do Editor de consultas.
Crie o modelo remoto inserindo a seguinte instrução
CREATE MODEL
:bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY<FLOAT64>) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')"
Substitua:
- PROJECT_ID: o nome do projeto.
- ENDPOINT_ID: o ID do endpoint que você copiou anteriormente.
Depois de criar o modelo, verifique se ele aparece no conjunto de dados:
bq ls -m bqml_tutorial
O resultado será assim:
Id Model Type Labels Creation Time ---------------- ------------ -------- ----------------- bert_sentiment 28 Jan 17:39:43
No console Google Cloud , acesse a página BigQuery.
Na seção Criar novo, clique em Consulta SQL.
No editor de consultas, insira esta consulta que usa a função
ML.PREDICT
e clique em Executar.SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )
Os resultados da consulta devem ser parecidos com isto:
- 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.
- 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.
- Para uma visão geral do BigQuery ML, consulte Introdução à IA e ao ML no BigQuery ML.
- Para mais informações sobre como usar a instrução
CREATE MODEL
para modelos remotos, consulte A instrução CREATE MODEL para modelos remotos em vez de modelos personalizados. - Para mais informações sobre como usar um notebook do BigQuery, consulte Introdução aos notebooks.
- Para mais informações sobre regiões e multirregiões do BigQuery, consulte a página Locais compatíveis.
- Para saber mais sobre como importar modelos no Vertex AI Model Registry, consulte Importar modelos para a Vertex AI.
- Para saber mais sobre o controle de versões de modelos no Vertex AI Model Registry, consulte Controle de versões de modelos com o Model Registry.
- Para informações sobre como usar o VPC Service Controls da Vertex AI, consulte VPC Service Controls com a Vertex AI.
Para mais informações sobre as permissões do IAM no BigQuery, consulte Permissões do BigQuery.
Importar o modelo para o Vertex AI Model Registry
Neste tutorial, você vai usar um modelo pré-treinado do TensorFlow disponível no Cloud Storage em
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
. O bucket do Cloud Storage está no local multirregionalUS
.O modelo é do TensorFlow e se chama
saved_model.pb
. É um modelo personalizado de análise de sentimento criado ao ajustar um modelo BERT com avaliações de filmes do IMDB em texto simples. O modelo usa entrada de texto das avaliações de filmes e retorna pontuações de sentimento entre zero e um. Ao importar o modelo para o Model Registry, você usa um contêiner pré-criado do TensorFlow.Siga estas etapas para importar o modelo.
Depois que a importação for concluída, o modelo vai aparecer na página Model Registry.
Implantar o modelo em um endpoint da Vertex AI
Siga estas etapas para implantar o modelo em um endpoint.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
bq
Para criar um novo conjunto de dados, utilize o comando
bq mk
com a sinalização--location
. Para obter uma lista completa de parâmetros, consulte a referência comandobq mk --dataset
.API
Chame o método
datasets.insert
com um recurso de conjunto de dados definido.{ "datasetReference": { "datasetId": "bqml_tutorial" } }
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.
Criar uma conexão de recursos do Cloud do BigQuery
Você precisa ter uma conexão de recursos do Cloud para se conectar a um endpoint da Vertex AI.
Console
bq
Configurar o acesso à conexão
Conceda o papel de usuário da Vertex AI à conta de serviço da conexão de recurso do Cloud. É necessário conceder essa função no mesmo projeto em que você criou o endpoint do modelo remoto.
Para conceder o papel, siga estas etapas:
Criar um modelo remoto do BigQuery ML
Para criar um modelo remoto do BigQuery ML, use a instrução
CREATE MODEL
com a cláusulaREMOTE WITH CONNECTION
. Para mais informações sobre a instruçãoCREATE MODEL
, consulte A instrução CREATE MODEL para modelos remotos em vez de modelos personalizados.Você cria seu modelo no local multirregional
US
. Em um conjunto de dados multirregional (US
,EU
) do BigQuery, só é possível criar um modelo remoto que se conecta a um endpoint implantado em uma região dentro do mesmo local multirregional (US
,EU
).Ao criar o modelo remoto, você precisa do ID do endpoint gerado quando implantou o modelo na Vertex AI. Além disso, os nomes e tipos de campo de entrada e saída precisam ser exatamente iguais aos de entrada e saída do modelo da Vertex AI. Neste exemplo, a entrada é um texto
STRING
, e a saída é umARRAY
do tipoFLOAT64
.Console
bq
Receber previsões usando
ML.PREDICT
Use a função
ML.PREDICT
para receber previsões de sentimento do modelo remoto. A entrada é uma coluna de texto (review
) que contém avaliações de filmes da tabelabigquery-public-data.imdb.reviews
.Neste exemplo, 10.000 registros são selecionados e enviados para previsão. O modelo remoto tem como padrão um tamanho de lote de 128 instâncias para solicitações.
Console
bq
Digite este comando para executar a consulta que usa
ML.PREDICT
.bq query --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )'
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
gcloud
Excluir recursos individuais
Como alternativa, para remover os recursos individuais usados neste tutorial:
A seguir
- BigQuery Studio Admin (
Funções exigidas
Se você criar um projeto, será o proprietário dele e receberá todas as permissões necessárias do IAM para concluir este tutorial.
Se você estiver usando um projeto atual, faça o seguinte: