1. Visão geral
Neste laboratório, você vai usar Vertex AI para treinar e disponibilizar um modelo com dados tabulares. Essa é a mais nova oferta de produtos de IA no Google Cloud e está atualmente em pré-lançamento.
Conteúdo do laboratório
Você vai aprender a:
- Fazer upload de um conjunto de dados gerenciado para a Vertex AI
- Treinar um modelo com o AutoML
- Implantar seu modelo de AutoML treinado em um endpoint e usar esse endpoint para coletar previsões
O custo total para executar este laboratório no Google Cloud é de cerca de US$22.
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 nos produtos destacados abaixo: AutoML para dados tabulares, Prediction e Workbench.

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 do Vertex AI Workbench
Na seção Vertex AI do Console do Cloud, clique em "Workbench":

Em Notebooks gerenciados pelo usuário, clique em Novo notebook:

Em seguida, selecione a versão mais recente do tipo de instância do TensorFlow Enterprise (com LTS) sem GPUs:

Use as opções padrão e clique em Criar.
Etapa 5: abrir o notebook
Quando a instância tiver sido criada, selecione Abrir o JupyterLab:

Os dados que vamos usar para treinar nosso modelo são deste conjunto de dados de detecção de fraude de cartão de crédito. Vamos usar uma versão desse conjunto de dados disponibilizada publicamente no BigQuery.
4. Crie um conjunto de dados gerenciado
Na Vertex AI, é possível criar conjuntos de dados gerenciados para uma variedade de tipos de dados. Você pode gerar estatísticas sobre esses conjuntos de dados e usá-las para treinar modelos com o AutoML ou com seu próprio código de modelo personalizado.
Etapa 1: criar um conjunto de dados
No menu Vertex do console, selecione Conjuntos de dados:

Neste laboratório, vamos criar um modelo de detecção de fraude para determinar se uma transação com cartão de crédito específica deve ser classificada como fraudulenta.
Na página "Conjuntos de dados", dê um nome ao conjunto de dados, selecione Tabular e Regressão/classificação. Em seguida, crie o conjunto de dados:

Há algumas opções para importar dados para conjuntos de dados gerenciados na Vertex:
- Fazer upload de um arquivo local do computador
- Selecionar arquivos do Cloud Storage
- Selecionar dados do BigQuery
Aqui, vamos fazer upload de dados de uma tabela pública do BigQuery.
Etapa 2: importar dados do BigQuery
Escolha "Selecionar uma tabela ou visualização do BigQuery" como método de importação e copie o seguinte para a caixa Tabela do BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Em seguida, selecione Continuar:

Depois de importar o conjunto de dados, você verá algo como o seguinte:

Se quiser, clique em Gerar estatísticas para conferir mais informações sobre esse conjunto de dados, mas isso não é necessário antes de prosseguir para a próxima etapa. Este conjunto de dados contém transações reais de cartão de crédito. A maioria dos nomes das colunas foi omitida, e é por isso que são chamados V1, V2 etc.
5. Treinar um modelo com o AutoML
Depois de fazer upload do conjunto de dados gerenciado, estamos prontos para treinar um modelo com esses dados. Vamos treinar um modelo de classificação para prever se uma transação específica é fraudulenta. Há duas opções de modelos de treinamento na Vertex AI:
- AutoML: treine modelos de alta qualidade com esforço mínimo e experiência em ML.
- Treinamento personalizado: execute seus aplicativos de treinamento personalizados na nuvem usando um dos contêineres pré-criados do Google Cloud ou seus próprios.
Neste laboratório, vamos usar o AutoML para treinamento.
Etapa 1: iniciar o job de treinamento
Na página de detalhes do conjunto de dados em que você parou na etapa anterior, selecione Treinar modelo novo no canto superior direito. Selecione Classificação como o objetivo, deixe AutoML selecionado para o treinamento de modelo e clique em Continuar:

