7 passos para criar uma Inteligência Artificial no Google Vertex AI

Conteúdos deste artigo:

Criar soluções inovadoras é essencial para manter a sua empresa ou projeto competitivos, uma das melhores formas de fazer isso é utilizando dados. Seja para criação de uma análise preditiva, Processamento de Linguagem Natural ou reconhecimento de imagem, iremos precisar de uma equipe super completa para começar a implementação, certo?!

Na verdade, não necessariamente!

Nesse artigo, iremos te guiar no desenvolvimento de uma solução simples de Análise Sentimental, utilizando a nova ferramenta da Google, a Vertex AI. Nela, é possível desenvolver soluções de Machine Learning de ponta a ponta, desde a ETL até a previsão de novos dados, utilizando o mínimo de código possível!

Mas o que é o Google Vertex AI?

Vertex AI é uma ferramenta que unifica os serviços para criação de ML do Google Cloud em uma única UI e API. Assim, é possível criar pipelines completas e escaláveis, contemplando da ETL ao Endpoint de previsão. Isso tudo é feito de forma super flexível, permitindo o uso de dados em diversos formatos (texto, tabular, imagem, vídeo), sendo modelados utilizando AutoML ou códigos customizados de treinamento.

Ah, o projeto que faremos hoje vai utilizar o AutoML para definir o modelo de treinamento, sendo a escolha ideal para pôr um MVP (Mínimo Produto Viável) no ar e começar a avalir se o projeto funciona. Com o tempo, após validação do MVP, será necessário aprimorar a IA. O melhor de tudo é que, como o Vertex AI é super flexível, o processo de experimentação e melhoria da pipelene é bem mais simples!

Sobre os dados que utilizaremos no Google Vertex AI

Suponha que você tem como objetivo ajudar pessoas que estão passando por dificuldades emocionais. Você percebeu que é possível reconhecer, por meio de suas postagens no Twitter, aqueles que precisam de ajuda. Imagine também que você é um profissional super capacitado para ajudar essas pessoas, e sua técnica funciona muito bem. Agora, “SÓ” falta encontrar elas!

Se buscar essas pessoas apenas olhando, literalmente, por tweets, o processo vai ser beeem lento e, provavelmente, inviável. Mas imagine agora que você pode passar milhões de comentários por um “filtro”, tendo que ler somente aqueles que têm grande chance de ser relacionados à uma pessoa que pode, de alguma forma, estar deprimida. Bem melhor, não?

Com o intuito de reconhecer essas pessoas de forma rápida e eficaz, iremos usar uma IA, treinada a partir de uma lista de textos já categorizados, para avaliar se os posts de um usuário podem refletir um comportamento depressivo.

Para isso, utilizaremos uma tabela disponibilizada no Kaggle neste link.

Observação: apesar de ser possível detectar padrões de comportamento utilizando Machine Learning, a identificação e diagnóstico de doenças mentais devem ser feitos por um profissional certificado da área da saúde.

De forma resumida, esses serão os passos que seguiremos:

  • Etapa 0: Configuração do projeto e ambiente
  • Etapa 1: Acessando os dados
  • Etapa 2: ‘Jogando’ os dados para o Cloud Storage
  • Etapa 3: Criar um conjunto de dados
  • Etapa 4: Treinando o modelo
  • Etapa 5: Avaliação do modelo
  • Etapa 6: Deploy
  • Etapa 7: Fazer previsões

0. Configuração do projeto e ambiente

Para desenvolver esse projeto, você deve ter acesso à Google Cloud Platform, utilizando uma conta com créditos disponíveis. Se você estiver começando agora, pode criar uma conta na GCP de forma gratuíta, e ainda ganha $300 para testar as ferramentas.

Para configurar o seu ambiente e habilitar a API do Vertex AI, siga o tutorial disponibilizado pelo Google.

1. Acessando os dados

Você pode baixar os dados que utilizaremos neste exemplo por meio desse link do Kaggle.

Precisaremos fazer algumas pequenas modificações na estrutura dos dados, de forma que ele esteja adequado para ser usado no AutoML. Você pode ler mais sobre a formatação, de acordo com o tipo de projeto, nesse link.

2. ‘Jogando’ os dados para o Cloud Storage

Para armazenar nossos dados na Cloud, e então utilizá-los no treinamento do modelo, precisamos criar um Bucket na Cloud Store. Como prometemos fazer o processo com o mínimo de código possível, utilizaremos apenas o console da GCP.

google vertex ai
  • Preencha as informações conforme sua necessidade. Para mais informações sobre cada um dos campos, acesse esse link.

    Tendo criado o Bucket, abra-o e clique em “Fazer Upload de Arquivos“. Selecione o arquivo ‘sentiment_tweets_new.csv’, contendo os dados que iremos usar.

google vertex ai

3. Criar um conjunto de dados

Agora, montaremos o nosso conjunto de dados. É aqui que definiremos o tipo de análise que será utilizada. Nesse caso, faremos uma análise de sentimento em texto.

google vertex ai

Na hora de definir a importação dos dados, iremos selecionar o arquivo .csv presente no Bucket que criado no início do projeto.

google vertex ai

Tendo montado o conjunto de dados, é muito importante avaliarmos a dispersão deles e como são constituídos. Na aba “Analisar”, é possível ter a visão de todas as variáveis que constituiem o seu modelo de dados, inclusive aquelas que serão preditas.

google vertex ai

4. Treinando o modelo

