Vertex AI: tworzenie modelu wykrywania oszustw za pomocą AutoML

1. Przegląd

W tym laboratorium użyjesz Vertex AI do wytrenowania i udostępnienia modelu z danymi tabelarycznymi. Jest to najnowsza usługa AI w Google Cloud, która jest obecnie dostępna w wersji testowej.

Czego się dowiesz

Poznasz takie zagadnienia jak:

  • Przesyłanie zarządzanego zbioru danych do Vertex AI
  • Trenowanie modelu za pomocą AutoML
  • Wdrożenie wytrenowanego modelu AutoML w punkcie końcowym i używanie tego punktu końcowego do uzyskiwania prognoz

Całkowity koszt ukończenia tego laboratorium w Google Cloud wynosi około 22 USD.

2. Wprowadzenie do Vertex AI

W tym module wykorzystujemy najnowszą ofertę produktów AI dostępną w Google Cloud. Vertex AI integruje oferty ML w Google Cloud, zapewniając płynne środowisko programistyczne. Wcześniej modele wytrenowane za pomocą AutoML i modele niestandardowe były dostępne w ramach osobnych usług. Nowa oferta łączy je w jeden interfejs API wraz z innymi nowymi usługami. Możesz też przeprowadzić migrację istniejących projektów do Vertex AI. Jeśli masz jakieś uwagi, odwiedź stronę pomocy.

Vertex AI obejmuje wiele różnych usług, które obsługują kompleksowe przepływy pracy związane z uczeniem maszynowym. To laboratorium skupi się na produktach wymienionych poniżej: AutoML do danych w formie tabeli, Prognozowanie i Workbench.

Omówienie usługi Vertex

3. Konfigurowanie środowiska

Aby wykonać to ćwiczenie, musisz mieć projekt w Google Cloud Platform z włączonymi płatnościami. Aby utworzyć projekt, postępuj zgodnie z instrukcjami.

Krok 1. Włącz interfejs Compute Engine API

Przejdź do Compute Engine i kliknij Włącz, jeśli nie jest jeszcze włączona. Będzie Ci potrzebny do utworzenia instancji notatnika.

Krok 2. Włącz interfejs Vertex AI API

Otwórz sekcję Vertex AI w konsoli Cloud i kliknij Włącz interfejs Vertex AI API.

Panel Vertex

Krok 3. Tworzenie instancji Vertex AI Workbench

W sekcji Vertex AI w konsoli Cloud kliknij Workbench:

Menu Vertex AI

Następnie w sekcji Notatniki zarządzane przez użytkownika kliknij Nowy notatnik:

Utwórz nowy notatnik

Następnie wybierz najnowszą wersję typu instancji TensorFlow Enterprise (z LTS) bez procesorów graficznych:

Instancja TFE

Użyj opcji domyślnych, a potem kliknij Utwórz.

Krok 5. Otwórz notatnik

Po utworzeniu instancji wybierz Otwórz JupyterLab:

Otwórz notatnik

Dane, których użyjemy do wytrenowania modelu, pochodzą z tego zbioru danych dotyczących wykrywania oszustw związanych z kartami kredytowymi. Użyjemy wersji tego zbioru danych udostępnionej publicznie w BigQuery.

4. Tworzenie zarządzanego zbioru danych

W Vertex AI możesz tworzyć zarządzane zbiory danych dla różnych typów danych. Następnie możesz wygenerować statystyki dotyczące tych zbiorów danych i użyć ich do trenowania modeli za pomocą AutoML lub własnego kodu modelu niestandardowego.

Krok 1. Utwórz zbiór danych

W menu Vertex w konsoli wybierz Zbiory danych:

Wybierz Zbiory danych.

W tym laboratorium zbudujemy model wykrywania oszustw, który będzie określać, czy dana transakcja kartą kredytową powinna zostać zaklasyfikowana jako oszustwo.

Na stronie Zbiory danych nadaj zbiorowi danych nazwę, a potem kliknij kolejno TabelarycznyRegresja/klasyfikacja. Następnie utwórz zbiór danych:

Utwórz zbiór danych

