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.
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.
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:
Da qui, seleziona Nuova istanza. Quindi seleziona il tipo di istanza TensorFlow Enterprise 2.3 senza GPU:
Utilizza le opzioni predefinite e fai clic su Crea. Una volta creata l'istanza, seleziona Apri JupyterLab:
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:
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:
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:
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:
Quindi, fai clic sull'icona + per creare un nuovo bucket:
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:
Utilizza la classe di archiviazione predefinita e, sotto controllo dell'accesso, assicurati che sia selezionata l'opzione 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:
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
:
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:
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:
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:
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:
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:
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:
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:
Copia nel blocco note il codice che hai indicato nel Passaggio 4 della scheda REST ed esegui la cella:
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:
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:
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: