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 filmes usando a Vertex AI AutoML e acionar o endpoint do modelo implantado pelo Java Cloud Functions. O modelo é treinado com dados armazenados no BigQuery e registrados na Vertex AI. A lista de serviços pode ser composta por duas seções:

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

Criação de modelos de ML:

  1. 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 de endpoint

Acionar a API ML para fazer previsões:

  1. Funções Java do Cloud para acionar a invocação do endpoint do modelo AutoML implantado, que recebe os detalhes do filme como solicitação da IU e retorna a NOTA prevista do filme

Confira abaixo a visão geral da arquitetura de alto nível do aplicativo:

5ae50607c0f2db20.png

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

Vamos conferir as 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 AutoML da Vertex AI (criação e implantação)
  • Acionador do Cloud Functions Java para prever usando a API de ML

2. Requisitos

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

Confira os pré-requisitos abaixo:

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 seu navegador: https://console.cloud.google.com/bigquery

Ativar o Cloud Shell

  1. Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud que vem pré-carregado com bq: no Cloud Console, 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

Essa é uma etapa importante em todos os projetos, produtos e apps relacionados a dados, que exige muita experiência no domínio, além da tecnologia, para preparar um conjunto de dados ideal e deixá-lo pronto para seu projeto de ML. Para este codelab, vamos supor que os dados já estão preparados e usar este arquivo de dados já processado.

4. Criação e carregamento do 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 de dados. Também é possível anexar controles de acesso personalizados para limitar o acesso a um conjunto de dados e suas tabelas.

  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). Defina essa região também para a etapa da Vertex AI.

  1. Confira se você tem o arquivo de dados (.csv) pronto. Execute os comandos abaixo 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 upload diretamente pela 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. Faça a consulta de uma destas três maneiras:

Podemos interagir com o BigQuery de três maneiras, e vamos testar duas delas: a. Interface da Web do BigQuery b. O comando bq c. API

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

Usei o espaço de trabalho SQL da Web do BigQuery para executar consultas. O espaço de trabalho SQL tem esta aparência:

109a0b2c7155e9b3.png

Usando 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 um modelo AutoML diretamente com a Vertex AI. Também é possível executar o AutoML no BigQuery, registrar o modelo com a VertexAI e expor o endpoint. Consulte a documentação do BigQuery AutoML. Neste exemplo, vamos usar 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, abra os dados e selecione "Datasets", 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 no campo NAVEGAR do 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 a tabela/visualização de origem na lista de navegação, clique no botão de opção para continuar com as etapas abaixo. Se você clicar acidentalmente no nome da tabela/visualização, será direcionado ao Dataplex. Se isso acontecer, basta voltar à Vertex AI.

Treinar o modelo

  1. Depois que o conjunto de dados for criado, a página "Analisar" vai aparecer com a opção de treinar um novo modelo. Clique nele:

bf095263d57106de.png

  1. Deixe a opção "Classificação" como objetivo, selecione a opção "AutoML" na primeira página e clique em "Continuar": e50597bc3f29894c.png
  2. Dê um nome ao modelo e selecione "Pontuação" como nome da coluna de destino no menu suspenso que aparece e clique em "Continuar".
  3. Você também pode marcar a opção "Exportar conjunto de dados de teste para o BigQuery", que facilita a visualização do conjunto de teste com resultados no banco de dados de maneira eficiente, sem uma camada extra de integração ou a necessidade de mover dados entre serviços.
  4. Na próxima página, você pode selecionar as opções de treinamento avançado que precisar e definir o tempo de treinamento do modelo. Antes de aumentar o número de horas de nó que você quer usar para treinamento, considere os preços.

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

e72b004a17849bd.png

Avaliar, implantar e testar o modelo

Quando o treinamento for concluído, você poderá clicar em "Treinamento" (sob o título "Desenvolvimento de modelo" no menu à esquerda) e conferir o treinamento listado na seção "Pipelines de treinamento". Clique nele para acessar a página "Modelo de registro". Você precisa saber:

  1. Conferir e avaliar os resultados do treinamento 4767b4bbd7cf93fa.png
  2. Implantar e testar o modelo com o endpoint da API

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

95fb4495618174f0.png

Antes de passar para a próxima seção, anote o ID, o local e outros detalhes do endpoint do modelo implantado na seção de endpoints da Vertex AI.

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

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

  1. Pesquise o Cloud Functions no console do Google Cloud e clique em "Criar função".
  2. Insira os detalhes de configuração, como ambiente, nome da função, região, gatilho (neste caso, HTTPS), autenticação, ative a opção "Exigir HTTPS" e clique em "Próxima/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 nos respectivos arquivos no editor inline. Se você estiver usando o editor local (recomendado), clone a origem do repositório.
  2. Mude o ID do projeto, o ID do endpoint, o local e o endpoint no arquivo de origem .java para este exemplo, mas lembre-se de que 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 código-fonte copiado.

Implante a função depois que todas as mudanças forem concluídas. 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 filmes no AutoML da Vertex AI e acionou o modelo implantado nas Funções do Cloud.