FraudFinder: dai dati non elaborati all'IA con Vertex AI e BigQuery.

1. Panoramica

In questo lab imparerai a creare un sistema IA dai dati end-to-end per il rilevamento delle frodi in tempo reale su Google Cloud. L'obiettivo è capire come passare dai dati non elaborati ad avere una pipeline ML pronta per la produzione in esecuzione su Google Cloud. Questo lab utilizza i seguenti prodotti Google Cloud:

Cosa imparerai?

Creare una pipeline ML end-to-end può essere difficile. In questo lab imparerai a creare e scalare una pipeline ML end-to-end utilizzando servizi Google Cloud come BigQuery e Vertex AI. Ti spiegheremo come passare dai dati non elaborati all'IA in produzione. L'obiettivo di apprendimento generale di questo lab è:

  • Scopri le best practice per la creazione di dati nei sistemi IA su Google Cloud.
  • Scopri come eseguire il feature engineering con BigQuery utilizzando SQL (per l'elaborazione batch) e Apache Beam utilizzando Dataflow (elaborazione in tempo reale) e utilizzare Vertex AI Feature Store.
  • Analizzare i dati utilizzando le librerie BigQuery e Python come Pandas e Plotly.
  • Come addestrare un modello ML con BigQuery ML tramite SQL.
  • Come sfruttare Vertex AI per archiviare, eseguire il deployment e monitorare il modello.
  • Come utilizzare Vertex AI Pipelines per formalizzare i tuoi dati nel flusso di lavoro di IA.

IMPORTANTE: il costo per eseguire questo lab su Google Cloud è di circa $100.

2. Dai dati non elaborati all'IA con Vertex AI e BigQuery

Questo lab illustra i più recenti prodotti di IA e analisi dei dati disponibili su Google Cloud come Vertex AI e BigQuery ML. Vertex AI e BigQuery semplificano il passaggio dai dati non elaborati all'IA e offrono un'esperienza di sviluppo senza interruzioni per aiutarti a migliorare la produttività nel portare i tuoi modelli in produzione. Se hai bisogno di aiuto, consulta la pagina di supporto.

Vertex AI include molti prodotti diversi per supportare i dati end-to-end nei flussi di lavoro IA. Di seguito trovi una panoramica di tutte le funzionalità di Vertex AI:

Panoramica del prodotto Vertex

3. Caso d'uso e dati di FraudFinder

FraudFinder è una serie di blocchi note che insegnano il percorso completo dai dati all'IA su Google Cloud, attraverso il caso d'uso del rilevamento delle frodi in tempo reale. In tutti i blocchi note imparerai a leggere i dati storici delle transazioni di pagamento archiviati in un data warehouse, leggere da un live streaming di nuove transazioni, eseguire analisi esplorative dei dati (EDA), eseguire il feature engineering, importare caratteristiche in un Feature Store, addestrare un modello utilizzando un Feature Store, registrare il tuo modello in un registro dei modelli, valutare il tuo modello, eseguirne il deployment su un endpoint, eseguire l'inferenza in tempo reale sul tuo modello con un Feature Store e monitorare il tuo modello.

Il rilevamento delle frodi copre la classificazione e il rilevamento di anomalie, domini probabilmente estesi all'interno del machine learning. Questo rende il rilevamento delle frodi un buon caso d'uso per una storia reale facile da comprendere e un ottimo modo per presentare i dati end-to-end all'architettura IA su Google Cloud. Non è necessario essere esperti di frodi per comprendere l'architettura end-to-end. Il pattern dell'architettura può essere applicato ad altri casi d'uso.

Di seguito è riportata una panoramica dell'architettura di FraudFinder:

Architettura di FraudFinder

Set di dati

Il set di dati viene sintetizzato utilizzando il codice del Machine Learning for Credit Card Fraud Detection - Practical Handbook project di Kaggle. Il rilevamento delle frodi in tempo reale è diverso dal punto di vista architetturale dal rilevamento delle frodi basato su batch ed è caratterizzato da quanto segue:

  • Alta frequenza (ad es. 1000 al secondo) di richieste di previsione
  • Bassa latenza (ad es. < 1 sec) di richiesta di previsione → risposta
  • La previsione è in genere per 1 campione per richiesta di previsione o può essere in "micro-batch" (ad es. 1000 transazioni inviate come batch per l'inferenza quasi in tempo reale)
  • Il feature engineering per la distribuzione deve essere precalcolato o calcolato in tempo reale

Set di dati storico FraudFinder

Esistono tabelle BigQuery pubbliche con la cronologia delle transazioni di pagamento, che consentono agli utenti di addestrare i propri modelli ed eseguire il feature engineering utilizzando i dati in 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)  

Perché il report in tempo reale?

In questo lab imparerai a sfruttare i dati in tempo reale e applicare il feature engineering e l'inferenza in tempo reale. Le caratteristiche in tempo reale possono aiutarti a migliorare il tuo modello sfruttando indicatori che altrimenti non potresti utilizzare durante il periodo di inferenza.

FraudFinder, dati in tempo reale in streaming

Nell'ambito del lab FraudFinder, sono disponibili argomenti Pub/Sub pubblici con transazioni di pagamento in live streaming che gli utenti possono testare comodamente gli endpoint del proprio modello e le caratteristiche di streaming. Pub/Sub è un servizio di messaggistica asincrono e scalabile. Utilizzerai questi argomenti per trasmettere caratteristiche ed eseguire l'inferenza online. Gli utenti possono anche passare da un argomento all'altro con tassi di attività di riferimento o più elevati per visualizzare il monitoraggio del modello. Sono disponibili i seguenti argomenti Pub/Sub pubblici:

  • ff-tx
  • ff-txlabels

4. Configura il progetto e l'istanza del blocco note

Per eseguire questo lab, è necessario un progetto Google Cloud con fatturazione abilitata. Per creare un progetto, segui le istruzioni.

IMPORTANTE: ti consigliamo di eseguire il lab in un nuovo progetto. Questo lab riguarda molti prodotti diversi ed è più semplice eliminare l'intero progetto al termine del lab.

Quando hai un progetto, continua con i seguenti passaggi. I passaggi seguenti sono disponibili anche nel file README.md nel repository.

Passaggio 1: abilita le API

Per prima cosa, vai al progetto che hai appena creato e apri Cloud Shell. Questo passaggio potrebbe richiedere alcuni minuti perché verrà eseguito il provisioning di un nuovo Cloud Shell se non ne hai già attivato uno.

Cloud Shell

A questo punto, esegui il codice seguente in Cloud Shell copiandolo e incollandolo. Lo script abiliterà le API necessarie e creerà sottoscrizioni Pub/Sub per leggere le transazioni in modalità flusso da argomenti Pub/Sub pubblici. Attendi un po' di tempo per eseguire tutti i comandi.

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'

Passaggio 2: crea un'istanza di Vertex AI Workbench

Vai alla sezione Vertex AI della console Cloud. Quindi vai a Workbench:

Menu Vertex AI

Abilita l'API Vertex AI Workbench (API Notebooks) se non è abilitata".

Notebook_api

Dopo averla attivata, seleziona NOTEBOOK GESTITI DALL'UTENTE:

Notebooks_UI

Quindi seleziona NUOVO Blocco note. Puoi scegliere Python 3.

new_notebook

Assegna un nome al tuo blocco note, ad esempio fraudfinder, poi fai clic su Impostazioni avanzate.

create_notebook

Importante: assicurati di selezionare Service Account in Permissions.

Account di servizio

Importante: nella sezione Sicurezza, seleziona "Attiva terminale" se non è già abilitato.

enable_terminal

Puoi lasciare invariate tutte le altre impostazioni avanzate.

Quindi, fai clic su Crea. Il provisioning dell'istanza richiederà un paio di minuti.

Una volta creata l'istanza, seleziona Apri JupyterLab.

open_jupyterlab

Passaggio 3: imposta i ruoli IAM

Per semplicità, supponiamo che utilizzerai l'account di servizio predefinito di Compute Engine. Questa non è la best practice per i carichi di lavoro di produzione. La best practice consiste nel creare account di servizio dedicati per ogni applicazione ed evitare di utilizzare account di servizio predefiniti. Scopri di più sulle best practice per gli account di servizio nella nostra documentazione. L'account di servizio predefinito di Compute sarà simile a questo: 123456789123-compute@developer.gserviceaccount.com. Vai ad IAM Admin (Amministratore IAM) e fai clic su ADD. Nella vista, cerca e seleziona l'account di servizio predefinito di Compute Engine, quindi assegna i ruoli seguenti:

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

Dovrebbe avere il seguente aspetto. Non dimenticare di salvare le nuove impostazioni.

iam-roles.png

Passaggio 4: clona il repository GitHub

Dopo aver creato l'istanza del blocco note e aver eseguito l'accesso, è il momento di configurare l'ambiente. Per prima cosa, apri una finestra del terminale.

Apri terminale

Copia, incolla ed esegui il comando seguente nel terminale del tuo blocco note:

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

L'esecuzione di questo comando clonerà il repository fraudolentaFinder nella tua istanza di blocco note. Dopo aver eseguito git clone, troverai la cartella fraudfinder nella tua istanza di blocco note sulla sinistra. Ora passa alla cartella fraudfinder. Qui troverai i blocchi note necessari per il lab.

Dalle sezioni successive in poi, dovrai seguire le istruzioni nei blocchi note. Continua con la configurazione dell'ambiente.

5. Configurazione dell'ambiente

Questa sezione illustra i passaggi per configurare l'ambiente del progetto. In questa sezione tratteremo i seguenti obiettivi di apprendimento:

  • Configura l'ambiente, inclusi i pacchetti.
  • Carica i dati in BigQuery.
  • Legge i dati degli argomenti Pub/Sub pubblici.

Continua con il blocco note seguente e segui le istruzioni passo passo:

  • 00_environment_setup.ipynb

6. Analisi esplorativa dati

Questa sezione ti insegnerà a eseguire un'analisi esplorativa dei dati per comprendere meglio i dati relativi alle frodi. In questa sezione tratteremo i seguenti obiettivi di apprendimento:

  • Estrarre ed esplorare i dati da BigQuery utilizzando SQL
  • Tracciare i dati delle transazioni utilizzando BigQuery e Plotly
  • Applicare le aggregazioni di dati e creare un grafico a dispersione

Continua con il prossimo blocco note e segui le istruzioni passo passo:

  • 01_exploratory_data_analysis.ipynb

7. Batch e flussi di dati di feature engineering

In questa sezione lavorerai su Feature Engineering per generare caratteristiche per l'addestramento di modelli a partire dai dati non elaborati. Useremo batch e flussi. Entrambi i casi d'uso sono importanti per il rilevamento di frodi. In questa sezione tratteremo i seguenti obiettivi di apprendimento:

  • Come creare caratteristiche utilizzando BigQuery e SQL
  • Crea un Vertex AI Feature Store e inserisci i dati
  • Come gestire i flussi di dati e importarli nel Feature Store

Continua con i due blocchi note che seguono in questo ordine e segui le istruzioni al loro interno:

  • 02_feature_engineering_batch.ipynb
  • 03_feature_engineering_streaming.ipynb

8. Addestramento di modelli, previsione, formalizzazione e monitoraggio

In questa sezione addestrerai ed eseguirai il deployment del tuo primo modello BigQuery per rilevare possibili casi di frode. Imparerai anche a prendere il codice di addestramento e deployment e formalizzarlo in una pipeline automatizzata. Imparerai anche a fare previsioni online e monitorare il modello in produzione. In questa sezione tratteremo i seguenti obiettivi di apprendimento:

  • Addestrare un modello BigQuery ML e registrarlo in Vertex AI Model Registry
  • Esegui il deployment del modello come endpoint su Vertex AI
  • Come utilizzare l'SDK Vertex AI
  • Come creare una pipeline ML end-to-end mediante il modello BigQuery ML
  • Come utilizzare Vertex AI Model Monitoring

Continua con i blocchi note che seguono in questo ordine e segui le istruzioni al loro interno. Puoi trovare i blocchi note nella cartella BQML. Segui il blocco note passo passo:

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

Hai imparato a creare un'architettura dai dati all'IA su Google Cloud.

9. Esegui la pulizia

Ti consigliamo di eseguire questo lab su un nuovo progetto. Questo lab riguarda molti prodotti diversi, quindi è più semplice eliminare l'intero progetto al termine del lab. Nella nostra documentazione puoi trovare ulteriori informazioni su come eliminare il progetto.

Se invece vuoi eliminare i servizi, segui le istruzioni nei blocchi note o elimina le risorse create.