Przewidywanie ocen filmu w Vertex AI AutoML

1. Wprowadzenie

W tym ćwiczeniu utworzymy model prognozowania ocen filmów za pomocą Vertex AI AutoML i skonfigurujemy aktywowanie wdrożonego punktu końcowego modelu z funkcji w Cloud Functions w języku Java. Model jest trenowany na danych przechowywanych w BigQuery i zarejestrowanych w Vertex AI. Listę usług można podzielić na 2 sekcje:

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

Tworzenie modelu ML:

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

Aktywator do prognozowania za pomocą interfejsu ML API:

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

Poniżej znajdziesz 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 tym blogiem.

Przejdźmy do kroków implementacji.

Co utworzysz

Utworzysz:

  • zbiór danych BigQuery zawierający tabelę i komponenty modelu,
  • model Vertex AI AutoML (utworzenie i wdrożenie),
  • aktywator funkcji w Cloud Functions w języku Java 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 wyboru projektu wybierz lub utwórz projekt Google Cloud .
  2. Sprawdź, czy w projekcie w chmurze 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. Możesz też otworzyć interfejs BigQuery bezpośrednio w przeglądarce, wpisując ten adres URL: https://console.cloud.google.com/bigquery.

Aktywowanie Cloud Shell

  1. Będziesz używać Cloud Shell, środowiska wiersza poleceń działającego w Google Cloud, które jest wstępnie załadowane narzędziem bq: w konsoli Google Cloud kliknij Aktywuj Cloud Shell w prawym górnym rogu: 6757b2fb50ddcc2d.png.
  2. Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu. Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project <PROJECT_ID>

Informacje o poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.

3. Przygotowywanie danych treningowych

Jest to ważny krok we wszystkich projektach, usługach i aplikacjach związanych z danymi, który wymaga dużej wiedzy w danej dziedzinie oraz technologii, aby przygotować optymalny zbiór danych i dostosować go do projektu ML. Na potrzeby tego ćwiczenia założymy, że dane są już przygotowane, i użyjemy tego 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 location. Możesz też dołączyć niestandardowe ustawienia kontroli dostępu, aby ograniczyć dostęp do zbioru danych i jego tabel.

  1. Użyj w Cloud Shell 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ć ten sam region w kroku dotyczącym Vertex AI (obie instancje powinny znajdować się w tym samym regionie).

  1. Sprawdź, czy masz gotowy plik danych (.csv). Aby sklonować repozytorium i przejść do projektu, wykonaj w Cloud Shell te polecenia:
git clone <<repository link>>

cd movie-score
  1. Użyj polecenia bq load, aby wczytać plik CSV do tabeli BigQuery (pamiętaj, że możesz też przesłać plik 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. Zapytanie możesz wykonać na 3 sposoby:

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

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

Do uruchamiania zapytań użyłem obszaru roboczego SQL w BigQuery. Obszar roboczy SQL wygląda tak:

109a0b2c7155e9b3.png

Używanie polecenia bq:

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

5. Używanie danych BigQuery w Vertex AI AutoML

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

Tworzenie zbioru danych Vertex AI

W konsoli Google Cloud otwórz Vertex AI, włącz Vertex AI API, jeśli nie zostało to jeszcze zrobione, rozwiń sekcję Dane i wybierz Zbiory danych, kliknij Utwórz zbiór danych, wybierz typ danych TABULAR i opcję „Regresja / klasyfikacja”, a następnie 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 wybierz tabelę z BigQuery w polu PRZEGLĄDAJ ścieżki BigQuery. Kliknij Kontynuuj.

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

b787ef18dbca4cff.png

Gdy wybierasz tabelę lub widok źródłowy z listy przeglądania, kliknij przycisk opcji, aby kontynuować wykonywanie tych czynności. Jeśli przypadkowo klikniesz nazwę tabeli lub widoku, przejdziesz do Dataplex. W takim przypadku musisz wrócić do Vertex AI.

Trenowanie modelu

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

bf095263d57106de.png

  1. Na pierwszej stronie pozostaw Cel jako Klasyfikacja, wybierz opcję AutoML i kliknij Dalej: e50597bc3f29894c.png.
  2. Nadaj modelowi nazwę, w menu, które się wyświetli, wybierz nazwę kolumny docelowej „Score” i kliknij Dalej.
  3. Pamiętaj też, że możesz zaznaczyć opcję „Eksportuj zbiór danych testowych do BigQuery”. Ułatwia to wyświetlanie zbioru testowego z wynikami w bazie danych bez dodatkowej warstwy integracji ani konieczności przenoszenia danych między usługami.
  4. Na następnej stronie możesz wybrać dowolne zaawansowane opcje trenowania i liczbę godzin, przez które model ma być trenowany. Pamiętaj, że przed zwiększeniem liczby godzin węzła, które chcesz wykorzystać na trenowanie, warto sprawdzić cennik.

Aby rozpocząć trenowanie nowego modelu, kliknij Rozpocznij trenowanie.

e72b004a17849bd.png

Ocena, wdrażanie i testowanie modelu

Po zakończeniu trenowania możesz kliknąć Trenowanie (w menu po lewej stronie w sekcji Tworzenie modelu) i zobaczyć trenowanie na liście w sekcji Potoki trenowania. Kliknij, aby przejść do strony Model Registry. Powinny być dostępne te opcje:

  1. Wyświetlanie i ocenianie wyników trenowania 4767b4bbd7cf93fa.png
  2. Wdrażanie i testowanie modelu za pomocą punktu końcowego interfejsu API

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

95fb4495618174f0.png

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

6. Funkcja w Cloud Functions w języku Java do aktywowania wywołania ML

Pamiętasz punkt końcowy i inne szczegóły z kroku wdrażania ML? Użyjemy ich tutaj. Ponieważ używamy funkcji w Cloud Functions w języku Java, do obsługi zależności użyjemy pliku pom.xml. Do korzystania z interfejsu API punktu końcowego Vertex AI AutoML używamy biblioteki google-cloud-aiplatform.

  1. W konsoli Google Cloud wyszukaj Cloud Functions i kliknij „Utwórz funkcję”.
  2. Wpisz szczegóły konfiguracji, takie jak środowisko, nazwa funkcji, region, aktywator (w tym przypadku HTTPS), uwierzytelnianie, które wybierzesz, włącz „Wymagaj HTTPS” i kliknij Dalej/Zapisz.

a68272022df062f2.png

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

13df616369ca5951.png

  1. Skopiuj pliki java i pom.xml z repozytorium i wklej je do odpowiednich plików w edytorze wbudowanym. Jeśli używasz edytora lokalnego (zalecane), sklonuj źródło z repozytorium.
  2. W pliku źródłowym .java zmień identyfikator projektu, identyfikator punktu końcowego, lokalizację i punkt końcowy na potrzeby tego przykładu. Pamiętaj jednak, że najlepszym rozwiązaniem jest używanie Secret Manager do przechowywania danych logowania.
  3. Na potrzeby tego ćwiczenia zakomentuj części MongoDB w klasie .java w skopiowanym kodzie źródłowym.

Po wprowadzeniu wszystkich zmian wdróż funkcję. Powinien się wyświetlić adres URL punktu końcowego, którego można użyć w aplikacji klienckiej do wysyłania żądań do tej funkcji w Cloud Functions i otrzymywania w odpowiedzi oceny filmu.

7. Zwalnianie miejsca

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

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Z listy 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 wdrożyć model prognozowania ocen filmów w Vertex AI AutoML oraz aktywować wdrożony model z Cloud Functions.