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:
- Criação e implantação de modelos de ML
- Acionador para fazer previsões usando a API ML
Criação de modelo de ML:
- Origem dos dados de CSV para BigQuery
- Dados do BigQuery integrados à Vertex AI para criação de modelos do AutoML
- Modelo implantado no Vertex AI Model Registry para gerar a API do endpoint
Acionador para fazer previsões usando a API ML:
- 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 de alto nível da arquitetura do aplicativo:
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
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
- Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
- 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
- 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:
- 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
- Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
- 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.
- 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).
- 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
- 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
- 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:
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:
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.
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
- 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:
- Deixe "Objetivo" como "Classificação", selecione a opção "AutoML" na primeira página e clique em "Continuar":
- Dê um nome ao modelo e selecione o nome da coluna de destino como "Score" no menu suspenso exibido e clique em "Continuar".
- 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.
- 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.
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:
- Confira e avalie os resultados do treinamento
- 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.
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.
- Pesquise "Cloud Functions" no console do Google Cloud e clique em "Criar função".
- 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"
- Na próxima página, selecione ambiente de execução (Java 11), código-fonte (in-line ou upload) e comece a editar
- 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.
- 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
- 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:
- No console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- 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.