Tendo o conjunto de dados criado, podemos treinar o nosso modelo. Para isso, clicamos em Treinar Novo Modelo.

google vertex ai

Como optamos por desenvolver um projeto com o mínimo de código possível, iremos utilizar o AutoML para o treinamento.

google vertex ai

Por fim, basta definir a quantidade de dados que serão destinados para treinamento, validação e teste dos resultados. Neste projeto, usamos os valores padrões sugeridos.

Para treinar o modelo, basta clicar em Iniciar Treinamento e esperar até que o processo seja concluído!

google vertex ai

5. Avaliação do modelo

Quando o treinamento estiver finalizado, podemos avaliar a performance resultante. Para isso, basta abrir a aba Modelos e clicar no que acabamos de treinar.

Na aba Avaliar, conseguimos ver de cara a Precisão:

google vertez ai

Mas o mais importante é considerar os valores apresentados na Matriz de confusão. Nela, vemos os valores previstos corretamente e incorretamente para cada rótulo definido.

google vertex ai

Para você entender um pouco a importância da matriz de confusão, vamos imaginar o seguinte exemplo:

Foi proposto desenvolver uma IA para avaliar se uma pessoa tem determinada doença. 1% das pessoas no grupo de estudo possuem essa doença.

Após os treinamentos, a aplicação está atingindo 99% de acerto. Isso é bom? Depende!

Se um médico, de “olhos vendados”, afirmar que todas aquelas pessoas no grupo de estudo NÃO têm a doença, qual será a precisão do médico? Também 99%.

google vertex ai

Ou seja, o médico de “olhos vendados”, mesmo com 99% de acerto, não previu, corretamente, nenhum paciente com a doença!

Isso acontece porque estamos apenas olhando para o desempenho geral, e não para cada um dos rótulos. Nesse exemplo, “Ter a doença” e “Não ter a doença”.

6. Deploy

Depois de ter avaliado o seu modelo, para fazer o deploy, basta trocar de aba para “Implante e Teste”.

Para criar o Endpoint, precisamos apenas definir o nome. O tráfego fica em 100% pois temos apenas um modelo. Em casos mais avançados, podemos dividir os tráfegos entre mais de um modelo, de forma que seja possível a validação de novas soluções.

7. Fazer previsões

Pronto! Temos nosso modelo treinado e preparado para receber novas previsões. Antes de sairmos para fazer a conexão de alguma aplicação ao nosso Endpoint, vamos fazer um teste.

google vertex ai

Parece que está funcionando!!

Agora, iremos testar o nosso Endpoint com uma conexão utilizando Python. Para que essa etapa funcione, você deve ter autenticado as credenciais do seu projeto. Para saber mais sobre, leia aqui.

Utilizaremos o seguinte código exemplo, sugerido pela Google, para acessar nossa API:

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# [START aiplatform_predict_text_sentiment_analysis_sample]
from google.cloud import aiplatform
from google.cloud.aiplatform.gapic.schema import predict
from google.protobuf import json_format
from google.protobuf.struct_pb2 import Value


def predict_text_sentiment_analysis_sample(
    project: str,
    endpoint_id: str,
    content: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.PredictionServiceClient(client_options=client_options)
    instance = predict.instance.TextSentimentPredictionInstance(
        content=content,
    ).to_value()
    instances = [instance]
    parameters_dict = {}
    parameters = json_format.ParseDict(parameters_dict, Value())
    endpoint = client.endpoint_path(
        project=project, location=location, endpoint=endpoint_id
    )
    response = client.predict(
        endpoint=endpoint, instances=instances, parameters=parameters
    )
    print("response")
    print(" deployed_model_id:", response.deployed_model_id)
    # See gs://google-cloud-aiplatform/schema/predict/prediction/text_sentiment.yaml for the format of the predictions.
    predictions = response.predictions
    for prediction in predictions:
        print(" prediction:", dict(prediction))
# [END aiplatform_predict_text_sentiment_analysis_sample]

predict_text_sentiment_analysis_sample(
    project = 'NOME DO PROJETO',
    endpoint_id = 'ENDPOINT-ID',
    content = 'TEXTO PARA AVALIAR',
    location = 'us-central1', #Lozalização, por padrão, é us-central1. Modificar de acordo com o que você definiu na Endpoint
    api_endpoint = "us-central1-aiplatform.googleapis.com"
    )

Atenção!

Nesse projeto, utilizamos um banco de dados público, tendo em vista que é somente um exemplo. Deixa eu te mostrar o que pode acontecer quando sua base não é bem preparada:

google vertex ai

Nesse caso, o termo depressão foi usado em um contexto de geologia, todavia, foi categorizado como o estado emocional!

Este projeto foi desenvolvido com o objetivo de demonstrar o desenvolvimento de uma solução no Vertex AI. Em um projeto real, deve-se atentar para qualidade dos dados. O seu conjunto de dados deve abranger todos os casos que seu negócio atinge, e deve ter uma quantidade razoável de linhas para cada um deles.

Resumindo

Utilizar inteligência de dados em um projeto é o “sonho de consumo” de todo empreendedor. Todavia, implantar tecnologias nessa área pode parecer difícil e custoso. Mas depois desse tutorial, você já percebeu que não é bem assim, né?!

Como vimos nesse artigo, criar um modelo de predição utilizando Vertex AI pode ser extremamente simples e eficaz. E a partir de hoje, você já pode colocar em prática as ideias que ficam “pipocando” em sua mente!

Escrito por Vittorio Girardi