Vertex AI: esporta ed esegui il deployment di un modello BigQuery Machine Learning per la previsione

1. Panoramica

In questo lab addestrerai un modello con BigQuery Machine Learning, quindi esporterai il modello ed eseguirai il deployment su Vertex AI. Questa è la più recente offerta di prodotti IA su Google Cloud.

Cosa imparerai

Al termine del corso sarai in grado di:

  • Addestra un modello con BigQuery Machine Learning (BQML)
  • Esporta il tuo modello BQML in Cloud Storage
  • Esegui il deployment del tuo BQML addestrato su Vertex AI
  • Ottieni previsioni sul modello di cui hai eseguito il deployment

Il costo totale per l'esecuzione di questo lab su Google Cloud è di circa 2$.

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 è incentrato sui prodotti evidenziati di seguito: Prediction e Notebooks.

Panoramica del prodotto Vertex

3. Configura l'ambiente

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

Passaggio 1: abilita l'API Compute Engine

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

Passaggio 2: abilita l'API Vertex AI

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

Dashboard di Vertex AI

Passaggio 3: crea un'istanza di Notebooks

Utilizzeremo i blocchi note per ottenere previsioni dopo aver eseguito il deployment del modello. Dalla sezione Vertex AI della console Cloud, fai clic su Notebooks:

Menu Vertex AI

Da qui, seleziona Nuova istanza. Quindi seleziona il tipo di istanza TensorFlow Enterprise 2.3 senza GPU:

Istanza TFE

Utilizza le opzioni predefinite e fai clic su Crea. Una volta creata l'istanza, seleziona Apri JupyterLab:

Apri blocco note CAIP

4. Addestra un modello BigQuery ML

BigQuery ML ti consente di addestrare modelli personalizzati di machine learning utilizzando i dati archiviati in BigQuery. Puoi addestrare e ottenere previsioni dai modelli, tutto in SQL. Per questo lab, utilizzeremo un set di dati disponibile pubblicamente in BigQuery per prevedere la probabilità di inadempienza di un pagamento con carta di credito.

Passaggio 1: crea un set di dati BigQuery nel tuo progetto

Per addestrare un modello in BigQuery ML, devi creare un set di dati all'interno del tuo progetto per archiviare questo modello. Fai clic sul tuo progetto nella barra dei menu a sinistra, quindi seleziona Crea set di dati:

Crea set di dati BQ

Nel campo ID set di dati, inserisci cc_default. Lascia invariati gli altri campi e fai clic su Crea set di dati.

Passaggio 2: esegui una query CREATE MODEL

Nell'Editor query di BigQuery, esegui questa query CREATE MODEL per creare e addestrare un modello BigQuery ML sul set di dati pubblico che utilizzeremo. Assicurati di sostituire your-project con il nome del tuo progetto Cloud:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Verrà creato un modello di regressione logistica che restituisce un valore numerico compreso tra 0 e 1, ossia l'esecuzione richiede circa un minuto. Al termine, visualizzerai il modello sotto il tuo set di dati:

Dettagli del modello BQML

Puoi fare clic sul modello per visualizzarne le metriche di addestramento e valutazione.

5. Esporta il tuo modello BigQuery ML

Con un modello BQML addestrato, possiamo utilizzare la sintassi SQL BQML per ottenere previsioni oppure esportare il modello per eseguirne il deployment altrove. Qui esporteremo il nostro modello in modo da eseguirne il deployment su Vertex AI per fornire il modello in modo scalabile e ottenere previsioni.

Passaggio 1: crea un bucket Cloud Storage per il tuo modello

Nei dettagli del modello, fai clic su Esporta modello:

Esporta modello BQML

Ti verrà chiesto di inserire la posizione di Google Cloud Storage (GCS) in cui vuoi esportare gli asset del modello. Se non hai ancora un bucket GCS, non preoccuparti. Stiamo per crearne uno. Innanzitutto, fai clic su Sfoglia:

Sfoglia i bucket GCS

Quindi, fai clic sull'icona + per creare un nuovo bucket:

Nuovo bucket GCS

Assegnagli un nome univoco (i nomi dei bucket di archiviazione devono essere univoci a livello globale). Fai clic su Continua. Nel passaggio successivo, in Tipo di località, seleziona Regione e scegli una qualsiasi delle regioni dal menu a discesa:

Località bucket

Utilizza la classe di archiviazione predefinita e, sotto controllo dell'accesso, assicurati che sia selezionata l'opzione Uniforme:

Controllo degli accessi uniforme

Fai clic su Continua e utilizza i valori predefiniti per le altre opzioni. Quindi, fai clic su Crea.

Passaggio 2: esporta il modello BQML

Una volta creato il nuovo bucket, inserisci model-assets (o un nome a tua scelta) nel campo Nome e fai clic su Seleziona:

Percorso esportazione modello

Quindi, fai clic su Esporta. Verrà creato un job in BigQuery per esportare il modello nel formato SavedModel di TensorFlow nel bucket GCS appena creato che hai specificato. L'esportazione richiederà circa un minuto.

Durante l'esportazione del modello, vai alla sezione Storage della console Cloud. Al termine del job, dovresti vedere gli asset del modello esportati nel bucket appena creato in una sottodirectory model-assets:

Asset del modello esportati

6. Importa il modello in Vertex AI

In questo passaggio faremo riferimento alla posizione di archiviazione GCS in cui abbiamo appena esportato gli asset del modello per creare e importare il modello in Vertex AI.

Passaggio 1: importa il modello

Nella console Cloud, vai alla sezione Modelli di Vertex AI. Da qui, seleziona Importa:

Importa modello

Nel primo passaggio, assegna al modello il nome predict_default. Seleziona la stessa regione in cui hai creato il bucket (us-central1, europe-west4 o asia-east1). Quindi, fai clic su Continua. In Impostazioni del modello, mantieni "Importa gli artefatti del modello in un nuovo container predefinito" selezionato.

Nel menu a discesa Framework modello, seleziona TensorFlow. Quindi seleziona 2.3 come versione del framework.

Nel campo Posizione artefatto del modello, fai clic su Sfoglia, poi sul bucket GCS appena creato e infine sulla directory model-assets:

Percorso asset modello

Quindi, fai clic su Importa. L'importazione del modello richiederà alcuni minuti. Una volta creato, potrai visualizzarlo nella sezione dei modelli della tua console Cloud:

Sezione Modelli

7. esegui il deployment del modello su un endpoint

Ora che abbiamo caricato il modello, 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 tuo modello, vai alla scheda Deployment e test e fai clic su Deployment su endpoint:

Deployment e test

Assegna un nome all'endpoint, ad esempio default_pred_v1, lascia invariate le impostazioni di suddivisione del traffico, quindi seleziona un tipo di macchina per il deployment del modello. Qui abbiamo utilizzato un n1-highcpu-2, ma puoi scegliere il tipo di macchina che preferisci.

Seleziona Fine e fai clic su Continua. Lascia invariate le impostazioni di località selezionate, quindi fai 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 previsioni del modello:

  • UI di Vertex AI
  • API Vertex AI

Qui spiegheremo come ottenere previsioni tramite l'API

Passaggio 1: ottieni previsioni dei modelli con l'API Vertex AI

Per mostrarti come ottenere previsioni del modello qui, utilizzeremo l'istanza di blocco note Vertex che hai creato all'inizio di questo lab.

Quindi, apri l'istanza del blocco note che hai creato e apri un blocco note Python 3 da Avvio app:

Apri blocco note

Nel blocco note, esegui il comando seguente in una cella per scrivere un esempio di test in un file JSON denominato default-pred.json. Invieremo questo esempio al nostro modello per una previsione:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Quindi, nella UI di Vertex, fai clic su Richiesta di esempio per l'endpoint di cui hai appena eseguito il deployment:

Richiesta di esempio

Copia nel blocco note il codice che hai indicato nel Passaggio 4 della scheda REST ed esegui la cella:

Variabili di richiesta

Poi aggiungi una variabile per la regione in cui hai creato il bucket e il modello. Sostituisci your-region nella stringa seguente:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Infine, effettua una richiesta di previsione all'endpoint con curl copiando il seguente codice nel blocco note:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Il risultato dovrebbe essere simile al seguente (i valori esatti della previsione varieranno leggermente):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

I valori in default_payment_next_month_probs mostrano la probabilità per ogni classe. Per questo esempio, il nostro modello prevede una probabilità dell'81% che questa persona non risulti inadempiente al prossimo pagamento. Il valore .819 corrisponde alla classe 0 (non predefinita).

🎉 Complimenti! 🎉

Hai imparato a:

  • Addestra un modello in BQML
  • Esporta il tuo modello BQML in Cloud Storage
  • Importa il modello BQML in Vertex AI per la previsione
  • crea un modello Vertex AI ed esegui il deployment del modello su un endpoint
  • Ottieni previsioni sull'endpoint di cui hai eseguito il deployment tramite Vertex Notebooks e curl

Per scoprire 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 Notebooks in Cloud Console, seleziona il blocco note, quindi seleziona Interrompi:

Arresta istanza

Se desideri 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 fai clic sull'icona Elimina:

Elimina endpoint

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

Elimina spazio di archiviazione