FraudFinder: de dados brutos a IA com a Vertex AI e o BigQuery

1. Visão geral

Neste laboratório, você vai aprender a criar um sistema completo de dados para IA que detecta fraudes em tempo real no Google Cloud. O objetivo é entender como ir de dados brutos a um pipeline de ML pronto para produção em execução no Google Cloud. Neste guia, usamos os seguintes produtos do Google Cloud:

O que você vai aprender?

Criar um pipeline de ML completo pode ser desafiador. Neste laboratório, você aprenderá a criar e escalonar um pipeline de ML completo usando serviços do Google Cloud, como o BigQuery e a Vertex AI. Você seguirá um tutorial para aprender a ir de dados brutos a ter uma IA na produção. O principal objetivo de aprendizado deste laboratório é:

  • Aprender as práticas recomendadas para criar sistemas de dados para IA no Google Cloud.
  • Aprender a fazer engenharia de atributos com o BigQuery usando SQL (para processamento em lote) e o Apache Beam usando o Dataflow (processamento em tempo real), e usar o Feature Store da Vertex AI.
  • Como fazer análise de dados usando as bibliotecas do BigQuery e do Python, como Pandas e Plotly.
  • Como treinar um modelo de ML com o BigQuery ML usando SQL.
  • Como aproveitar a Vertex AI para armazenar, implantar e monitorar o modelo.
  • Como usar o Vertex AI Pipelines para formalizar os dados em um fluxo de trabalho de IA.

IMPORTANTE: o custo de execução deste laboratório no Google Cloud é por volta de US$ 100,00.

2. De dados brutos a IA com a Vertex AI e o BigQuery

Este laboratório aborda as análises de dados e produtos de IA mais recentes disponíveis no Google Cloud, como a Vertex AI e o BigQuery ML. Com a Vertex AI e o BigQuery, é mais fácil ir de dados brutos à IA. Eles oferecem uma experiência de desenvolvimento sem complicações para você ser mais produtivo ao levar seus modelos para a produção. Se precisar de suporte, acesse a página de suporte.

A Vertex AI inclui vários produtos diferentes para dar suporte a fluxos de trabalho integrais de dados para IA. Abaixo, você encontra uma visão geral de todos os recursos da Vertex AI:

Visão geral do produto Vertex

3. Caso de uso e dados do FraudFinder

O FraudFinder é uma série de notebooks que ensinam a compreensiva jornada de dados para IA no Google Cloud usando o caso de uso de detecção de fraudes em tempo real. Ao longo dos notebooks, você vai aprender a ler históricos de dados de transações de pagamentos armazenados em um data warehouse, a ler de um streaming ao vivo de novas transações, a realizar análise de dados exploratória (EDA, na sigla em inglês), a fazer engenharia de atributos, a ingerir atributos em um armazenamento de recursos, a treinar um modelo usando um armazenamento de recursos, a registrar um modelo em um registro de modelos, a avaliar um modelo, a implantar o modelo em um endpoint, a fazer inferências em tempo real no modelo com um armazenamento de recursos e a monitorar um modelo.

A detecção de fraudes abrange a classificação e a detecção de anomalias, domínios possivelmente muito grandes do machine learning. Isso torna a detecção de fraudes um bom caso de uso de uma história real fácil de entender, sem contar que é uma ótima maneira de mostrar uma arquitetura completa de dados para IA no Google Cloud. Você não precisa de um especialista em fraudes para entender a arquitetura completa. O padrão da arquitetura pode ser aplicado a outros casos de uso.

Abaixo, você encontra uma visão geral da arquitetura do FraudFinder:

Arquitetura do FraudFinder

Conjunto de dados

O conjunto de dados é sintetizado usando o código do Projeto "Machine learning para detecção de fraudes de cartões de créditos: Manual prático" do Kaggle. A detecção de fraudes em tempo real tem uma arquitetura diferente da detecção de fraudes baseada em lote e é caracterizada por estes pontos:

  • Alta frequência (por ex.: 1.000 por segundo) de solicitações de previsão.
  • Baixa latência (por ex.: menos de 1 segundo) de solicitação da provisão → resposta.
  • A previsão geralmente é feita por uma amostra por solicitação de previsão, ou pode ser em "microlotes" (por ex.: 1.000 transações enviadas como lote para inferência quase em tempo real).
  • A engenharia de atributos para disponibilização precisa ser pré-computada ou computada em tempo real.

Histórico de conjunto de dados do FraudFinder

Há tabelas públicas do BigQuery com históricos de transações de pagamentos. Assim, os usuários podem treinar os modelos e fazer a engenharia de atributos usando dados no BigQuery.

cymbal-fraudfinder (project)
|-`tx` (dataset)
  |-`tx` (table: transactions without labels)
  |-`txlabels` (table: transactions with fraud labels (1 or 0))
|-demographics
  |-`customers` (table: profiles of customers)
  |-`terminals` (table: profiles of terminals)
  |-`customersterminals` (table: profiles of customers and terminals within their radius)

Por que em tempo real?

Neste laboratório, você vai aprender a aproveitar os dados em tempo real e a aplicar inferência e engenharia de atributos em tempo real. Atributos em tempo real melhoram o modelo aproveitando sinais que, de outro modo, não poderiam ser usados durante a inferência.

Dados em streaming em tempo real do FraudFinder

Como parte do laboratório do FraudFinder, há tópicos públicos do Pub/Sub com transações de pagamento em streaming em tempo real que podem ser usadas para testar atributos de streaming e endpoints de modelo. O Pub/Sub é um serviço de mensagens assíncrono e escalonável. Use os tópicos dele para fazer streaming de atributos e inferência on-line. Os usuários podem alternar entre tópicos com valor de referência e taxas altas de fraudes para exibir o monitoramento de modelos. Estes tópicos públicos do Pub/Sub estão disponíveis:

  • ff-tx
  • ff-txlabels

4. Configurar o projeto e instância de notebook

Para executar este laboratório, você vai precisar de um projeto do Google Cloud Platform com o faturamento ativado. Para criar um projeto, siga as instruções.

IMPORTANTE: recomendamos executar este laboratório em um novo projeto. Este laboratório aborda vários produtos diferentes, e o mais indicado é excluir o projeto todo após terminar o laboratório.

Quando um projeto estiver pronto, prossiga para as próximas etapas. Elas também podem ser encontradas no arquivo README.md no repositório.

Etapa 1: ativar as APIs

Primeiro, acesse o projeto que você acabou de criar e abra o Cloud Shell. Esta etapa pode demorar alguns minutos, porque um novo Cloud Shell será provisionado se você não tiver ativado um antes.

Cloud Shell

A seguir, copie e cole o código abaixo para executá-lo no Cloud Shell. O script vai ativar as APIs necessárias e criar assinaturas do Pub/Sub que vão ler transações em streaming de tópicos públicos do Pub/Sub. Aguarde um momento enquanto os comandos são executados.

gcloud services enable notebooks.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable pubsub.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable dataflow.googleapis.com
gcloud services enable bigquery.googleapis.com

gcloud pubsub subscriptions create "ff-tx-sub" --topic="ff-tx" --topic-project="cymbal-fraudfinder"
gcloud pubsub subscriptions create "ff-txlabels-sub" --topic="ff-txlabels" --topic-project="cymbal-fraudfinder"

# Run the following command to grant the Compute Engine default service account access to read and write pipeline artifacts in Google Cloud Storage.
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUM=$(gcloud projects list --filter="$PROJECT_ID" --format="value(PROJECT_NUMBER)")
gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:${PROJECT_NUM}-compute@developer.gserviceaccount.com"\
      --role='roles/storage.admin'

Etapa 2: criar uma instância do Vertex AI Workbench

A seguir, acesse a seção do Vertex AI no console do Cloud. Depois, acesse o Workbench:

Menu da Vertex AI

Ative a API Vertex AI Workbench (API de notebook), se ainda não estiver ativada.

Notebook_api

Feito isso, selecione NOTEBOOKS GERENCIADOS PELO USUÁRIO:

Notebooks_UI

Em seguida, selecione NOVO NOTEBOOK. Escolha Python 3.

new_notebook

Dê um nome ao notebook, como fraudfinder, e clique em Configurações avançadas.

create_notebook

Importante: verifique se você selecionou Service Account em Permissions.

Conta de serviço

Importante: em Segurança, selecione "Ativar terminal" se essa opção não estiver ativada.

enable_terminal

Você pode manter as outras configurações avançadas como estão.

Em seguida, clique em Criar. O provisionamento da instância vai levar alguns minutos.

Quando a instância tiver sido criada, selecione Abrir o JupyterLab.

open_jupyterlab

Etapa 3: definir papéis do IAM

