Vertex AI: creazione di un modello di rilevamento delle frodi con AutoML

1. Panoramica

In questo lab utilizzerai Vertex AI per addestrare e gestire un modello con dati tabulari. Si tratta della più recente offerta di prodotti AI su Google Cloud ed è attualmente in anteprima.

Cosa imparerai

Al termine del corso sarai in grado di:

  • Caricare un set di dati gestito in Vertex AI
  • Addestrare un modello con AutoML
  • Esegui il deployment del modello AutoML addestrato su un endpoint e utilizza questo endpoint per ottenere previsioni.

Il costo totale per eseguire questo lab su Google Cloud è di circa 22$.

2. Introduzione a Vertex AI

Questo lab utilizza la più recente offerta di prodotti AI disponibile su Google Cloud. Vertex AI integra le offerte ML di Google Cloud in un'esperienza di sviluppo fluida. In precedenza, i modelli addestrati con AutoML e i modelli personalizzati erano accessibili tramite servizi separati. La nuova offerta combina entrambi in un'unica API, insieme ad altri nuovi prodotti. Puoi anche migrare progetti esistenti su Vertex AI. In caso di feedback, consulta la pagina di supporto.

Vertex AI include molti prodotti diversi per supportare i flussi di lavoro ML end-to-end. Questo lab si concentrerà sui prodotti evidenziati di seguito: AutoML per dati tabulari, Prediction e Workbench.

Panoramica del prodotto Vertex

3. Configura l'ambiente

Per eseguire questo codelab, devi avere un progetto Google Cloud Platform con la fatturazione abilitata. Per creare un progetto, segui le istruzioni riportate qui.

Passaggio 1: abilita l'API Compute Engine

Vai a Compute Engine e seleziona Abilita se non è già abilitato. Ne avrai bisogno per creare la tua istanza di blocco note.

Passaggio 2: attiva l'API Vertex AI

Accedi alla sezione Vertex AI della tua console Cloud e fai clic su Abilita API Vertex AI.

Dashboard Vertex

Passaggio 3: crea un'istanza di Vertex AI Workbench

Nella sezione Vertex AI della console Cloud, fai clic su Workbench:

Menu Vertex AI

Da qui, in Blocchi note gestiti dall'utente, fai clic su Nuovo notebook:

Crea nuovo notebook

Poi seleziona l'ultima versione del tipo di istanza TensorFlow Enterprise (con LTS) senza GPU:

Istanza TFE

Utilizza le opzioni predefinite e poi fai clic su Crea.

Passaggio 5: apri il notebook

Una volta creata l'istanza, seleziona Apri JupyterLab:

Apri notebook

I dati che utilizzeremo per addestrare il nostro modello provengono da questo set di dati per il rilevamento delle frodi con carta di credito. Utilizzeremo una versione di questo set di dati resa disponibile pubblicamente in BigQuery.

4. Crea un set di dati gestito

In Vertex AI, puoi creare set di dati gestiti per una varietà di tipi di dati. Puoi quindi generare statistiche su questi set di dati e utilizzarle per addestrare modelli con AutoML o con il tuo codice modello personalizzato.

Passaggio 1: crea un set di dati

Nel menu Vertex della console, seleziona Set di dati:

Seleziona Set di dati

In questo lab creeremo un modello di rilevamento di attività fraudolente per determinare se una determinata transazione con carta di credito deve essere classificata come fraudolenta.

Nella pagina Set di dati, assegna un nome al set di dati, poi seleziona Tabulare e Regressione/classificazione. Quindi, crea il set di dati:

Crea set di dati

Esistono alcune opzioni per importare i dati nei set di dati gestiti in Vertex:

  • Caricare un file locale dal computer
  • Selezionare i file da Cloud Storage
  • Selezionare i dati da BigQuery

Qui caricheremo i dati da una tabella BigQuery pubblica.

Passaggio 2: importa i dati da BigQuery

Scegli "Seleziona una tabella o una visualizzazione da BigQuery" come metodo di importazione, quindi copia quanto segue nella casella Tabella BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Poi seleziona Continua:

Importare dati BQ

Dopo aver importato il set di dati, dovresti vedere qualcosa di simile a questo:

Dati importati

Se vuoi, puoi fare clic su Genera statistiche per visualizzare ulteriori informazioni su questo set di dati, ma non è necessario prima di procedere al passaggio successivo. Questo set di dati contiene transazioni reali con carta di credito. La maggior parte dei nomi delle colonne è stata oscurata, motivo per cui vengono chiamate V1, V2 e così via.

5. Addestrare un modello con AutoML

Una volta caricato un set di dati gestito, è tutto pronto per addestrare un modello con questi dati. Addestreremo un modello di classificazione per prevedere se una transazione specifica è fraudolenta o meno. Vertex AI offre due opzioni per l'addestramento dei modelli:

  • AutoML: addestra modelli di alta qualità con il minimo sforzo e senza dover avere esperienza nel machine learning.
  • Addestramento personalizzato: esegui le tue applicazioni di addestramento personalizzato nel cloud utilizzando uno dei container predefiniti di Google Cloud o utilizzane uno tuo.

