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.
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 multirregional US.
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.
- 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 multirregional- US.
- 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. 
 
 
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.
- 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 sã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. 
 
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
- No console do Google Cloud , acesse a página BigQuery. 
- No painel Explorer, clique no nome do seu projeto. 
- Clique em Ver 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. 
 
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
comando bq mk --dataset.
- Crie um conjunto de dados chamado - bqml_tutorialcom o local dos dados definido como- USe uma descrição de- BigQuery 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- -de- --dataset, o comando vai criar um conjunto de dados por padrão.
- 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" } }
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
- Acessar a página do BigQuery. 
- No painel à esquerda, clique em Explorer:  - Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir. 
- 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, clique em Conexões e 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. 
bq
- Criar uma conexão - bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial - Substitua - PROJECT_IDpelo Google Cloud ID do projeto. O parâmetro- --project_idsubstitui 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"}
Configurar o acesso à conexão
Conceda o papel de usuário da Vertex AI à conta de serviço da conexão de recursos 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:
- 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. 
Criar um modelo remoto do BigQuery ML
Para criar um modelo remoto do BigQuery ML, use a instrução CREATE MODEL com a cláusula REMOTE WITH CONNECTION. Para mais informações sobre
a instrução CREATE 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 é um ARRAY do tipo FLOAT64.
Console
- No console do Google Cloud , acesse a página BigQuery. 
- Em Criar, clique em Consulta SQL. 
- No editor de consultas, insira esta instrução - CREATE MODELe 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_sentimentserá 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. 
bq
- 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 
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 tabela bigquery-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 as solicitações.
Console
- No console do 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.PREDICTe 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:   
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 ) )'