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, per poi esportarlo ed eseguirne il deployment in Vertex AI. Si tratta della più recente offerta di prodotti AI su Google Cloud.

Cosa imparerai

Al termine del corso sarai in grado di:

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

Il costo totale per eseguire 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 si concentrerà sui prodotti evidenziati di seguito: previsione e blocchi note.

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 AI

Passaggio 3: crea un'istanza di Notebooks

Utilizzeremo Notebooks per ottenere le previsioni dopo aver eseguito il deployment del modello. Nella sezione Vertex AI della console Cloud, fai clic su Notebook:

Menu Vertex AI

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

Istanza TFE

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

Apri notebook CAIP

4. Addestrare un modello BigQuery ML

BigQuery ML consente di addestrare modelli di machine learning personalizzati utilizzando i dati archiviati in BigQuery. Puoi addestrare i modelli e ottenere previsioni da questi ultimi in SQL. Per questo lab, utilizzeremo un set di dati disponibile pubblicamente in BigQuery per prevedere la probabilità di mancato pagamento di una 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 archiviarlo. Fai clic sul progetto nella barra del menu a sinistra, quindi seleziona Crea set di dati:

Crea set di dati BQ

Nel campo Dataset ID (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 di query di BigQuery, esegui la seguente 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, il che indica che l'esecuzione richiede circa un minuto. Al termine, vedrai il modello sotto il set di dati:

Dettagli del modello BQML

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

5. Esportare il modello BigQuery ML

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

Passaggio 1: crea un bucket Cloud Storage per il modello

Nei dettagli del modello, fai clic su Esporta modello:

Esporta modello BQML

Ti verrà chiesto di inserire la posizione 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

Assegna 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 delle regioni dal menu a discesa:

Posizione segmento

Utilizza la classe di archiviazione predefinita e assicurati che sia selezionato Uniforme in Controllo dell'accesso:

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

Dopo aver creato il nuovo bucket, inserisci model-assets (o qualsiasi altro nome) nel campo Nome e poi fai clic su Seleziona:

Percorso di esportazione del modello

Poi 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 Google 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). e poi fai clic su Continua. In Impostazioni modello, mantieni selezionata l'opzione "Importa gli artefatti del modello in un nuovo container predefinito".

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

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

Percorso degli asset modello

Quindi, fai clic su Importa. L'importazione del modello richiede qualche minuto. Una volta creato, lo vedrai nella sezione dei modelli della console Cloud:

Sezione Modelli

7. Eseguire 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 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 e 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.

Poi 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 le previsioni del modello:

  • UI di Vertex AI
  • API Vertex AI

Qui mostreremo come ottenere le previsioni tramite l'API

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

Per mostrarti come ottenere le previsioni del modello qui, utilizzeremo l'istanza di Vertex Notebook 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 scrivere un esempio di test in un file JSON denominato default-pred.json. Inviamo 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"}
  ]
}

Successivamente, nell'interfaccia utente di Vertex, fai clic su Richiesta di esempio per l'endpoint di cui hai appena eseguito il deployment:

Richiesta di esempio

Copia il codice del passaggio 4 nella scheda REST nel notebook 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 riportata di seguito:

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

Infine, invia una richiesta di previsione all'endpoint con curl copiando il seguente codice nel notebook:

!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"

Dovresti visualizzare un risultato 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 che ci sia l'81% di probabilità che questa persona non non rispetti il prossimo pagamento. Il valore .819 corrisponde alla classe 0 (non predefinita).

🎉 Congratulazioni! 🎉

Hai imparato a:

  • Addestra un modello in BQML
  • Esporta il 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
  • Ottenere previsioni sull'endpoint di cui è stato eseguito il deployment tramite Vertex Notebooks e curl

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 Notebooks nella console Cloud, seleziona il notebook, quindi seleziona Interrompi:

Arresta istanza

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 fai clic sull'icona di eliminazione:

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