Przewidywanie ocen filmu w Vertex AI AutoML

1. Wprowadzenie

W tym ćwiczeniu w Codelab utworzymy model prognozowania oceny filmu za pomocą AutoML w Vertex AI, a następnie skonfigurujemy tak, aby punkt końcowy wdrożonego modelu był uruchamiany z poziomu funkcji Java Cloud. Model jest trenowany na danych przechowywanych w BigQuery i zarejestrowany w Vertex AI. Lista usług może być podzielona na 2 sekcje:

  1. Tworzenie i wdrażanie modelu ML
  2. Uruchamianie prognozowania za pomocą interfejsu ML API

Tworzenie modelu ML:

  1. Dane z pliku CSV do BigQuery
  2. Dane BigQuery zintegrowane z Vertex AI na potrzeby tworzenia modeli AutoML
  3. Model wdrożony w Vertex AI Model Registry na potrzeby generowania interfejsu API punktu końcowego

Aktywuj przewidywanie za pomocą interfejsu ML API:

  1. Java Cloud Functions do wywołania wdrożonego punktu końcowego modelu AutoML, który przyjmuje szczegóły filmu jako żądanie z interfejsu użytkownika i zwraca przewidywaną ocenę filmu.

Oto ogólny przegląd architektury aplikacji:

5ae50607c0f2db20.png

Zastosowanie powyższej architektury wykracza poza zakres tego ćwiczenia, ale jeśli chcesz też opracować aplikację kliencką, zapoznaj się z blogiem.

Przyjrzyjmy się teraz etapom wdrażania.

Co utworzysz

Utwórz

  • Zbiór danych BigQuery zawierający komponenty tabeli i modelu
  • Model Vertex AI AutoML (tworzenie i wdrażanie)
  • Java Cloud Functions Trigger do prognozowania za pomocą interfejsu ML API

2. Wymagania

  • przeglądarka, np. Chrome lub Firefox;
  • projekt Google Cloud z włączonymi płatnościami;

Oto wymagania wstępne:

Tworzenie projektu

  1. W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
  3. Aby włączyć interfejs API, otwórz BigQuery. Interfejs internetowy BigQuery możesz też otworzyć bezpośrednio, wpisując w przeglądarce ten adres URL: https://console.cloud.google.com/bigquery.

Aktywowanie Cloud Shell

  1. Użyjesz Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud, które jest wstępnie wczytane z bq: w prawym górnym rogu konsoli Cloud Shell kliknij Aktywuj Cloud Shell: 6757b2fb50ddcc2d.png
  2. Po połączeniu z Cloud Shell powinieneś zobaczyć, że jesteś już uwierzytelniony i że projekt jest już ustawiony na identyfikator Twojego projektu. Aby potwierdzić uwierzytelnianie, uruchom w Cloud Shell to polecenie:
gcloud auth list
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom to polecenie w Cloud Shell:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia:
gcloud config set project <PROJECT_ID>

Informacje o poleceniach i użytkowaniu gcloud znajdziesz w dokumentacji.

3. Przygotowywanie danych do trenowania

Jest to ważny krok we wszystkich projektach, produktach i aplikacjach związanych z danymi, który wymaga dużej wiedzy specjalistycznej w danym obszarze, a także technologii do przygotowania optymalnego zbioru danych i przygotowania go do projektu uczenia maszynowego. W ramach tego ćwiczenia zakładamy, że dane są już przygotowane, i użyjemy przetworzonego pliku danych.

4. Tworzenie i wczytywanie zbioru danych

Zbiór danych BigQuery to zbiór tabel. Wszystkie tabele w zbiorze danych są przechowywane w tej samej lokalizacji danych. Możesz też dołączyć niestandardowe kontrolki dostępu, aby ograniczyć dostęp do zbioru danych i jego tabel.

  1. W Cloud Shell użyj polecenia bq mk, aby utworzyć zbiór danych o nazwie „movies”.
bq mk --location=<<LOCATION>> movies

Ustaw lokalizację na region (asia-south1). Pamiętaj, aby ustawić go jako region również dla kroku VERTEX AI (obie instancje powinny znajdować się w tym samym regionie).

  1. Przygotuj plik danych (CSV). Aby sklonować repozytorium i przejść do projektu, uruchom w Cloud Shell te polecenia:
git clone <<repository link>>

cd movie-score
  1. Użyj polecenia bq load, aby załadować plik CSV do tabeli BigQuery (pamiętaj, że możesz też przesłać go bezpośrednio z interfejsu 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. Przesyłanie zapytania na 1 z 3 sposobów:

Z BigQuery możemy korzystać na 3 sposoby. Wypróbujemy 2 z nich: a. Interfejs internetowy BigQuery b. Polecenie bq c. Interfejs API

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

Do wykonywania zapytań użyłem(-am) obszaru roboczego SQL BigQuery w przeglądarce. Obszar roboczy SQL wygląda tak:

109a0b2c7155e9b3.png

Za pomocą polecenia bq:

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

5. Korzystanie z danych BigQuery w AutoML Vertex AI

Korzystaj z danych z BigQuery, aby bezpośrednio tworzyć modele AutoML za pomocą Vertex AI. Pamiętaj, że możesz też uruchomić AutoML z poziomu BigQuery, zarejestrować model w VertexAI i udostępnić punkt końcowy. Zapoznaj się z dokumentacją BigQuery AutoML. W tym przykładzie użyjemy jednak do utworzenia modelu Vertex AI AutoML.

Tworzenie zbioru danych Vertex AI

Otwórz Vertex AI w konsoli Google Cloud, włącz interfejs Vertex AI API (jeśli nie został jeszcze włączony), rozwiń dane i wybierz Zbiory danych, kliknij Utwórz zbiór danych, wybierz typ danych TABULARNE i opcję „Regresja / Klasyfikacja”, a potem kliknij Utwórz:

4104c75c34cbd2d9.png

Wybieranie źródła danych

Na następnej stronie wybierz źródło danych. Wybierz opcję „Wybierz tabelę lub widok z BigQuery” i w polu BROWSE ścieżki BigQuery wybierz tabelę z BigQuery. Kliknij Kontynuuj.

Pamiętaj: aby tabela BigQuery była widoczna w Vertex AI, instancja BigQuery i zbiory danych Vertex AI powinny znajdować się w tym samym regionie.

b787ef18dbca4cff.png

Podczas wybierania źródłowej tabeli lub widoku na liście przeglądania pamiętaj, aby kliknąć przycisk radiowy, aby kontynuować wykonywanie poniższych czynności. Jeśli przypadkowo klikniesz nazwę tabeli lub widoku, zostaniesz przekierowany do Dataplex. W takim przypadku wystarczy, że przejdziesz do Vertex AI.

Trenowanie modelu

  1. Po utworzeniu zbioru danych powinna się wyświetlić strona Analizuj z opcją trenowania nowego modelu. Kliknij:

bf095263d57106de.png

  1. Pozostaw cel jako Klasyfikacja i na pierwszej stronie wybierz opcję AutoML, a potem kliknij Dalej: e50597bc3f29894c.png
  2. Nadaj modelowi nazwę i w menu kliknij „Wynik” jako nazwę kolumny docelowej, a potem kliknij „Dalej”.
  3. Pamiętaj też, że możesz zaznaczyć opcję „Eksportuj testowy zbiór danych do BigQuery”, która ułatwia wyświetlanie testowego zbioru danych z wynikami w bazie danych bez dodatkowej warstwy integracji czy przenoszenia danych między usługami.
  4. Na następnej stronie możesz wybrać opcje zaawansowanego trenowania, których potrzebujesz, oraz określić liczbę godzin, przez które ma być trenowany model. Zanim zwiększysz liczbę godzin otwarcia węzłów, które chcesz wykorzystać na trenowanie, weź pod uwagę ceny.

Kliknij Rozpocznij trenowanie, aby rozpocząć trenowanie nowego modelu.

e72b004a17849bd.png

Ocena, wdrażanie i testowanie modelu

Po zakończeniu trenowania możesz kliknąć Trenowanie (w menu po lewej stronie pod nagłówkiem Rozwijanie modelu) i zobaczyć trenowanie w sekcji Pętle trenowania. Kliknij ją, aby otworzyć stronę Model Registry. Powinieneś mieć możliwość:

  1. Wyświetlanie i ocenianie wyników szkolenia4767b4bbd7cf93fa.png
  2. Wdróż i przetestuj model w punkcie końcowym interfejsu API.

Po wdrożeniu modelu tworzy się punkt końcowy interfejsu API, którego można używać w aplikacji do wysyłania żądań i otrzymywania w odpowiedzi wyników prognozy modelu.

95fb4495618174f0.png

Zanim przejdziesz do następnej sekcji, zanotuj identyfikator punktu końcowego, lokalizację i inne szczegóły wdrożonego modelu w sekcji punktu końcowego Vertex AI.

6. Funkcja Java Cloud Functions do wywołania ML

Pamiętasz, że mamy punkt końcowy i inne szczegóły z etapu wdrażania ML? Użyjemy tutaj tego rozwiązania. Ponieważ używamy funkcji Cloud Functions w Javie, do obsługi zależności użyjemy pliku pom.xml. Korzystamy z biblioteki google-cloud-aiplatform do korzystania z interfejsu punktu końcowego AutoML Vertex AI.

  1. W konsoli Google Cloud wyszukaj Cloud Functions i kliknij „Utwórz funkcję”.
  2. Wpisz szczegóły konfiguracji, takie jak środowisko, nazwa funkcji, region, wyzwalacz (w tym przypadku HTTPS), wybrany rodzaj uwierzytelniania, włącz „Wymagaj HTTPS” i kliknij Dalej lub Zapisz.

a68272022df062f2.png

  1. Na następnej stronie wybierz Środowisko wykonawcze (Java 11), Kod źródłowy (wstawiony lub przesłany) i zacznij edytować.

13df616369ca5951.png

  1. Skopiuj pliki java i pom.xml z repozytorium i wklej je w odpowiednich plikach w edytorze wbudowanym. Jeśli używasz lokalnego edytora (zalecane), sklonuj źródło z repozytorium.
  2. W tym przykładzie zmień identyfikator projektu, identyfikator punktu końcowego, lokalizację i punkt końcowy w pliku źródłowym .java. Pamiętaj, że zalecaną praktyką jest przechowywanie danych logowania w usłudze Secret Manager.
  3. W ramach tego Codelab w skopiowanym kodzie źródłowym w klasie .java odkomentuj elementy dotyczące MongoDB.

Gdy wszystkie zmiany zostaną wprowadzone, możesz wdrożyć funkcję. Powinieneś zobaczyć adres URL punktu końcowego, którego możesz użyć w aplikacji klienta, aby wysyłać żądania do tej funkcji w Cloud Functions i otrzymywać w odpowiedzi ocenę filmu.

7. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby wykorzystane w tym poście, wykonaj te czynności:

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Na liście projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
  3. W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.

8. Gratulacje

Gratulacje! Udało Ci się utworzyć i wdrżyć model prognozowania oceny filmu w Vertex AI AutoML oraz wywołać wdrożony model za pomocą funkcji Cloud Functions.