1. Introduzione
In questo codelab creeremo un modello di previsione del voto di un film utilizzando Vertex AI AutoML e attiveremo l'endpoint del modello di cui è stato eseguito il deployment 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 composto da due sezioni:
- Creazione e deployment di modelli ML
- Attivare la previsione utilizzando l'API ML
Creazione di modelli ML:
- Dati provenienti da file CSV a BigQuery
- Dati di BigQuery integrati in Vertex AI per la creazione di modelli AutoML
- 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:
- Funzioni Java Cloud per attivare l'invocazione dell'endpoint del modello AutoML di cui è stato eseguito il deployment che prende in input i dettagli del film come richiesta dall'interfaccia utente e restituisce il PUNTEGGIO del film previsto
Di seguito è riportata la panoramica dell'architettura di alto livello dell'applicazione:
L'applicazione dell'architettura sopra indicata 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 per contenere i componenti della tabella e del modello
- Modello AutoML Vertex AI (creazione ed esecuzione di deployment)
- Attivazione di Cloud Functions Java per fare previsioni utilizzando l'API ML
2. Requisiti
Di seguito sono riportati i prerequisiti:
Creare il progetto
- Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
- Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata in un progetto.
- Vai a BigQuery per abilitare l'API. Puoi anche aprire direttamente l'UI web di BigQuery inserendo il seguente URL nel browser: https://console.cloud.google.com/bigquery
Attivare Cloud Shell
- Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud con bq preinstallato: dalla console Cloud, fai clic su Attiva Cloud Shell nell'angolo in alto a destra:
- 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
- Esegui il seguente comando in Cloud Shell per verificare che il comando gcloud conosca il tuo progetto
gcloud config list project
- 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 relativi ai dati che richiede una grande esperienza nel dominio, oltre alla tecnologia per preparare un set di dati ottimale e renderlo pronto per il progetto di ML. Ai fini di questo codelab, assumeremo 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 vengono archiviate nella stessa posizione dei dati. Puoi anche associare controlli di accesso personalizzati per limitare l'accesso a un set di dati e alle relative tabelle.
- In Cloud Shell, utilizza il comando bq mk per creare un set di dati denominato "movies".
bq mk --location=<<LOCATION>> movies
Imposta location su una regione (asia-south1). Ricorda di impostarla anche come regione per il passaggio VERTEX AI (entrambe le istanze devono trovarsi nella stessa regione).
- Assicurati di avere a disposizione il file di dati (.csv). Esegui i comandi seguenti in Cloud Shell per clonare il repository e vai al progetto:
git clone <<repository link>>
cd movie-score
- Utilizza il comando bq load per caricare il file CSV in una tabella BigQuery (tieni presente che puoi anche caricarlo direttamente dall'interfaccia utente 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
- Esegui una query in uno dei tre modi seguenti:
Possiamo interagire con BigQuery in tre modi, ne proveremo due: a. 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:
Utilizzo del comando bq:
bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
5. Utilizzo dei dati di 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 direttamente da BigQuery, registrare il modello con VertexAI ed esporre l'endpoint. Consulta la documentazione di BigQuery AutoML. In questo esempio, però, 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 TABULAR e l'opzione "Regresione / classificazione", quindi fai clic su Crea:
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 BROWSE del 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.
Quando selezioni la tabella/visualizzazione di origine dall'elenco di ricerca, 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 ti capita, non devi fare altro che tornare a Vertex AI.
Addestrare il modello
- Una volta creato il set di dati, dovresti vedere la pagina Analizza con l'opzione per addestrare un nuovo modello. Fai clic su:
- Lascia Scopo come Classificazione e seleziona l'opzione AutoML nella prima pagina, poi fai clic su Continua:
- Assegna un nome al modello, seleziona il nome della colonna di destinazione come "Punteggio" dal menu a discesa visualizzato e fai clic su Continua.
- Tieni inoltre presente che puoi selezionare l'opzione "Esportare il set di dati di test in BigQuery", che ti 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.
- Nella pagina successiva, puoi selezionare le opzioni di addestramento avanzate di cui hai bisogno e le ore per cui vuoi impostare l'addestramento del modello. Tieni presente che ti consigliamo di tenere conto dei prezzi prima di aumentare il numero di ore nodo da utilizzare per l'addestramento.
Fai clic su Inizia addestramento per iniziare ad addestrare il nuovo modello.
Valuta, esegui il deployment e testa il modello
Al termine dell'addestramento, dovresti essere in grado di fare clic su Addestramento (sotto l'intestazione Sviluppo modello nel menu a sinistra) e visualizzare l'addestramento nella sezione Pipeline di addestramento. Fai clic per aprire la pagina del Registro dei modelli. Dovresti riuscire a:
- Visualizza e valuta i risultati dell'addestramento
- Esegui il deployment e il test del modello con l'endpoint API
Una volta eseguito il deployment del modello, viene creato un endpoint API che può essere utilizzato nella tua applicazione per inviare richieste e ottenere i risultati di previsione del modello nella risposta.
Prima di passare alla sezione successiva, assicurati di annotare l'ID endpoint, la posizione e altri dettagli del modello di cui è stato eseguito il deployment nella sezione dell'endpoint Vertex AI.
6. Funzione Cloud Java per attivare l'invocazione di ML
Ricordi come abbiamo l'endpoint e altri dettagli dal passaggio di deployment dell'ML? Lo utilizzeremo qui e, poiché utilizziamo Java Cloud Functions, utilizzeremo pom.xml per gestire le dipendenze. Utilizziamo la libreria google-cloud-aiplatform per utilizzare l'API endpoint AutoML di Vertex AI.
- Cerca Cloud Functions nella console Google Cloud e fai clic su "Crea funzione".
- Inserisci i dettagli di configurazione, ad esempio Ambiente, Nome funzione, Regione, Trigger (in questo caso, HTTPS), l'autenticazione che preferisci, attiva "Richiedi HTTPS" e fai clic su Avanti/Salva.
- Nella pagina successiva, seleziona Runtime (Java 11), Codice sorgente (in linea o caricamento) e inizia a modificare
- Copia i file java e pom.xml dal repository e incolla i rispettivi file nell'editor in linea. Se utilizzi il tuo editor locale (opzione consigliata), clona il codice sorgente dal repository.
- 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
- Per l'ambito di questo codelab, commenta le parti di MongoDB nella classe .java nel codice sorgente copiato
Procedi ed 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 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:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina
- Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminarlo.
8. Complimenti
Complimenti! Hai creato ed eseguito 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.