Dane do zarządzanych zbiorów danych w Vertex możesz importować na kilka sposobów:

  • Przesyłanie pliku lokalnego z komputera
  • Wybieranie plików z Cloud Storage
  • Wybieranie danych z BigQuery

W tym przypadku będziemy przesyłać dane z publicznej tabeli BigQuery.

Krok 2. Importowanie danych z BigQuery

Jako metodę importu wybierz „Wybierz tabelę lub widok z BigQuery”, a następnie skopiuj poniższy tekst do pola Tabela BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Następnie kliknij Dalej:

Importowanie danych BQ

Po zaimportowaniu zbioru danych powinien pojawić się ekran podobny do tego:

Zaimportowane dane

Jeśli chcesz, możesz kliknąć Wygeneruj statystyki, aby wyświetlić dodatkowe informacje o tym zbiorze danych, ale nie jest to wymagane przed przejściem do następnego kroku. Ten zbiór danych zawiera prawdziwe transakcje kartą kredytową. Większość nazw kolumn została ukryta, dlatego są one nazywane V1, V2 itp.

5. Trenowanie modelu za pomocą AutoML

Po przesłaniu zarządzanego zbioru danych możemy wytrenować model na podstawie tych danych. Wytrenujemy model klasyfikacji, który będzie prognozować, czy dana transakcja jest oszustwem. Vertex AI oferuje 2 opcje trenowania modeli:

  • AutoML trenowanie wysokiej jakości modeli przy minimalnym nakładzie pracy i bez specjalistycznej wiedzy z tej dziedziny.
  • Trenowanie niestandardowe: uruchamiaj w chmurze niestandardowe aplikacje do trenowania, korzystając z jednego z gotowych kontenerów Google Cloud lub własnego.

W tym laboratorium użyjemy AutoML do trenowania.

Krok 1. Uruchom zadanie trenowania

Na stronie szczegółów zbioru danych, na której skończyliśmy w poprzednim kroku, kliknij Trenuj nowy model w prawym górnym rogu. Jako cel wybierz Klasyfikacja, pozostaw zaznaczoną opcję AutoML w przypadku trenowania modelu, a następnie kliknij Dalej:

Trenowanie modelu – krok 1

Nadaj modelowi nazwę lub użyj nazwy domyślnej. W sekcji Kolumna docelowa wybierz Klasa. Jest to liczba całkowita wskazująca, czy dana transakcja była oszukańcza (0 – nieoszukańcza, 1 – oszukańcza).

Następnie kliknij Dalej:

Trenowanie modelu – krok 2

W tym kroku przewiń w dół i kliknij, aby rozwinąć Opcje zaawansowane. Ten zbiór danych jest mocno niezrównoważony (mniej niż 1% danych zawiera transakcje oszukańcze), więc wybierz opcję AUC PRC, która maksymalizuje precyzję i czułość w przypadku mniej popularnej klasy:

Zaawansowane opcje trenowania

Kliknij Dalej, a potem przejdź do ostatniego kroku (Obliczenia i ceny). Wpisz tutaj 1 jako liczbę godzin węzła w budżecie i pozostaw włączone wczesne zatrzymywanie. Trenowanie modelu AutoML przez 1 godzinę obliczeniową to zwykle dobry początek, aby sprawdzić, czy istnieje związek między wybranymi przez Ciebie cechami a etykietą. Możesz tam zmodyfikować funkcje i trenować model dłużej, aby zwiększyć jego wydajność. Następnie kliknij Rozpocznij trenowanie.

Gdy zadanie trenowania się zakończy, otrzymasz e-maila. Trenowanie potrwa nieco ponad godzinę, ponieważ trzeba uwzględnić czas potrzebny na uruchomienie i zamknięcie zasobów.

6. Poznaj wskaźniki oceny modelu

W tym kroku sprawdzimy, jak działa nasz model.

Po zakończeniu zadania trenowania modelu otwórz kartę Modele w Vertex. Kliknij wytrenowany model i otwórz kartę Ocena. Istnieje wiele wskaźników oceny, ale my skupimy się na 2: macierzy pomyłekważności cech.

Krok 1. Zapoznaj się z tablicą pomyłek

Macierz pomyłek pokazuje odsetek przykładów z każdej klasy w zbiorze testowym, które model prawidłowo przewidział. W przypadku niezrównoważonego zbioru danych, takiego jak ten, z którym mamy do czynienia, jest to lepsza miara wydajności modelu niż ogólna dokładność.

Pamiętaj, że mniej niż 1% przykładów w naszym zbiorze danych to transakcje oszukańcze, więc jeśli dokładność naszego modelu wynosi 99%, istnieje duże prawdopodobieństwo, że w 99% przypadków losowo zgaduje klasę transakcji nieoszukańczych. Dlatego lepszym wskaźnikiem jest w tym przypadku dokładność modelu w przypadku każdej klasy.

Jeśli przewiniesz w dół kartę Ocena, zobaczysz macierz pomyłek podobną do tej (dokładne wartości procentowe mogą się różnić):

Tablica pomyłek

Tablica pomyłek pokazuje, że nasz początkowy model jest w stanie prawidłowo sklasyfikować 85% przykładów oszustw w naszym zbiorze testowym. To całkiem niezły wynik, zwłaszcza biorąc pod uwagę znaczną nierównowagę w naszym zbiorze danych. Następnie możemy spróbować trenować model przez więcej godzin obliczeniowych, aby sprawdzić, czy uda nam się uzyskać wynik lepszy niż 85%.

Krok 2. Sprawdzanie ważności funkcji

Pod macierzą pomyłek powinien być widoczny wykres ważności cech podobny do tego:

Znaczenie cech

Pokazuje to, które cechy dostarczyły naszemu modelowi najsilniejszego sygnału podczas generowania prognoz. Ważność funkcji to jeden z rodzajów wyjaśnialnej AI – dziedziny, która obejmuje różne metody uzyskiwania większej ilości informacji o tym, jak model ML tworzy prognozy. Wykres znaczenia cech widoczny tutaj jest obliczany jako suma na podstawie wszystkich prognoz modelu w zbiorze testowym. Pokazuje najważniejsze cechy w przypadku wielu przykładów.

Ten wykres byłby ciekawszy, gdyby większość elementów w naszym zbiorze danych nie była zasłonięta. Możemy na przykład dowiedzieć się, że największym wskaźnikiem oszustwa był typ transakcji (przelew, wpłata itp.).

W rzeczywistości wartości ważności cech mogą pomóc nam ulepszyć model i zwiększyć zaufanie do jego prognoz. Podczas następnego trenowania modelu możemy zdecydować się na usunięcie najmniej istotnych cech lub połączenie 2 ważniejszych cech w cechę złożoną, aby sprawdzić, czy poprawi to skuteczność modelu.

Sprawdzamy tu ważność cech w przypadku wsadu, ale w Vertex AI możemy też uzyskać ważność cech dla poszczególnych prognoz. Gdy wdrożymy model, zobaczymy, jak to zrobić.

7. Wdrażanie modelu w punkcie końcowym

Po wytrenowaniu modelu kolejnym krokiem jest utworzenie punktu końcowego w Vertex. Z zasobem Model w Vertex AI może być powiązanych wiele punktów końcowych, a ruch można dzielić między nimi.

Krok 1. Tworzenie punktu końcowego

Na stronie modelu otwórz kartę Wdróż i przetestuj i kliknij Wdróż w punkcie końcowym:

Wdrażanie i testowanie

Nadaj punktowi końcowemu nazwę, np. fraud_v1, pozostaw ustawienie Dostępu na Standardowy i kliknij Dalej.

Pozostaw domyślne ustawienia podziału ruchu i typu maszyny, kliknij Gotowe, a potem Dalej.

Nie będziemy używać monitorowania modelu w tym punkcie końcowym, więc możesz pozostawić to pole niezaznaczone i kliknąć Wdróż. Wdrożenie punktu końcowego może potrwać kilka minut. Gdy proces dobiegnie końca, obok niego pojawi się zielony znacznik wyboru:

Wdrożony punkt końcowy

