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:
- Criação e implantação de modelos de ML
- Acionar a API ML para fazer previsões
Criação de modelos de ML:
- 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 de endpoint
Acionar a API ML para fazer previsões:
- 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:
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
- 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 seu navegador: https://console.cloud.google.com/bigquery
Ativar o Cloud Shell
- 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:
- 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
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.
- 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.
- 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
- 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
- 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:
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":
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.
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
- 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:
- Deixe a opção "Classificação" como objetivo, selecione a opção "AutoML" na primeira página e clique em "Continuar":
- Dê um nome ao modelo e selecione "Pontuação" como nome da coluna de destino no menu suspenso que aparece e clique em "Continuar".
- 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.
- 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.
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:
- Conferir e avaliar os resultados do treinamento
- 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.
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.
- Pesquise o Cloud Functions no console do Google Cloud e clique em "Criar função".
- 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".
- 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 nos respectivos arquivos no editor inline. Se você estiver usando o editor local (recomendado), clone a origem do repositório.
- 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.
- 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:
- 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 filmes no AutoML da Vertex AI e acionou o modelo implantado nas Funções do Cloud.