Przewidywanie ocen filmu w Vertex AI AutoML

1. Wprowadzenie

W ramach tego ćwiczenia w Codelabs utworzymy model prognozowania wyników filmu za pomocą Vertex AI AutoML, a wdrożony punkt końcowy modelu będzie aktywowany za pomocą Javy Cloud Functions. Model jest trenowany z użyciem danych przechowywanych w BigQuery i zarejestrowany w Vertex AI. Listę usług można podzielić na 2 sekcje:

  1. Tworzenie i wdrażanie modelu ML
  2. Aktywator do prognozowania przy użyciu interfejsu ML API

Tworzenie modelu ML:

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

Aktywator do prognozowania za pomocą interfejsu ML API:

  1. Funkcje w Cloud Functions w Javie uruchamiają wywołanie punktu końcowego wdrożonego modelu AutoML, który pobiera szczegóły filmu z interfejsu użytkownika, zwraca prognozowany wynik SCORE

Poniżej znajduje się ogólny przegląd architektury aplikacji:

5ae50607c0f2db20.png

To ćwiczenie nie obejmuje zastosowania powyższej architektury, ale jeśli chcesz tworzyć także aplikację kliencką, zajrzyj na bloga.

Przyjrzyjmy się poszczególnym etapom implementacji.

Co utworzysz

Utworzysz

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

2. Wymagania

  • przeglądarki, na przykład 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 projektów 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. Otwórz BigQuery, aby włączyć interfejs API. Możesz też otworzyć interfejs internetowy BigQuery bezpośrednio, wpisując w przeglądarce ten adres URL: https://console.cloud.google.com/bigquery

Aktywowanie Cloud Shell

  1. Użyjesz Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud, które ma wstępnie zainstalowane narzędzie bq. W konsoli Cloud kliknij Aktywuj Cloud Shell w prawym górnym rogu: 6757b2fb50ddcc2d.png
  2. Po nawiązaniu połączenia z Cloud Shell powinno pojawić się informacja, że użytkownik jest już uwierzytelniony i że projekt jest już ustawiony na identyfikator Twojego projektu. Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list
  1. Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt
gcloud config list project
  1. Jeśli Twój projekt nie jest skonfigurowany, ustaw go za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>

Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji.

3. Przygotowuję dane do trenowania

To ważny krok we wszystkich projektach, usługach i aplikacjach związanych z danymi, który wymaga nie tylko specjalistycznej wiedzy w danej dziedzinie, ale też odpowiedniej technologii, aby przygotować optymalny zbiór danych i przygotować go do projektu ML. Na potrzeby tego ćwiczenia w Codelabs zakładamy, że dane są już przygotowane i używamy tego już przetworzonego pliku danych.

4. Tworzę i wczytuję zbiór 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 kontrole 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

Jako lokalizację ustaw region (asia-south1). Pamiętaj, aby ustawić ją także jako region dla kroku VERTEX AI (obie instancje powinny być w tym samym regionie).

  1. Upewnij się, że masz gotowy plik danych (.csv). Aby skopiować repozytorium i przejść do projektu, uruchom te polecenia w Cloud Shell:
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ż przesyłać dane 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. Wyślij zapytanie na jeden z 3 sposobów:

Możemy wchodzić w interakcje z BigQuery na 3 sposoby. Wypróbujemy 2 z nich: Internetowy interfejs użytkownika BigQuery b. Polecenie bq c. Interfejs API

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

Do uruchamiania zapytań używam obszaru roboczego BigQuery Web SQL. Obszar roboczy SQL wygląda tak:

109a0b2c7155e9b3.png

Przy użyciu 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 Vertex AI AutoML

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

Tworzenie zbioru danych Vertex AI

Otwórz Vertex AI w konsoli Google Cloud, włącz interfejs Vertex AI API, jeśli jeszcze go nie masz, rozwiń dane i wybierz Zbiory danych, kliknij Utwórz zbiór danych, wybierz typ danych TABULAR i kliknij „Regresja / klasyfikacja”. i kliknij Utwórz:

4104c75c34cbd2d9.png

Wybierz źródło danych

Na następnej stronie wybierz źródło danych. Kliknij „Wybierz tabelę lub widok z BigQuery”. i w polu Ścieżka BigQuery PRZEGLĄDAJ tabelę z BigQuery. Kliknij Kontynuuj.

Pamiętaj: aby tabela BigQuery wyświetlała się w Vertex AI, instancje BigQuery i zbiory danych Vertex AI powinny mieć ten sam region.

b787ef18dbca4cff.png

Po wybraniu tabeli źródłowej/widoku źródłowego z listy przeglądania pamiętaj o kliknięciu odpowiedniego przycisku, aby przejść do kolejnych kroków. Jeśli przypadkowo klikniesz nazwę tabeli lub widoku, przejdziesz do Dataplex. W takiej sytuacji musisz wrócić do Vertex AI.

Wytrenuj model

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

bf095263d57106de.png

  1. Pozostaw cel jako Klasyfikacja, wybierz opcję AutoML na pierwszej stronie i kliknij Dalej: e50597bc3f29894c.png
  2. Nazwij model i wybierz nazwę kolumny docelowej jako „Wynik” i kliknij Dalej.
  3. Możesz też zaznaczyć opcję „Eksportuj testowy zbiór danych do BigQuery” pozwala łatwo wyświetlać zbiór testowy wraz z wynikami w bazie danych bez konieczności tworzenia dodatkowej warstwy integracji i przenoszenia danych między usługami.
  4. Na następnej stronie możesz wybrać dowolne zaawansowane opcje trenowania i godziny, w których chcesz ustawić trenowanie modelu. Pamiętaj, że warto wziąć pod uwagę ceny, zanim zwiększysz liczbę godzin pracy węzłów, które chcesz wykorzystać do trenowania.

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

e72b004a17849bd.png

Ocena, wdrażanie i testowanie modelu

Po zakończeniu trenowania możesz kliknąć opcję Trenowanie (pod nagłówkiem Tworzenie modeli w menu po lewej stronie) i zobaczyć swoje trenowanie na liście w sekcji Potoki szkoleniowe. Kliknij go, aby przejść na stronę Model Registry. Powinniście być w stanie:

  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 prognozy modelu.

95fb4495618174f0.png

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

6. Funkcja w Cloud Functions w JavaScripcie do wyzwalania wywoływania systemów uczących się

Pamiętasz sposób uzyskiwania punktu końcowego i innych szczegółów z kroku wdrażania systemów uczących się? Wykorzystamy go, a ponieważ używamy Javy w Cloud Functions, do obsługi zależności użyjemy pliku pom.xml. Używamy biblioteki google-cloud-aiplatform do przetwarzania interfejsu API punktu końcowego Vertex AI AutoML.

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

a68272022df062f2.png

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

13df616369ca5951.png

  1. Skopiuj pliki java i pom.xml z repozytorium i wklej odpowiednie pliki we wbudowanym edytorze, jeśli używasz edytora lokalnego (zalecane), a następnie skopiuj ź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, ale pamiętaj, że sprawdzoną metodą jest używanie usługi Secret Manager do przechowywania danych logowania.
  3. Na potrzeby tego ćwiczenia w Codelabs umieść w komentarzu części MongoDB w klasie .java w skopiowanym kodzie źródłowym

Śmiało i wdróż funkcję po wprowadzeniu wszystkich zmian. Powinien być widoczny adres URL punktu końcowego, którego można używać w aplikacji klienckiej do wysyłania żądań do tej funkcji w Cloud Functions i otrzymywania w odpowiedzi wyniku filmu.

7. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte 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 wdrożyć model prognozowania wyników filmu w Vertex AI AutoML oraz aktywować wdrożony model z Cloud Functions.