Previsione della valutazione dei film con AutoML per Vertex AI

1. Introduzione

In questo codelab, creeremo un modello di previsione del punteggio dei film utilizzando Vertex AI AutoML e faremo in modo che l'endpoint del modello di cui è stato eseguito il deployment venga attivato da Java Cloud Functions. Il modello viene addestrato con i dati archiviati in BigQuery e registrato in Vertex AI. L'elenco dei servizi può essere composto in due sezioni:

  1. Creazione e deployment di modelli ML
  2. Trigger per eseguire previsioni con l'API ML

Creazione del modello ML:

  1. Dati provenienti da CSV a BigQuery
  2. Dati BigQuery integrati in Vertex AI per la creazione di modelli AutoML
  3. Modello di cui è stato eseguito il deployment in Vertex AI Model Registry per la generazione dell'API endpoint

Trigger per la previsione utilizzando l'API ML:

  1. Java Cloud Functions per attivare la chiamata all'endpoint del modello AutoML di cui è stato eseguito il deployment che prende i dettagli del filmato come richiesta dall'interfaccia utente restituisce il punteggio film previsto

Di seguito è riportata una panoramica generale dell'architettura di base dell'applicazione:

5ae50607c0f2db20.png

L'applicazione dell'architettura sopra riportata non rientra nell'ambito di questo codelab, ma se vuoi sviluppare anche l'applicazione client, fai riferimento al blog.

Analizziamo i passaggi di implementazione.

Cosa creerai

Dovrai creare un

  • Un set di dati BigQuery per contenere i componenti della tabella e del modello
  • Modello Vertex AI AutoML (creazione e deployment)
  • Trigger di Cloud Functions Java per eseguire previsioni con l'API ML

2. Requisiti

  • Un browser, ad esempio Chrome o Firefox
  • Un progetto Google Cloud con fatturazione abilitata

Di seguito sono riportati i prerequisiti:

Creare il progetto

  1. Nella pagina del selettore dei progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come controllare se la fatturazione è abilitata per un progetto.
  3. Vai a BigQuery per abilitare l'API. Puoi anche aprire direttamente la UI web di BigQuery inserendo nel browser il seguente URL: https://console.cloud.google.com/bigquery

Attiva Cloud Shell

  1. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud in cui è precaricato bq: dalla console Cloud, fai clic su Attiva Cloud Shell nell'angolo in alto a destra: 6757b2fb50ddcc2d.png
  2. Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo ID progetto. Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
  1. Esegui questo comando in Cloud Shell per confermare che il comando gcloud sia a conoscenza del tuo progetto
gcloud config list project
  1. Se il progetto non è configurato, utilizza il comando seguente per impostarlo:
gcloud config set project <PROJECT_ID>

Consulta la documentazione per i comandi e l'utilizzo di gcloud.

3. Preparazione dei dati di addestramento

Si tratta di un passo importante in tutti i progetti, i prodotti e le app relativi ai dati che richiede molta esperienza nel settore, oltre alla tecnologia, per preparare un set di dati ottimale e renderlo pronto per il tuo progetto ML. Ai fini di questo codelab, supporremo che i dati siano già preparati e utilizzeremo questo file di dati già elaborato.

4. Creazione e caricamento del set di dati

Un set di dati BigQuery è una raccolta di tabelle. Tutte le tabelle di un set di dati sono archiviate nella stessa località dei dati. Puoi anche collegare controlli di accesso personalizzati per limitare l'accesso a un set di dati e alle relative tabelle.

  1. In Cloud Shell, utilizza il comando bq mk per creare un set di dati chiamato "movies".
bq mk --location=<<LOCATION>> movies

Imposta location su una regione (asia-south1). Ricordati di impostarla anche come regione per il passaggio di VERTEX AI (entrambe le istanze devono trovarsi nella stessa regione).

  1. Assicurati che il file di dati (.csv) sia pronto. Esegui questi comandi in Cloud Shell per clonare il repository e accedere al progetto:
git clone <<repository link>>

