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 l'endpoint del modello di cui è stato eseguito il deployment verrà attivato da Java Cloud Functions. Il modello viene addestrato con i dati archiviati in BigQuery e registrati in Vertex AI. L'elenco dei servizi può essere suddiviso in due sezioni:

  1. Creazione e deployment di modelli ML
  2. Trigger per la previsione utilizzando l'API ML

Creazione di modelli 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 tramite l'API ML:

  1. Funzioni Cloud Functions Java per attivare la chiamata dell'endpoint del modello AutoML di cui è stato eseguito il deployment che accetta i dettagli del film come richiesta dall'interfaccia utente e restituisce il PUNTEGGIO del film previsto

Di seguito è riportata la panoramica generale dell'architettura dell'applicazione:

5ae50607c0f2db20.png

L'applicazione dell'architettura precedente non rientra nell'ambito di questo codelab, ma se vuoi sviluppare anche l'applicazione client, consulta il blog.

Vediamo i passaggi di implementazione.

Cosa creerai

Creerai un

  • Un set di dati BigQuery che contenga i componenti della tabella e del modello
  • Modello Vertex AI AutoML (creazione e deployment)
  • Trigger Java Cloud Functions per la previsione utilizzando l'API ML

2. Requisiti

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

Di seguito sono riportati i prerequisiti:

Creare il progetto

  1. Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare 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 il seguente URL nel browser: https://console.cloud.google.com/bigquery

Attiva Cloud Shell

  1. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud precaricato con bq: nella 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 verificare che il comando gcloud conosca il tuo progetto
gcloud config list project
  1. Se il progetto non è impostato, utilizza il seguente comando 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 passaggio fondamentale in tutti i progetti, i prodotti e le app correlati ai dati, che richiede molta esperienza nel dominio, 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à elaborati.

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 vengono archiviate nella stessa posizione dei dati. Puoi anche allegare controlli dell'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 denominato "movies".
bq mk --location=<<LOCATION>> movies

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

  1. Assicurati di avere pronto il file di dati (.csv). Esegui i seguenti comandi in Cloud Shell per clonare il repository e passare al progetto:
git clone <<repository link>>

cd movie-score
  1. Utilizza il comando bq load per caricare il file CSV in una tabella BigQuery (tieni presente che puoi anche caricare direttamente dall'interfaccia utente 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. Esegui la query in uno dei tre modi seguenti:

Possiamo interagire con BigQuery in tre modi. Ne proveremo due: Interfaccia utente 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 web di BigQuery per eseguire query. L'area di lavoro SQL ha questo 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. Utilizzare i dati BigQuery in Vertex AI AutoML

Utilizza i dati di BigQuery per creare direttamente un modello AutoML con Vertex AI. Ricorda che possiamo anche eseguire AutoML da BigQuery stesso e 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 nostro modello.

Creare 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 TABULARI e l'opzione "Regressione / classificazione", quindi fai clic su Crea:

4104c75c34cbd2d9.png

Seleziona l'origine dati

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

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

b787ef18dbca4cff.png

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

Addestra il modello

  1. Una volta creato il set di dati, dovresti visualizzare la pagina Analizza con l'opzione per addestrare un nuovo modello. Fai clic su:

bf095263d57106de.png

  1. Lascia lo scopo come Classificazione, seleziona l'opzione AutoML nella prima pagina e fai clic su Continua: e50597bc3f29894c.png
  2. Assegna un nome al modello e seleziona "Punteggio" come nome della colonna di destinazione dal menu a discesa visualizzato, quindi fai clic su Continua.
  3. Tieni presente anche che puoi selezionare l'opzione "Esporta set di dati di test in BigQuery", che consente di visualizzare facilmente il set di test con i risultati nel database in modo efficiente senza un livello di integrazione aggiuntivo o dover spostare i dati tra i servizi.
  4. Nella pagina successiva, puoi selezionare le opzioni di addestramento avanzate che ti servono e le ore in cui vuoi impostare l'addestramento del modello. Tieni presente che ti consigliamo di prestare attenzione ai prezzi prima di aumentare il numero di ore nodo che vuoi utilizzare per l'addestramento.

Fai clic su Inizia addestramento per iniziare l'addestramento del nuovo modello.

e72b004a17849bd.png

Valuta, esegui il deployment e testa il modello

Una volta completato l'addestramento, dovresti essere in grado di fare clic su Addestramento (nella sezione Sviluppo del modello nel menu a sinistra) e visualizzare l'addestramento elencato nella sezione Pipeline di addestramento. Fai clic per accedere alla pagina del registro dei modelli. Dovresti essere in grado di:

  1. Visualizzare e valutare i risultati dell'addestramento 4767b4bbd7cf93fa.png
  2. Esegui il deployment e testa il modello con l'endpoint API

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

95fb4495618174f0.png

Prima di passare alla sezione successiva, prendi nota dell'ID endpoint, della posizione e di altri dettagli del modello di cui è stato eseguito il deployment nella sezione dell'endpoint Vertex AI.

6. Funzione Cloud Functions Java per attivare la chiamata ML

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

  1. Cerca Cloud Functions nella console Google Cloud e fai clic su "Crea funzione".
  2. Inserisci i dettagli di configurazione, come ambiente, nome della funzione, regione, trigger (in questo caso, HTTPS), autenticazione a tua scelta, attiva "Richiedi HTTPS" e fai clic su Avanti/Salva.

a68272022df062f2.png

  1. Nella pagina successiva, seleziona Runtime (Java 11), Codice sorgente (incorporato o caricato) e inizia a modificare.

13df616369ca5951.png

  1. Copia i file java e pom.xml dal repository e incollali nei rispettivi file nell'editor incorporato. Se utilizzi l'editor locale (consigliato), clona l'origine dal repository.
  2. Modifica l'ID progetto, l'ID endpoint, la posizione e l'endpoint nel file sorgente .java per questo esempio, ma tieni presente che la best practice è utilizzare Secret Manager per archiviare le credenziali.
  3. Ai fini di questo codelab, commenta le parti di MongoDB nella classe .java del codice sorgente copiato

Procedi con il deployment della funzione una volta completate tutte le modifiche. Dovresti visualizzare l'URL dell'endpoint che può essere utilizzato nell'applicazione client per inviare richieste a questa funzione Cloud Functions e ricevere il punteggio del film come 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 Chiudi per eliminare il progetto.

8. Complimenti

Complimenti! Hai creato e implementato correttamente 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.