Para facilitar, vamos presumir que você vai usar a conta de serviço padrão do Compute Engine. Essa não é a prática recomendada para cargas de trabalho de produção. O recomendado é criar contas de serviço dedicadas para cada aplicativo e evitar usar contas de serviço padrão. Saiba mais sobre práticas recomendadas de contas de serviço na nossa documentação. A conta de serviço padrão do Compute vai se parecer com esta: 123456789123-compute@developer.gserviceaccount.com. Acesse Administrador do IAM e clique em ADD. Na janela, procure e selecione a conta de serviço padrão do Compute Engine e atribua estes papéis:

  • BigQuery Admin
  • Storage Admin
  • Storage Object Admin
  • Vertex AI Administrator
  • Pub/Sub Admin

Ela vai ser semelhante à conta abaixo. Não se esqueça de salvar as configurações.

iam-roles.png

Etapa 4: clonar o repositório do GitHub

Após ter criado e acessado a instância de notebook, será necessário configurar o ambiente. Primeiro, abra uma janela do terminal.

Abrir terminal

Copie, cole e execute o comando a seguir no terminal do notebook.

git clone https://github.com/GoogleCloudPlatform/fraudfinder.git

Executar esse comando clona o repositório FraudFinder na sua instância de notebook. Após executar git clone, você vai encontrar a pasta fraudfinder na instância de notebook à esquerda. Acesse a pasta fraudfinder. Nela, você vai encontrar os notebooks necessários para o laboratório.

Nas seções a seguir, você vai seguir as instruções nos notebooks. Continue com a configuração do ambiente.

5. Configuração do ambiente

Esta seção vai mostrar as etapas para configurar o ambiente do projeto. Nesta seção, você vai concluir os seguintes objetivos de aprendizado:

  • Configurar o ambiente, incluindo pacotes.
  • Carregar dados no BigQuery.
  • Ler dados de tópicos públicos do Pub/Sub.

Continue com este notebook e siga as etapas das instruções.

  • 00_environment_setup.ipynb

6. Análise exploratória de dados

Esta seção vai ensinar como realizar análise de dados detalhada para entender melhor os dados de fraude. Nesta seção, você vai concluir os seguintes objetivos de aprendizado:

  • Extrair e analisar dados do BigQuery usando SQL.
  • Organizar dados de transação usando o BigQuery e o Plotly.
  • Aplicar agregações de dados e criar um gráfico de dispersão.

Continue com este notebook e siga as etapas das instruções:

  • 01_exploratory_data_analysis.ipynb

7. Lotes e streaming de engenharia de atributos

Nesta seção, você vai usar dados brutos para trabalhar com engenharia de atributos, que vai gerar atributos para treinamento de modelos. Vamos usar lotes e streaming. Os dois casos são importantes em detecções de fraudes. Nesta seção, você vai concluir os seguintes objetivos de aprendizado:

  • Como criar atributos usando BigQuery e SQL.
  • Criar um Feature Store da Vertex AI e inserir dados.
  • Como tratar dados de streaming e ingeri-los no Feature Store.

Continue com estes dois notebooks nessa ordem e siga as instruções neles:

  • 02_feature_engineering_batch.ipynb
  • 03_feature_engineering_streaming.ipynb

8. Treinamento, previsão, formalização e monitoramento de modelo

Nesta seção, você vai treinar e implantar seu primeiro modelo do BigQuery Model para detectar possíveis casos de fraude. Você também vai aprender a formalizar seu código de treinamento e implantação em um pipeline automatizado. Por fim, vai aprender a fazer previsões on-line e monitorar o modelo na produção. Nesta seção, você vai concluir os seguintes objetivos de aprendizado:

  • Como treinar um modelo do BigQuery ML e registrá-lo no Vertex AI Model Registry.
  • Implantar o modelo como um endpoint na Vertex AI.
  • Como usar o SDK da Vertex AI.
  • Como usar o modelo do BigQuery ML para criar um pipeline de ML completo.
  • Como usar o Vertex AI Model Monitoring.

Siga com estes notebooks nessa ordem e as instruções neles: Os notebooks estão na pasta BQML. Siga as etapas dos notebooks na ordem:

  • 04_model_training_and_prediction.ipynb
  • 05_model_training_pipeline_formalization.ipynb
  • 06_model_monitoring.ipynb
  • 07_model_inference.ipynb
🎉 Congratulations! 🎉

Você aprendeu a criar uma arquitetura de dados para IA no Google Cloud!

9. Limpeza

Recomendamos executar este laboratório em um novo projeto. Este laboratório aborda vários produtos diferentes. Portanto, o mais indicado é excluir o projeto todo após terminar o laboratório. Na nossa documentação há mais informações sobre como excluir o projeto.

Se você quiser excluir os serviços, siga as instruções nos notebooks ou exclua os recursos criados.