Previsão de classificação de filmes com o AutoML da Vertex AI

1. Introdução

Neste codelab, vamos criar um modelo de previsão de pontuação de filme usando o AutoML da Vertex AI e acionar o endpoint do modelo implantado no Cloud Functions em Java. O modelo é treinado com dados armazenados no BigQuery e registrados na Vertex AI. A lista de serviços pode ser composta em duas seções:

  1. Criação e implantação de modelos de ML
  2. Acionador para fazer previsões usando a API ML

Criação de modelo de ML:

  1. Origem dos dados de CSV para BigQuery
  2. Dados do BigQuery integrados à Vertex AI para criação de modelos do AutoML
  3. Modelo implantado no Vertex AI Model Registry para gerar a API do endpoint

Acionador para fazer previsões usando a API ML:

  1. Cloud Functions do Java para acionar a invocação do endpoint do modelo do AutoML implantado que recebe detalhes do filme como solicitação da interface e retorna a PONTUAÇÃO prevista do filme

Confira abaixo a visão geral da arquitetura do aplicativo:

5ae50607c0f2db20.png

A aplicação da arquitetura acima está fora do escopo deste codelab, mas se você também quiser desenvolver o aplicativo cliente, consulte o blog.

Vamos nos aprofundar nas etapas de implementação.

O que você vai criar

Você vai criar um

  • Um conjunto de dados do BigQuery para conter os componentes da tabela e do modelo
  • Modelo de AutoML da Vertex AI (criar e implantar)
  • Gatilho do Cloud Functions em Java para fazer previsões usando a API ML

2. Requisitos

  • Use um navegador, como o Chrome ou o Firefox.
  • Tenha um projeto do Google Cloud com o faturamento ativado.

Confira abaixo os pré-requisitos:

Criar seu projeto

  1. No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
  2. Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
  3. Acesse o BigQuery para ativar a API. Também é possível abrir a IU da Web do BigQuery digitando o seguinte URL no navegador: https://console.cloud.google.com/bigquery

Ativar o Cloud Shell

  1. Você usará o Cloud Shell, um ambiente de linha de comando em execução no Google Cloud que vem pré-carregado com bq. No console do Cloud, clique em Ativar o Cloud Shell no canto superior direito: 6757b2fb50ddcc2d.png
  2. Depois de se conectar ao Cloud Shell, você vai ver que sua conta já está autenticada e que o projeto está configurado com seu ID do projeto. Execute o seguinte comando no Cloud Shell para confirmar se a conta está autenticada:
gcloud auth list
  1. Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
  1. Se o projeto não estiver definido, use este comando:
gcloud config set project <PROJECT_ID>

Consulte a documentação para ver o uso e os comandos gcloud.

3. Como preparar dados de treinamento

Esta é uma etapa importante em todos os projetos, produtos e aplicativos relacionados a dados que requer muita experiência no domínio, além da tecnologia para preparar um conjunto de dados ideal e prepará-lo para seu projeto de ML. Neste codelab, vamos presumir que os dados já estão preparados e usar o arquivo de dados já processado.

4. Como criar e carregar o conjunto de dados

Um conjunto de dados do BigQuery é uma coleção de tabelas. Todas as tabelas em um conjunto de dados são armazenadas no mesmo local dos dados. Você também pode anexar controles de acesso personalizados para limitar o acesso a um conjunto de dados e às tabelas dele.

  1. No Cloud Shell, use o comando bq mk para criar um conjunto de dados chamado "movies".
bq mk --location=<<LOCATION>> movies

Defina o local como uma região (asia-south1). Lembre-se de defini-la também como a região para a etapa da VERTEX AI (as duas instâncias devem estar na mesma região).

  1. Verifique se você tem o arquivo de dados (.csv) pronto. Execute os comandos a seguir no Cloud Shell para clonar o repositório e navegar até o projeto:
git clone <<repository link>>