In questo lab utilizzeremo AutoML per l'addestramento.

Passaggio 1: avvia il job di addestramento

Nella pagina dei dettagli del set di dati in cui hai interrotto il passaggio precedente, seleziona Addestra nuovo modello in alto a destra. Seleziona Classificazione come obiettivo, lascia selezionata l'opzione AutoML per l'addestramento del modello e poi fai clic su Continua:

Passaggio 1 dell'addestramento del modello

Assegna un nome al modello oppure utilizza quello predefinito. In Colonna target, seleziona Classe. Si tratta di un numero intero che indica se una determinata transazione è fraudolenta (0 per non fraudolenta, 1 per fraudolenta).

Poi seleziona Continua:

Passaggio 2 dell'addestramento del modello

In questo passaggio, scorri verso il basso e fai clic per espandere Opzioni avanzate. Poiché questo set di dati è fortemente sbilanciato (meno dell'1% dei dati contiene transazioni fraudolente), scegli l'opzione AUC PRC, che massimizzerà la precisione-richiamo per la classe meno comune:

Opzioni di addestramento avanzate

Seleziona Continua e poi vai all'ultimo passaggio (calcolo e prezzi). Qui, inserisci 1 come numero di ore nodo per il budget e lascia attivato l'interruzione anticipata. L'addestramento del modello AutoML per 1 ora di calcolo è in genere un buon inizio per comprendere se esiste una relazione tra le caratteristiche e l'etichetta che hai selezionato. In seguito puoi modificare le caratteristiche e dedicare più tempo all'addestramento per migliorare le prestazioni del modello. Quindi, seleziona Inizia addestramento.

Riceverai un'email al termine del job di addestramento. L'addestramento richiederà poco più di un'ora per tenere conto del tempo necessario per l'avvio e l'interruzione delle risorse.

6. Esplorare le metriche di valutazione del modello

In questo passaggio vedremo il rendimento del nostro modello.

Una volta completato il job di addestramento del modello, vai alla scheda Modelli in Vertex. Fai clic sul modello appena addestrato e dai un'occhiata alla scheda Valuta. Qui sono presenti molte metriche di valutazione. Ci concentreremo su due: la matrice di confusione e l'importanza delle funzionalità.

Passaggio 1: comprendi la matrice di confusione

Una matrice di confusione indica la percentuale di esempi di ciascuna classe nel set di test che il nostro modello ha previsto correttamente. Nel caso di un set di dati sbilanciato come quello che stiamo esaminando, questa è una misura migliore del rendimento del nostro modello rispetto all'accuratezza complessiva.

Ricorda che meno dell'1% degli esempi nel nostro set di dati erano transazioni fraudolente, quindi se l'accuratezza del nostro modello è del 99%, è molto probabile che indovini a caso la classe non fraudolenta il 99% delle volte. Per questo motivo, in questo caso è meglio esaminare l'accuratezza del modello per ogni classe.

Se scorri verso il basso nella scheda Valuta, dovresti vedere una matrice di confusione simile a questa (le percentuali esatte possono variare):

Matrice di confusione

La matrice di confusione mostra che il nostro modello iniziale è in grado di classificare correttamente l'85% degli esempi fraudolenti nel nostro set di test. Questo risultato è piuttosto buono, soprattutto considerando lo squilibrio significativo del nostro set di dati. A questo punto, potremmo provare ad addestrare il modello per un numero maggiore di ore di calcolo per vedere se riusciamo a migliorare questo 85%.

Passaggio 2: esame dell'importanza delle funzionalità

Sotto la matrice di confusione, dovresti vedere un grafico di importanza delle caratteristiche simile a questo:

Importanza delle caratteristiche

Ciò mostra le funzionalità che hanno fornito il segnale più importante al nostro modello durante le previsioni. L'importanza delle caratteristiche è un tipo di AI spiegabile, un campo che include vari metodi per ottenere maggiori informazioni su come un modello di ML effettua le previsioni. Il grafico dell'importanza delle caratteristiche che vedi qui viene calcolato come aggregato esaminando tutte le previsioni del nostro modello sul set di test. Mostra le caratteristiche più importanti in un batch di esempi.

Questo grafico sarebbe più interessante se la maggior parte delle caratteristiche del nostro set di dati non fosse oscurata. Ad esempio, potremmo scoprire che il tipo di transazione (bonifico, deposito e così via) è l'indicatore più importante di frode.

In uno scenario reale, questi valori di importanza delle caratteristiche potrebbero essere utilizzati per aiutarci a migliorare il nostro modello e ad avere maggiore fiducia nelle sue previsioni. La prossima volta che addestriamo un modello, potremmo decidere di rimuovere le caratteristiche meno importanti o di combinare due delle caratteristiche più significative in un incrocio di caratteristiche per vedere se ciò migliora le prestazioni del modello.

Qui stiamo esaminando l'importanza delle caratteristiche in un batch, ma possiamo anche ottenere l'importanza delle caratteristiche per le singole previsioni in Vertex AI. Vedremo come farlo una volta implementato il modello.

7. Deployment del modello in un endpoint

Ora che abbiamo un modello addestrato, il passaggio successivo è creare un endpoint in Vertex. A una risorsa modello in Vertex possono essere associati più endpoint ed è possibile suddividere il traffico tra endpoint.

Passaggio 1: crea un endpoint

Nella pagina del modello, vai alla scheda Deployment e test e fai clic su Deployment su endpoint:

Deployment e test

Assegna un nome all'endpoint, ad esempio fraud_v1, lascia l'accesso impostato su Standard e fai clic su Continua.

Lascia invariate le impostazioni predefinite per la suddivisione del traffico e il tipo di macchina, fai clic su Fine e poi su Continua.

Non utilizzeremo il monitoraggio del modello per questo endpoint, quindi puoi lasciare l'opzione deselezionata e fare clic su Esegui il deployment. Il deployment dell'endpoint richiederà alcuni minuti. Una volta completato, vedrai un segno di spunta verde accanto:

Endpoint di cui è stato eseguito il deployment

Lo stai raggiungendo! Ora è tutto pronto per ottenere previsioni sul modello di cui hai eseguito il deployment.

8. Ottenere previsioni sul modello di cui è stato eseguito il deployment

Esistono alcune opzioni per ottenere le previsioni del modello:

  • UI di Vertex AI
  • API Vertex AI

Qui mostreremo entrambi.

Passaggio 1: ottieni le previsioni del modello nella UI

Nella pagina del modello in cui viene mostrato l'endpoint (dove abbiamo interrotto l'ultimo passaggio), scorri verso il basso fino alla sezione Testa il tuo modello:

Modello di test

In questo caso, Vertex AI ha scelto valori casuali per ciascuna delle caratteristiche del nostro modello che possiamo utilizzare per ottenere una previsione di test. Se vuoi, puoi modificare questi valori. Scorri fino in fondo alla pagina e seleziona Previsione.

Nella sezione Risultato della previsione della pagina, dovresti visualizzare la percentuale prevista del tuo modello per ogni classe. Un punteggio di affidabilità di 0.99 per la classe 0, ad esempio, significa che il modello ritiene che questo esempio abbia il 99% di probabilità di non essere fraudolento.

Passaggio 2: ottieni le previsioni del modello con l'API Vertex AI

La UI è un ottimo modo per assicurarti che l'endpoint di cui è stato eseguito il deployment funzioni come previsto, ma è probabile che tu voglia ottenere le previsioni in modo dinamico tramite una chiamata API REST. Per mostrarti come ottenere le previsioni del modello qui, utilizzeremo l'istanza Vertex Workbench che hai creato all'inizio di questo lab.

Successivamente, apri l'istanza del notebook che hai creato e apri un notebook Python 3 da Avvio app:

Apri notebook

Nel notebook, esegui il seguente comando in una cella per installare l'SDK Vertex:

!pip3 install google-cloud-aiplatform --upgrade --user

Poi aggiungi una cella nel notebook per importare l'SDK e creare un riferimento all'endpoint che hai appena implementato:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Devi sostituire due valori nella stringa endpoint_name sopra con il numero di progetto e l'endpoint. Puoi trovare il numero di progetto accedendo alla dashboard dei progetti e recuperando il valore del numero di progetto.

Puoi trovare l'ID endpoint nella sezione Endpoint della console qui:

Trovare l'ID endpoint

Infine, esegui una previsione sull'endpoint copiando ed eseguendo il codice riportato di seguito in una nuova cella:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Dovresti vedere una previsione intorno a .67 per la classe 0, il che significa che il modello ritiene che ci sia una probabilità del 67% che questa transazione non sia fraudolenta.

🎉 Congratulazioni! 🎉

Hai imparato come utilizzare Vertex AI per:

  • Caricare un set di dati gestito
  • Addestra e valuta un modello su dati tabulari utilizzando AutoML
  • Eseguire il deployment del modello su un endpoint
  • Ottenere previsioni su un endpoint del modello utilizzando l'SDK per Vertex

Per saperne di più sulle diverse parti di Vertex AI, consulta la documentazione.

9. Esegui la pulizia

Se vuoi continuare a utilizzare il blocco note creato in questo lab, ti consigliamo di disattivarlo quando non lo usi. Dall'interfaccia utente di Workbench nella console Cloud, seleziona il notebook, quindi seleziona Interrompi.

Se vuoi eliminare completamente il blocco note, fai semplicemente clic sul pulsante Elimina in alto a destra.

Per eliminare l'endpoint di cui hai eseguito il deployment, vai alla sezione Endpoint della console Vertex AI e annulla il deployment del modello dall'endpoint:

Elimina endpoint

Per eliminare il bucket di archiviazione, utilizza il menu di navigazione nella console Google Cloud, vai a Storage, seleziona il bucket e fai clic su Elimina:

Elimina spazio di archiviazione