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.
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.
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:
Selecione Nova instância. Em seguida, selecione o tipo de instância TensorFlow Enterprise 2.3 sem GPUs:
Use as opções padrão e clique em Criar. Depois que a instância for criada, selecione Abrir JupyterLab:
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:
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:
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:
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:
Clique no ícone + para criar um novo bucket:
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:
Use a classe de armazenamento padrão e, no controle de acesso, verifique se Uniforme está selecionado:
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:
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
:
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:
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:
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:
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:
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:
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:
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:
Copie o código da Etapa 4 na guia "REST" no seu notebook e execute a célula:
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:
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:
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":