cd movie-score
  1. Usa il comando bq load per caricare il file CSV in una tabella BigQuery (tieni presente che puoi anche caricarlo direttamente dalla UI di BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. Puoi eseguire query in uno dei tre modi seguenti:

Possiamo interagire con BigQuery in tre modi, ne proveremo due: a. UI web di BigQuery b. Il comando bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

Ho utilizzato l'area di lavoro SQL di BigQuery per eseguire query. L'area di lavoro SQL ha il seguente aspetto:

109a0b2c7155e9b3.png

Utilizzando il comando bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. Utilizzo dei dati BigQuery in AutoML per Vertex AI

Utilizza i tuoi dati di BigQuery per creare direttamente un modello AutoML con Vertex AI. Ricorda che possiamo anche eseguire AutoML da BigQuery, registrare il modello con Vertex AI ed esporre l'endpoint. Consulta la documentazione di BigQuery AutoML. In questo esempio, tuttavia, utilizzeremo Vertex AI AutoML per creare il modello.

Creazione di un set di dati Vertex AI

Vai a Vertex AI dalla console Google Cloud, abilita l'API Vertex AI se non l'hai già fatto, espandi i dati e seleziona Set di dati, fai clic su Crea set di dati, seleziona il tipo di dati TABULARE e "Regressione / classificazione" e fai clic su Crea:

4104c75c34cbd2d9.png

Seleziona origine dati

Nella pagina successiva, seleziona un'origine dati. Scegli "Seleziona una tabella o una visualizzazione da BigQuery" e seleziona la tabella da BigQuery nel campo SFOGLIA del percorso BigQuery. Fai clic su Continua.

Ricorda: l'istanza BigQuery e i set di dati di Vertex AI devono avere la stessa regione affinché la tabella BigQuery venga visualizzata in Vertex AI.

b787ef18dbca4cff.png

Quando selezioni la tabella/vista di origine, dall'elenco di navigazione, ricorda di fare clic sul pulsante di opzione per continuare con i passaggi riportati di seguito. Se fai clic accidentalmente sul nome della tabella/visualizzazione, si aprirà Dataplex. Se ti succede, devi solo tornare a Vertex AI.

Addestra il modello

  1. Una volta creato il set di dati, dovresti vedere la pagina Analizza, con la possibilità di addestrare un nuovo modello. Fai clic su questa opzione:

bf095263d57106de.png

  1. Lascia l'obiettivo impostato su Classificazione e seleziona l'opzione AutoML nella prima pagina, quindi fai clic su Continua: e50597bc3f29894c.png
  2. Assegna un nome al modello e seleziona il nome della colonna target come "Punteggio" dal menu a discesa visualizzato e fai clic su Continua.
  3. Tieni inoltre presente che puoi controllare la sezione "Esporta set di dati di test in BigQuery" che semplifica la visualizzazione efficiente del set di test con i risultati nel database senza un ulteriore livello di integrazione o senza dover spostare i dati tra i servizi.
  4. Nella pagina successiva, hai la possibilità di selezionare le opzioni di addestramento avanzato di cui hai bisogno e le ore in cui vuoi impostare il modello da addestrare. Ricorda di prestare attenzione ai prezzi prima di aumentare il numero di ore nodo da utilizzare per l'addestramento.

Fai clic su Avvia addestramento per iniziare ad addestrare il nuovo modello.

e72b004a17849bd.png

Valutazione, deployment e test del modello

Al termine dell'addestramento, dovresti essere in grado di fare clic su Addestramento (sotto l'intestazione Sviluppo del modello nel menu a sinistra) e vedere l'addestramento elencato nella sezione Pipeline di addestramento. Fai clic su questo pulsante per aprire la pagina Model Registry. Dovresti essere in grado di:

  1. Visualizza e valuta i risultati dell'addestramento 4767b4bbd7cf93fa.png
  2. Esegui il deployment e il test del modello con il tuo endpoint API

Dopo aver eseguito il deployment del modello, viene creato un endpoint API che può essere utilizzato nella tua applicazione per inviare richieste e ottenere i risultati della previsione del modello nella risposta.

95fb4495618174f0.png

Prima di proseguire con questa sezione, assicurati di prendere nota dell'ID endpoint del modello di cui è stato eseguito il deployment, della posizione e di altri dettagli nella sezione dell'endpoint di Vertex AI.

6. Funzione Cloud Functions Java per attivare le chiamate ML

Ricordi come abbiamo ricevuto l'endpoint e altri dettagli dalla fase di deployment del ML? Lo utilizzeremo qui e, poiché utilizziamo Cloud Functions Java, useremo pom.xml per gestire le dipendenze. Utilizziamo la libreria google-cloud-aiplatform per utilizzare l'API dell'endpoint AutoML di Vertex AI.

  1. Cerca Cloud Functions nella console Google Cloud e fai clic su "Crea funzione".
  2. Inserisci i dettagli di configurazione, ad esempio Ambiente, Nome funzione, Regione, Trigger (in questo caso, HTTPS), Autenticazione di tua scelta, abilita "Richiedi HTTPS" e fai clic su Avanti/Salva

a68272022df062f2.png

  1. Nella pagina successiva, seleziona Runtime (Java 11), Codice sorgente (incorporato o caricamento) e avvia la modifica

13df616369ca5951.png

  1. Copia i file java e pom.xml dal repository e incolla i rispettivi file nell'editor in linea, se utilizzi il tuo editor locale (consigliato), quindi clona il codice sorgente dal repository
  2. Per questo esempio, modifica l'ID progetto, l'ID endpoint, la posizione e l'endpoint nel file di origine .java, ma tieni presente che la best practice è utilizzare Secret Manager per l'archiviazione delle credenziali
  3. Per l'ambito di questo codelab, commenta le parti MongoDB nella classe .java del codice sorgente copiato

Esegui il deployment della funzione una volta completate tutte le modifiche. Dovresti vedere l'URL dell'endpoint che può essere utilizzato nella tua applicazione client per inviare richieste a questa funzione Cloud Functions e ricevere il punteggio del film in risposta.

7. Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo post, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse
  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Arresta per eliminare il progetto

8. Complimenti

Complimenti! Hai creato ed eseguito correttamente il deployment di un modello di previsione del punteggio dei film in Vertex AI AutoML e hai attivato il modello di cui è stato eseguito il deployment da Cloud Functions.