cd movie-score
  1. Use o comando "bq load" para carregar o arquivo CSV em uma tabela do BigQuery (você também pode fazer o upload diretamente da interface do BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. Consulte uma das três maneiras:

É possível interagir com o BigQuery de três maneiras. Testaremos duas delas: a. IU da Web do BigQuery b. O comando bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

Usei o BigQuery Web SQL Workspace para executar consultas. O SQL Workspace tem esta aparência:

109a0b2c7155e9b3.png

Use o comando bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. Como usar dados do BigQuery no AutoML da Vertex AI

Use seus dados do BigQuery para criar diretamente um modelo do AutoML com a Vertex AI. Também é possível executar o AutoML pelo BigQuery, registrar o modelo na Vertex AI e expor o endpoint. Consulte a documentação do BigQuery AutoML. Neste exemplo, porém, usaremos o AutoML da Vertex AI para criar nosso modelo.

Como criar um conjunto de dados da Vertex AI

Acesse a Vertex AI no console do Google Cloud, ative a API Vertex AI se ainda não tiver feito isso, expanda os dados e selecione "Conjuntos de dados". Depois, clique em "Criar conjunto de dados", selecione o tipo de dados TABULAR e a opção "Regressão / classificação" e clique em Criar:

4104c75c34cbd2d9.png

Selecionar a fonte de dados

Na próxima página, selecione uma fonte de dados. Escolha a opção "Selecionar uma tabela ou visualização do BigQuery" e selecione a tabela do BigQuery no campo "PROCURAR caminho do BigQuery". Clique em "Continuar".

Lembrete:a instância do BigQuery e os conjuntos de dados da Vertex AI precisam ter a mesma região para que a tabela do BigQuery apareça na Vertex AI.

b787ef18dbca4cff.png

Ao selecionar sua tabela/visualização de origem, na lista de navegação, lembre-se de clicar no botão de opção para continuar com as etapas abaixo. Se você clicar acidentalmente no nome da tabela/visualização, o Dataplex será aberto. Se isso acontecer com você, basta navegar de volta para a Vertex AI.

Treinar o modelo

  1. Depois que o conjunto de dados for criado, você verá a página "Analisar" com a opção de treinar um novo modelo. Clique aqui:

bf095263d57106de.png

  1. Deixe "Objetivo" como "Classificação", selecione a opção "AutoML" na primeira página e clique em "Continuar": e50597bc3f29894c.png
  2. Dê um nome ao modelo e selecione o nome da coluna de destino como "Score" no menu suspenso exibido e clique em "Continuar".
  3. Observe também que você pode marcar a opção "Exportar conjunto de dados de teste para o BigQuery" , o que facilita a visualização eficiente do conjunto de teste com os resultados no banco de dados sem uma camada de integração extra ou a necessidade de mover dados entre serviços.
  4. Na página seguinte, você poderá selecionar as opções de treinamento avançado necessárias e as horas em que pretende definir o modelo para treinamento. Lembre-se dos preços antes de aumentar o número de horas de uso do nó que quer usar no treinamento.

Clique em Iniciar treinamento para começar a treinar seu novo modelo.

e72b004a17849bd.png

Avaliar, implantar e testar o modelo

Quando o treinamento for concluído, clique em "Treinamento" (no título "Desenvolvimento do modelo" no menu à esquerda) e veja seu treinamento listado na seção "Pipelines de treinamento". Clique nele para acessar a página do Model Registry. Você precisa saber:

  1. Confira e avalie os resultados do treinamento 4767b4bbd7cf93fa.png
  2. Implantar e testar o modelo com o endpoint de API

Depois de implantar o modelo, é criado um endpoint de API que pode ser usado no aplicativo para enviar solicitações e receber os resultados da previsão do modelo na resposta.

95fb4495618174f0.png

Antes de prosseguir, anote o local, o ID e outros detalhes do endpoint do modelo implantado na seção de endpoint da Vertex AI.

6. Função do Cloud do Java para acionar a invocação de ML

Lembra-se de como temos o endpoint e outros detalhes da etapa de implantação de ML? Vamos usar isso aqui e, como estamos usando o Cloud Functions em Java, usaremos o pom.xml para lidar com as dependências. Usamos a biblioteca google-cloud-aiplatform para consumir a API AutoML da Vertex AI.

  1. Pesquise "Cloud Functions" no console do Google Cloud e clique em "Criar função".
  2. Insira os detalhes da configuração, como ambiente, nome da função, região, gatilho (neste caso, HTTPS), autenticação de sua escolha e ative "Exigir HTTPS". e clique em "Próximo"/"Salvar"

a68272022df062f2.png

  1. Na próxima página, selecione ambiente de execução (Java 11), código-fonte (in-line ou upload) e comece a editar

13df616369ca5951.png

  1. Copie os arquivos java e pom.xml do repositório e cole os respectivos arquivos no editor in-line. Se você estiver usando o editor local (recomendado), clone a origem do repositório.
  2. Altere o ID do projeto, o ID do endpoint, a localização e o endpoint no arquivo de origem .java para este exemplo. A prática recomendada é usar o Secret Manager para armazenar credenciais
  3. Para o escopo deste codelab, comente as partes do MongoDB na classe .java no seu código-fonte copiado

Implante a função depois que todas as alterações forem concluídas. Você verá o URL do endpoint que pode ser usado no aplicativo cliente para enviar solicitações a essa função do Cloud e receber a pontuação do filme como resposta.

7. Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta postagem, siga estas etapas:

  1. No console do Google Cloud, acesse a página 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.

8. Parabéns

Parabéns! Você criou e implantou um modelo de previsão de pontuação de filme no AutoML da Vertex AI e acionou o modelo implantado usando o Cloud Functions.