Dê um nome ao modelo ou use o padrão. Em Coluna de destino , selecione Classe. Esse é um número inteiro que indica se uma determinada transação foi fraudulenta (0 para não fraude, 1 para fraude).
Em seguida, selecione Continuar:

Nesta etapa, role para baixo e clique para expandir Opções avançadas. Como esse conjunto de dados não tem balanceamento (menos de 1% dos dados contém transações fraudulentas), escolha a opção AUC PRC , que maximiza a recuperação de precisão para a classe menos comum:

Selecione Continuar e prossiga para a última etapa (computação e preços). Aqui, insira 1 como o número de horas de uso do nó para o orçamento e deixe a parada antecipada ativada. Treinar seu modelo de AutoML por uma hora de computação normalmente é um bom começo para entender se há uma relação entre os atributos e o rótulo que você selecionou. Depois, é possível modificar os atributos e treinar mais para melhorar o desempenho do modelo. Em seguida, selecione Iniciar treinamento.
Você vai receber um e-mail quando o job de treinamento for concluído. O treinamento vai levar um pouco mais de uma hora para considerar o tempo de ativação e desativação dos recursos.
6. Explore as métricas de avaliação de modelo
Nesta etapa, vamos conferir o desempenho do nosso modelo.
Depois que o job de treinamento de modelo for concluído, navegue até a guia Modelos na Vertex. Clique no modelo que você acabou de treinar e confira a guia Avaliar. Há muitas métricas de avaliação aqui. Vamos focar em duas: a Matriz de confusão e a Importância do recurso.
Etapa 1: entender a matriz de confusão
Uma matriz de confusão informa a porcentagem de exemplos de cada classe no nosso conjunto de teste que o modelo previu corretamente. No caso de um conjunto de dados desequilibrado como o que estamos tratando, essa é uma medida melhor do desempenho do nosso modelo do que a precisão geral.
Tenha em mente que menos de 1% dos exemplos no nosso conjunto de dados foram transações fraudulentas. Logo, se a acurácia do modelo for de 99%, é possível que ele esteja adivinhando aleatoriamente a classe não fraudulenta em 99% das vezes. Por esse motivo, observar a precisão do modelo para cada classe é uma métrica melhor.
Se você rolar para baixo na guia Avaliar, verá uma matriz de confusão que tem uma aparência semelhante a essa (as porcentagens exatas podem variar):

A matriz de confusão mostra que nosso modelo inicial consegue classificar corretamente 85% dos exemplos fraudulentos no nosso conjunto de teste. Isso é muito bom, especialmente considerando o desequilíbrio significativo do conjunto de dados. Em seguida, podemos tentar treinar nosso modelo por mais horas de computação para ver se podemos melhorar esse valor de 85%.
Etapa 2: analisar a importância do recurso
Abaixo da matriz de confusão, você verá um gráfico de importância do recurso semelhante a este:

Isso mostra os recursos que forneceram o maior indicador para nosso modelo ao fazer previsões. A importância do recurso é um tipo de IA explicável, um campo que inclui vários métodos para reunir mais informações sobre um modelo de ML que está fazendo previsões. O gráfico de importância do recurso exibido aqui é calculado como um agregado, observando todas as previsões do nosso modelo no conjunto de teste. Ele mostra os recursos mais importantes em um lote de exemplos.
Este gráfico seria mais interessante se a maioria dos recursos no nosso conjunto de dados não fosse obscurecida. Por exemplo, podemos aprender que o tipo de transação (transferência, depósito etc.) foi o maior indicador de fraude.
Em um cenário do mundo real, esses valores de importância do atributo podem ser usados para ajudar a melhorar nosso modelo e ter mais confiança nas previsões dele. Podemos decidir remover os atributos menos importantes na próxima vez que treinarmos um modelo ou combinar dois dos nossos atributos mais significativos em um cruzamento de atributos para ver se isso melhora o desempenho do modelo.
Aqui estamos analisando a importância do recurso em um lote, mas também é possível conferir a importância do recurso para previsões individuais na Vertex AI. Vamos mostrar como fazer isso depois de implantar nosso modelo.
7. Implantação do modelo em um endpoint
Agora que temos um modelo treinado, 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 fraud_v1, deixe o acesso definido como Padrão e clique em Continuar.
Deixe a divisão de tráfego e o tipo de máquina como as configurações padrão, clique em Concluído e depois em Continuar.
Não vamos usar o monitoramento de modelos para esse endpoint. Portanto, deixe essa opção desmarcada 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
Vamos mostrar os dois aqui.
Etapa 1: receber previsões de modelo na IU
Na página do modelo em que o endpoint é mostrado (onde paramos na última etapa), role para baixo até a seção Teste seu modelo:

Aqui, a Vertex AI escolheu valores aleatórios para cada um dos atributos do nosso modelo que podemos usar para receber uma previsão de teste. Você pode mudar esses valores se quiser. Role até a parte de baixo da página e selecione Prever.
Na seção Resultado da previsão da página, você verá a porcentagem prevista do seu modelo para cada classe. Uma pontuação de confiança de 0.99 para a classe 0, por exemplo, significa que seu modelo acha que este exemplo tem 99% de chance de não ser fraudulento.
Etapa 2: receber previsões de modelo com a API Vertex AI
A IU é uma ótima forma de confirmar que seu endpoint implantado está funcionando conforme o esperado, mas é provável que você queira receber as previsões dinamicamente por uma chamada de API REST. Para mostrar como receber previsões de modelo aqui, vamos usar a instância do Vertex Workbench 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 instalar o SDK Vertex:
!pip3 install google-cloud-aiplatform --upgrade --user
Depois adicione uma célula no seu notebook para importar o SDK e criar uma referência ao endpoint que você acabou de implantar:
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint(
endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)
Você terá que substituir dois valores no string endpoint_name acima pelo endpoint e número do seu projeto. O valor do Número do projeto pode ser encontrado no painel do projeto.
O seu ID do endpoint pode ser encontrado na seção de endpoints do console aqui:

Por último, faça uma previsão para seu endpoint copiando e executando o código a seguir em uma célula nova:
test_instance={
'Time': 80422,
'Amount': 17.99,
'V1': -0.24,
'V2': -0.027,
'V3': 0.064,
'V4': -0.16,
'V5': -0.152,
'V6': -0.3,
'V7': -0.03,
'V8': -0.01,
'V9': -0.13,
'V10': -0.18,
'V11': -0.16,
'V12': 0.06,
'V13': -0.11,
'V14': 2.1,
'V15': -0.07,
'V16': -0.033,
'V17': -0.14,
'V18': -0.08,
'V19': -0.062,
'V20': -0.08,
'V21': -0.06,
'V22': -0.088,
'V23': -0.03,
'V24': 0.01,
'V25': -0.04,
'V26': -0.99,
'V27': -0.13,
'V28': 0.003
}
response = endpoint.predict([test_instance])
print('API response: ', response)
Você verá uma previsão de cerca de .67 para a classe 0, o que significa que o modelo acha que há uma chance de 67% de que essa transação não seja fraudulenta.
Parabéns! 🎉
Você aprendeu a usar a Vertex AI para:
- Fazer upload de um conjunto de dados gerenciado
- Treinar e avaliar um modelo em dados tabulares usando o AutoML
- Implantar o modelo em um endpoint
- Receber previsões em um endpoint de modelo usando o SDK para Vertex
Para saber mais sobre partes diferentes da Vertex AI, acesse a documentação.
9. Revisão dos dados
Se você quiser continuar usando o notebook que criou neste laboratório, é recomendado que você o desligue quando não estiver usando. Na interface do Workbench no Console do Cloud, selecione o notebook e clique em Parar.
Se quiser excluir um notebook totalmente, simplesmente clique no botão Excluir no canto superior direito.
Para excluir o endpoint que você implantou, navegue até a seção Endpoints do console da Vertex AI e desimplante o modelo do 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":