Jesteś coraz bliżej. Teraz możesz uzyskać prognozy na podstawie wdrożonego modelu.

8. Uzyskiwanie prognoz z wdrożonego modelu

Prognozy modelu możesz uzyskać na kilka sposobów:

  • Interfejs Vertex AI
  • Vertex AI API

Obie te opcje wyświetlimy tutaj.

Krok 1. Uzyskiwanie prognoz modelu w interfejsie

Na stronie modelu, na której wyświetlany jest punkt końcowy (w miejscu, w którym skończyliśmy w ostatnim kroku), przewiń w dół do sekcji Testowanie modelu:

Testowanie modelu

Vertex AI wybrał losowe wartości dla każdej cechy naszego modelu, których możemy użyć do uzyskania prognozy testowej. Jeśli chcesz, możesz zmienić te wartości. Przewiń stronę w dół i kliknij Wykonaj prognozę.

W sekcji Wynik prognozy na stronie powinny być widoczne prognozowane przez model wartości procentowe dla każdej klasy. Wynik ufności 0.99 dla klasy 0 oznacza na przykład, że model uważa, że w 99% przypadków ten przykład nie jest oszustwem.

Krok 2. Uzyskiwanie prognoz modelu za pomocą interfejsu Vertex AI API

Interfejs użytkownika to świetny sposób na sprawdzenie, czy wdrożony punkt końcowy działa zgodnie z oczekiwaniami, ale prawdopodobnie będziesz chcieć uzyskiwać prognozy dynamicznie za pomocą wywołania interfejsu API REST. Aby pokazać, jak uzyskać prognozy modelu, użyjemy instancji Vertex Workbench utworzonej na początku tego modułu.

Następnie otwórz utworzoną instancję notatnika i otwórz notatnik w Pythonie 3 z menu z aplikacjami:

Otwórz notatnik

Aby zainstalować pakiet SDK Vertex, w komórce notatnika uruchom to polecenie:

!pip3 install google-cloud-aiplatform --upgrade --user

Następnie dodaj komórkę w notatniku, aby zaimportować pakiet SDK i utworzyć odwołanie do właśnie wdrożonego punktu końcowego:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

W powyższym ciągu endpoint_name musisz zastąpić 2 wartości numerem projektu i punktem końcowym. Numer projektu znajdziesz w panelu informacyjnym projektu.

Identyfikator punktu końcowego znajdziesz w sekcji punktów końcowych w konsoli:

Znajdowanie identyfikatora punktu końcowego

Na koniec utwórz prognozę dla punktu końcowego, kopiując i uruchamiając w nowej komórce poniższy kod:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

W przypadku klasy 0 powinna pojawić się prognoza w okolicach .67, co oznacza, że model uważa, że istnieje 67% szans, że ta transakcja nie jest oszustwem.

🎉 Gratulacje! 🎉

Dowiedziałeś się, jak używać Vertex AI do:

  • Przesyłanie zarządzanego zbioru danych
  • Trenowanie i ocenianie modelu na podstawie danych tabelarycznych za pomocą AutoML
  • Wdrażanie modelu w punkcie końcowym
  • Uzyskiwanie prognoz w punkcie końcowym modelu za pomocą pakietu SDK Vertex

Więcej informacji o poszczególnych częściach Vertex AI znajdziesz w dokumentacji.

9. Czyszczenie

Jeśli chcesz nadal korzystać z notatnika utworzonego w tym module, zalecamy wyłączanie go, gdy nie jest używany. W interfejsie Workbench w konsoli Cloud wybierz notatnik, a następnie kliknij Zatrzymaj.

Jeśli chcesz całkowicie usunąć notatnik, kliknij przycisk Usuń w prawym górnym rogu.

Aby usunąć wdrożony punkt końcowy, otwórz sekcję Punkty końcowe w konsoli Vertex AI i wycofaj wdrożenie modelu z punktu końcowego:

Usuń punkt końcowy

Aby usunąć zasobnik Storage, w menu nawigacyjnym w konsoli Cloud otwórz Storage, wybierz zasobnik i kliknij Usuń:

Usuń miejsce na dane