Vertex AI: exportar e implantar um modelo de machine learning do BigQuery para previsão

1. Visão geral

Neste laboratório, você vai treinar um modelo com o BigQuery Machine Learning e, em seguida, vai exportar e implantar esse modelo na Vertex AI. Esta é a mais nova oferta de produto de IA no Google Cloud.

Conteúdo do laboratório

Você vai aprender a:

  • Treinar um modelo com o BigQuery Machine Learning (BQML)
  • Exportar o modelo do BQML para o Cloud Storage
  • Implante o BQML treinado na Vertex AI
  • receba previsões em seu modelo implantado

O custo total da execução deste laboratório no Google Cloud é de aproximadamente US$ 2.

2. Introdução à Vertex AI

Este laboratório usa a mais nova oferta de produtos de IA disponível no Google Cloud. A Vertex AI integra as ofertas de ML do Google Cloud em uma experiência de desenvolvimento intuitiva. Anteriormente, modelos treinados com o AutoML e modelos personalizados eram acessíveis por serviços separados. A nova oferta combina ambos em uma única API, com outros novos produtos. Você também pode migrar projetos existentes para a Vertex AI. Se você tiver algum feedback, consulte a página de suporte.

A Vertex AI inclui vários produtos diferentes para dar suporte a fluxos de trabalho integrais de ML. Os produtos destacados abaixo são o foco deste laboratório: o Prediction e os Notebooks.

Visão geral do produto Vertex

3. Configurar o ambiente

Para executar este codelab, você vai precisar de um projeto do Google Cloud Platform com o faturamento ativado. Para criar um projeto, siga estas instruções.

Etapa 1: ativar a API Compute Engine

Acesse o Compute Engine e selecione Ativar, caso essa opção ainda não esteja ativada. Você vai precisar disso para criar sua instância de notebook.

Etapa 2: ativar a API Vertex AI

Navegue até a seção "Vertex AI" do Console do Cloud e clique em Ativar API Vertex AI.

Painel da Vertex AI

Etapa 3: criar uma instância de Notebooks

Vamos usar o Notebooks para receber previsões depois da implantação do modelo. Na seção "Vertex AI" do console do Cloud, clique em Notebooks:

Menu da Vertex AI

Selecione Nova instância. Em seguida, selecione o tipo de instância TensorFlow Enterprise 2.3 sem GPUs:

Instância TFE

Use as opções padrão e clique em Criar. Depois que a instância for criada, selecione Abrir JupyterLab:

Abrir notebook do CAIP

4. Treinar um modelo do BigQuery ML

O BigQuery ML permite treinar modelos personalizados de machine learning usando dados armazenados no BigQuery. É possível treinar e receber previsões de modelos em SQL. Neste laboratório, vamos usar um conjunto de dados disponível publicamente no BigQuery para prever a probabilidade de inadimplência em um pagamento com cartão de crédito.

Etapa 1: criar um conjunto de dados do BigQuery no projeto

Para treinar um modelo no BigQuery ML, você precisa criar um conjunto de dados no seu projeto para armazenar esse modelo. Clique no seu projeto na barra de menus à esquerda e selecione Criar conjunto de dados:

Criar conjunto de dados do BQ

No campo ID do conjunto de dados, digite cc_default. Deixe os outros campos como estão e clique em Criar conjunto de dados.

Etapa 2: executar uma consulta CREATE MODEL

No Editor de consultas do BigQuery, execute a seguinte consulta CREATE MODEL para criar e treinar um modelo do BigQuery ML no conjunto de dados público que vamos usar. Substitua your-project pelo nome do projeto do Cloud:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Isso vai criar um modelo de regressão logística que gera um valor numérico de 0 a 1, indicando que a execução leva cerca de um minuto. Quando estiver concluído, você verá o modelo no seu conjunto de dados:

Detalhes do modelo do BQML

Clique no modelo para conferir as métricas de treinamento e avaliação.

5. Exportar seu modelo do BigQuery ML

Com um modelo do BQML treinado, é possível usar a sintaxe SQL do BQML para receber previsões ou exportar o modelo para implantá-lo em outro lugar. Aqui vamos exportar nosso modelo para que possa ser implantado na Vertex AI para disponibilizar o modelo de maneira escalonável e receber previsões.

Etapa 1: criar um bucket do Cloud Storage para o modelo

Nos detalhes do modelo, clique em Exportar modelo:

Exportar modelo do BQML

Será solicitado que você informe o local do Google Cloud Storage (GCS) para onde quer exportar os recursos do seu modelo. Se você ainda não tem um bucket do GCS, não se preocupe. Vamos criar um. Primeiro, clique em Procurar:

Procurar buckets do GCS

Clique no ícone + para criar um novo bucket:

Novo bucket do GCS

Dê um nome exclusivo a ele (os nomes dos buckets do Storage precisam ser globalmente exclusivos). Clique em Continuar. Na próxima etapa, em Tipo de local, selecione Região e escolha uma das opções no menu suspenso:

Local do bucket

Use a classe de armazenamento padrão e, no controle de acesso, verifique se Uniforme está selecionado:

Controle de acesso uniforme

Clique em continuar e use os padrões para o restante das opções. Em seguida, clique em Criar.

Etapa 2: exportar o modelo do BQML

Depois de criar o novo bucket, insira model-assets (ou qualquer outra opção) no campo Nome e clique em Selecionar:

Caminho de exportação do modelo

Em seguida, clique em Exportar. Isso vai criar um job no BigQuery para exportar o modelo no formato SavedModel do TensorFlow para o bucket do GCS recém-criado que você especificou. A exportação vai levar cerca de um minuto.

Enquanto seu modelo estiver sendo exportado, acesse a seção "Armazenamento" do console do Cloud. Quando o job for concluído, você verá os recursos do modelo exportados para o bucket que acabou de criar em um subdiretório model-assets:

Recursos do modelo exportados

6. Importar o modelo para a Vertex AI

Nesta etapa, vamos fazer referência ao local de armazenamento do GCS onde acabamos de exportar os recursos do modelo para criar e importar o modelo para a Vertex AI.

Etapa 1: importar o modelo

No console do Cloud, navegue até a seção Modelos da Vertex AI. Selecione Importar:

Importação do modelo

Na primeira etapa, nomeie o modelo como predict_default. Selecione a mesma região em que você criou o bucket (us-central1, europe-west4 ou asia-east1. Depois clique em Continuar. Em Configurações do modelo, mantenha a opção "Importar artefatos do modelo em um novo contêiner pré-criado". selecionados.

No menu suspenso Framework do modelo, selecione TensorFlow. Em seguida, selecione 2.3 como a versão do framework.

No campo Local do artefato do modelo, clique em Procurar. Depois, clique no bucket do GCS que você criou e depois no diretório model-assets:

Caminho dos recursos do modelo

Em seguida, clique em Import. A importação do modelo vai levar alguns minutos. Depois disso, ele vai aparecer na seção de modelos do console do Cloud:

Seção "Modelos"

7. implante o modelo em um endpoint

Agora que fizemos o upload do nosso modelo, a próxima etapa é criar um endpoint na Vertex. Um recurso de modelo na Vertex pode ter vários endpoints associados a ele e você pode dividir o tráfego entre os endpoints.

Etapa 1: criar um endpoint

Na página do seu modelo, navegue até a guia Implantar e testar e clique em Implantar no endpoint:

Implantar e testar

Dê um nome ao endpoint, como default_pred_v1, mantenha as configurações de divisão de tráfego e selecione um tipo de máquina para a implantação do modelo. Usamos um n1-highcpu-2 aqui, mas você pode escolher o tipo de máquina que quiser.

Em seguida, selecione "Concluído" e clique em Continuar. Mantenha as configurações de localização selecionadas e clique em Implantar. Seu endpoint vai levar alguns minutos para ser implantado. Quando estiver concluído, você verá uma marca de seleção verde ao lado dele:

Endpoint implantado

Você está chegando perto! Agora você está pronto para receber previsões em seu modelo implantado.

8. Receba previsões no modelo implantado

Há algumas opções para coletar previsões de modelo:

  • IU da Vertex AI
  • API Vertex AI

Vamos mostrar como receber previsões pela API

Etapa 1: receber previsões de modelo com a API Vertex AI

Para mostrar como receber previsões de modelo, vamos usar a instância do notebook da Vertex que você criou no início deste laboratório.

Em seguida, abra a instância de notebook que você criou e abra um notebook Python 3 na tela de início:

Abrir Notebook

No notebook, execute o seguinte em uma célula para criar um exemplo de teste em um arquivo JSON chamado default-pred.json. Enviaremos este exemplo ao nosso modelo para uma previsão:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Depois, na interface da Vertex, clique em Sample Request para o endpoint que você acabou de implantar:

Exemplo de solicitação

Copie o código da Etapa 4 na guia "REST" no seu notebook e execute a célula:

Variáveis de solicitação

Em seguida, adicione uma variável para a região em que você criou o bucket e o modelo. Substitua your-region na string abaixo:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Por fim, faça uma solicitação de previsão para o endpoint com curl. Para isso, copie o código a seguir no seu notebook:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Você verá algo parecido com isto (os valores de previsão exatos variarão um pouco):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

Os valores em default_payment_next_month_probs mostram a probabilidade de cada classe. Para este exemplo, nosso modelo prevê que há uma chance de 81% de que essa pessoa não deixará de pagar o próximo pagamento. O valor .819 corresponde à classe 0 (não padrão).

Parabéns! 🎉

Você aprendeu a:

  • Treinar um modelo no BQML
  • Exportar o modelo do BQML para o Cloud Storage
  • Importar o modelo BQML para a Vertex AI para previsão
  • Criar um modelo da Vertex AI e implantá-lo em um endpoint
  • Receba previsões no endpoint implantado usando os notebooks da Vertex e o curl

Para saber mais sobre as diferentes partes da Vertex AI, consulte a documentação.

9. Limpeza

Se você quiser continuar usando o notebook que criou neste laboratório, é recomendado que você o desligue quando não estiver usando. A partir da IU de Notebooks no Console do Cloud, selecione o notebook e depois clique em Parar:

Interromper instância

Se quiser excluir o notebook completamente, basta clicar no botão Excluir no canto superior direito.

Para excluir o endpoint implantado, acesse a seção Endpoints do console da Vertex AI e clique no ícone de exclusão:

Excluir endpoint

Para excluir o bucket do Storage, use o menu de navegação do console do Cloud, acesse o Storage, selecione o bucket e clique em "Excluir":

Excluir armazenamento