1. Visão geral
Neste laboratório, você vai treinar um modelo com o BigQuery Machine Learning e depois exportar e implantar esse modelo na Vertex AI. Essa é a mais nova oferta de produtos 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 da BQML para o Cloud Storage
- Implantar 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. Este laboratório se concentra nestes produtos em destaque: Vertex Prediction e 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 os Notebooks para receber previsões depois de implantar o modelo. Na seção Vertex AI do console do Cloud, clique em "Notebooks":

Em seguida, 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. Quando a instância tiver sido criada, selecione Abrir o JupyterLab:

4. Treinar um modelo do BigQuery ML
Com o BigQuery ML, é possível 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 no pagamento de um cartão de crédito.
Etapa 1: crie um conjunto de dados do BigQuery no projeto
Para treinar um modelo no BigQuery ML, você precisa criar um conjunto de dados no projeto para armazenar esse modelo. Clique no projeto na barra de menu à esquerda e selecione Criar conjunto de dados:

No campo ID do conjunto de dados, digite cc_default. Deixe os demais 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 seu projeto na nuvem:
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 entre 0 e 1, indicando que leva cerca de um minuto para ser executado. Quando a operação for concluída, o modelo vai aparecer no conjunto de dados:

Clique no modelo para conferir as métricas de treinamento e avaliação.
5. Exportar o modelo do BigQuery ML
Com um modelo treinado do BQML, podemos 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 possamos implantá-lo na Vertex AI e disponibilizá-lo em grande escala para receber previsões.
Etapa 1: criar um bucket do Cloud Storage para o modelo
Nos detalhes do modelo, clique em Exportar modelo:

Isso vai pedir que você insira o local do Google Cloud Storage (GCS) em que quer exportar os recursos do modelo. Se você ainda não tiver um bucket do GCS, não se preocupe. Vamos criar um. Primeiro, clique em Procurar:

Em seguida, clique no ícone + para criar um bucket:

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

Use a classe de armazenamento padrão e, em controle de acesso, verifique se a opção Uniforme está selecionada:

Clique em "Continuar" e use os valores padrão para as outras opções. Em seguida, clique em Criar.
Etapa 2: exportar o modelo do BQML
Com o novo bucket criado, insira model-assets (ou qualquer coisa que você queira) no campo Nome e clique em Selecionar:

Em seguida, clique em Exportar. Isso vai criar um job no BigQuery para exportar seu modelo no formato SavedModel do TensorFlow para o bucket do GCS recém-criado que você especificou. Isso vai levar cerca de um minuto.
Enquanto o modelo é exportado, acesse a seção "Storage" do console do Cloud. Quando o job for concluído, os ativos do modelo serão exportados para o bucket que você acabou de criar em um subdiretório model-assets:

6. Importar o modelo para a Vertex AI
Nesta etapa, vamos referenciar o local de armazenamento do GCS em que 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. Em seguida, selecione Importar:

Na primeira etapa, dê ao modelo o nome 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 de modelo em um novo contêiner predefinido" selecionada.
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, clique no bucket do GCS que você acabou de criar e clique no diretório model-assets:

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

7. implante o modelo em um endpoint
Agora que fizemos upload do 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 modelo, navegue até a guia Implantar e testar e clique em Implantar no endpoint:

Dê um nome ao endpoint, como default_pred_v1, deixe as configurações de divisão de tráfego como estão 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. Deixe as configurações de localização selecionadas como estão e clique em Implantar. Seu endpoint vai levar alguns minutos para ser implantado. Quando estiver concluído, uma marca de seleção verde vai aparecer 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
Aqui, 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 de Notebook do 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 no Menu inicial:

No notebook, execute o seguinte em uma célula para gravar um exemplo de teste em um arquivo JSON chamado default-pred.json. Vamos enviar 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"}
]
}
Em seguida, na interface da Vertex, clique em Exemplo de solicitação para o endpoint que você acabou de implantar:

Copie o código da Etapa 4 na guia REST para o 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 seu endpoint com curl copiando o seguinte código no 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ê vai ver algo parecido com isto (os valores exatos de previsão vão variar 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 deixe de pagar a próxima parcela. O valor .819 corresponde à classe 0 (não padrão).
Parabéns! 🎉
Você aprendeu a:
- Treinar um modelo no BQML
- Exportar o modelo da BQML para o Cloud Storage
- Importar o modelo do BQML para a Vertex AI para previsão
- Criar um modelo da Vertex AI e implantar em um endpoint
- Receber previsões no endpoint implantado usando notebooks da Vertex e 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. Na interface de Notebooks no console do Cloud, selecione o notebook e clique em Parar:

Se quiser excluir um notebook totalmente, clique 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":
