Fazer previsões com modelos remotos na Vertex AI

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 a 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.

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. Ative as APIs BigQuery, Vertex AI, Cloud Storage e BigQuery Connection.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar as APIs

  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 receberá todas as permissões necessárias do IAM para concluir este tutorial.

Se você estiver usando um projeto atual, faça o seguinte:

Verifique se você tem os seguintes papéis no projeto:

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.

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.

  1. No console do Google Cloud , acesse a página Model Registry da Vertex AI.

    Acessar o Model Registry

  2. Clique em Importar.

  3. Para Etapa 1: nome e região, faça o seguinte:

    1. Selecione Importar como novo modelo.

    2. Em Nome, insira bert_sentiment.

    3. Em Descrição, insira BQML tutorial model.

    4. 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.

    5. Clique em Continuar.

  4. Em Etapa 2: configurações do modelo, faça o seguinte:

    1. Selecione Importar artefatos de modelo em um novo contêiner predefinido.

    2. Na seção Configurações de contêiner pré-criado, faça o seguinte:

      1. Em Framework do modelo, escolha TensorFlow.

      2. Em Versão do framework do modelo, escolha 2.15.

      3. Em Tipo de acelerador, escolha GPU.

      4. Em Local do artefato do modelo, insira gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/.

      5. Mantenha os valores padrão das 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.

  1. No console Google Cloud , acesse a página Model Registry da Vertex AI.

    Acessar o Model Registry

  2. Na coluna Nome, clique em bert_sentiment.

  3. Clique na guia Implantar e testar.

  4. Clique em Implantar no endpoint.

  5. Para a etapa 1, Definir seu endpoint, faça o seguinte:

    1. Clique em Criar novo endpoint.

    2. Em Nome do endpoint, insira bert sentiment endpoint.

    3. Mantenha os outros valores como o padrão e clique em Continuar.

  6. Na etapa dois, Configurações do modelo, faça o seguinte:

    1. 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.

    2. 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.

    3. Mantenha os outros valores como padrão e clique em Implantar.

      Quando o modelo é implantado no endpoint, o status muda para Active.

    4. 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

  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"
  }
}

Criar uma conexão de recursos do Cloud do BigQuery

Você precisa ter uma conexão a recursos do Cloud para se conectar a um endpoint da Vertex AI.

Console

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

    Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.

  3. No painel Explorer, clique em Adicionar dados.

    A caixa de diálogo Adicionar dados é aberta.

  4. 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.

  5. Na seção Fontes de dados em destaque, clique em Vertex AI.

  6. Clique no card da solução Modelos da Vertex AI: federação do BigQuery.

  7. Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (Cloud Resource).

  8. No campo ID da conexão, insira bqml_tutorial.

  9. Verifique se a opção Multirregião — EUA está selecionada.

  10. Clique em Criar conexão.

  11. Na parte de baixo da janela, clique em Acessar a conexão. Outra opção é clicar em Conexões no painel Explorador e depois em us.bqml_tutorial.

  12. 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

  1. Criar uma conexão

    bq mk --connection --location=US --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE bqml_tutorial

    Substitua PROJECT_ID pelo ID do projetoGoogle Cloud . 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...
    
  2. 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á o seguinte:

    name                          properties
    1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Configurar o acesso à conexão

Conceda a função 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:

  1. Acessar a página AM e administrador

    Acessar IAM e administrador

  2. Clique em Conceder acesso.

  3. No campo Novos principais, insira o ID da conta de serviço da conexão de recurso do Cloud que você copiou anteriormente.

  4. No campo Selecionar um papel, escolha Vertex AI e, em seguida, selecione Usuário da Vertex AI.

  5. 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

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

    Acessar o 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 `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: model
icon.

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

bq

  1. 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.
  2. Depois de criar o modelo, verifique se ele aparece no conjunto de dados:

    bq ls -m bqml_tutorial

    O resultado será o seguinte:

    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 solicitações.

Console

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

    Acessar o BigQuery

  2. Na seção Criar novo, clique em Consulta SQL.

  3. 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 serão semelhantes a 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 `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

  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, para remover os recursos individuais usados neste tutorial:

  1. Exclua o modelo.

  2. Opcional: exclua o conjunto de dados.

  3. Desfaça a implantação do modelo e exclua o endpoint.

  4. Exclua o modelo do Model Registry.

  5. Exclua a conexão a recursos do Cloud.

A seguir