1. Omówienie
W tym module użyjesz Vertex AI do trenowania i uzyskiwania dostępu do modelu z danymi tabelarycznym. Jest to najnowsza oferta związana z AI w Google Cloud, która jest obecnie w wersji testowej.
Czego się nauczysz
Poznasz takie zagadnienia jak:
- Przesyłanie zbioru danych zarządzanego do Vertex AI
- Trenowanie modelu za pomocą AutoML
- Wdróż wytrenowany model AutoML w punkcie końcowym i używaj tego punktu końcowego do uzyskiwania prognoz
Łączny koszt przeprowadzenia tego laboratorium w Google Cloud wynosi około 22 USD.
2. Wprowadzenie do Vertex AI
W tym module wykorzystano najnowszą ofertę usług AI dostępną w Google Cloud. Vertex AI integruje ofertę systemów uczących się z całego Google Cloud, tworząc bezproblemowe środowisko programistyczne. Wcześniej modele wytrenowane za pomocą AutoML i modele niestandardowe były dostępne za pomocą oddzielnych usług. Nowa oferta jest łączona w 1 interfejs API wraz z innymi nowymi usługami. Możesz też przenieść istniejące projekty do Vertex AI. Jeśli chcesz podzielić się opinią, odwiedź stronę pomocy.
Vertex AI zawiera wiele różnych usług, które obsługują kompleksowe przepływy pracy związane z systemami uczącymi się. W tym laboratorium skupimy się na usługach wymienionych poniżej: AutoML do danych tabelarycznych, Prediction i Workbench.
3. Konfigurowanie środowiska
Aby uruchomić to ćwiczenia z programowania, musisz mieć projekt Google Cloud Platform z włączonymi płatnościami. Aby utworzyć projekt, postępuj zgodnie z tymi instrukcjami.
Krok 1. Włącz interfejs Compute Engine API
Przejdź do Compute Engine i wybierz Włącz, jeśli usługa nie jest jeszcze włączona. Potrzebujesz go do utworzenia instancji notatnika.
Krok 2. Włącz interfejs Vertex AI API
Przejdź do sekcji Vertex AI w konsoli Cloud i kliknij Włącz interfejs Vertex AI API.
Krok 3. Utwórz instancję Vertex AI Workbench
W konsoli Cloud w sekcji Vertex AI kliknij Workbench:
W sekcji Notatniki zarządzane przez użytkownika kliknij Nowy notatnik:
Następnie wybierz najnowszą wersję typu instancji TensorFlow Enterprise (z LTS) bez procesorów graficznych:
Użyj opcji domyślnych i kliknij Utwórz.
Krok 5. Otwórz notatnik
Po utworzeniu instancji wybierz Otwórz JupyterLab:
Dane, których użyjemy do wytrenowania modelu, pochodzą z tego zbioru danych do 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 wykorzystać je 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:
W tym laboratorium stworzymy model wykrywania oszustw, który pozwoli określić, czy dana transakcja z użyciem karty kredytowej powinna zostać zaklasyfikowana jako oszustwo.
Na stronie Zbiory danych nadaj nazwę zbiorowi danych, a potem kliknij kolejno Tabela i Regresja/klasyfikacja. Następnie utwórz zbiór danych:
Istnieje kilka opcji importowania danych do zarządzanych zbiorów danych w Vertex:
- Przesyłanie pliku lokalnego z komputera
- Wybieranie plików z Cloud Storage
- Wybieranie danych z BigQuery
W tym przypadku wczytamy dane z publicznej tabeli BigQuery.
Krok 2. Zaimportuj dane z BigQuery
Jako metodę importowania wybierz „Wybierz tabelę lub widok z BigQuery”, a następnie skopiuj do pola Tabela BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection
. Następnie kliknij Dalej:
Po zaimportowaniu zbioru danych powinien wyświetlić się widok podobny do tego:
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 zaciemniona, dlatego mają one nazwy V1
, V2
itp.
5. Trenowanie modelu za pomocą AutoML
Po przesłaniu zarządzanego zbioru danych możesz trenować model na podstawie tych danych. Trenujemy model klasyfikacji, aby przewidywać, czy dana transakcja jest oszukańcza. Vertex AI oferuje 2 opcje trenowania modeli:
- AutoML: trenuj wysokiej jakości modele przy minimalnym nakładzie pracy i bez specjalistycznej wiedzy z zakresu systemów uczących się.
- Trenowanie niestandardowe: uruchamiaj niestandardowe aplikacje treningowe w chmurze, korzystając z jednego z gotowych kontenerów Google Cloud lub własnego.
W tym module do trenowania użyjemy AutoML.
Krok 1. Rozpocznij zadanie szkoleniowe
Na stronie ze szczegółami zbioru danych, na której skończyłeś(-aś) w poprzednim kroku, w prawym górnym rogu kliknij Trenuj nowy model. Wybierz Klasyfikacja jako cel, pozostaw opcję AutoML wybraną do trenowania modelu, a potem kliknij Dalej:
Nadaj modelowi nazwę lub użyj nazwy domyślnej. W sekcji Kolumna docelowa wybierz Class (Klasa). Jest to liczba całkowita wskazująca, czy dana transakcja była nieuczciwa (0
– nieuczciwa, 1
– nieuczciwa).
Następnie kliknij Dalej:
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), dlatego wybierz opcję AUC PRC, która maksymalizuje precyzję i czułość dla rzadszej klasy:
Kliknij Dalej, a potem przejdź do ostatniego kroku (obliczenia i ceny). Wpisz tutaj 1 jako liczbę godzin działania węzła w ramach budżetu i pozostaw włączoną opcję wczesnego zatrzymywania. Trenowanie modelu AutoML przez 1 godzinę obliczeniową zwykle pozwala określić, czy istnieje związek między wybranymi przez Ciebie cechami a etykietą. Możesz tam modyfikować cechy i dłużej trenować model, aby poprawić jego wydajność. Następnie kliknij Rozpocznij trenowanie.
Gdy zadanie trenowania zostanie ukończone, otrzymasz e-maila. Trenowanie potrwa nieco dłużej niż godzinę, ponieważ trzeba będzie uruchomić i zatrzymać zasoby.
6. Poznaj wskaźniki oceny modelu
W tym kroku sprawdzimy, jak działa nasz model.
Po zakończeniu zadania trenowania modelu otwórz w Vertex kartę Modele. Kliknij wytrenowany model i otwórz kartę Oceń. Jest wiele wskaźników oceny, ale skupimy się na dwóch: macierzy pomyłek i znaczeniu funkcji.
Krok 1. Przeanalizuj tablicę pomyłek
Tablica pomyłek podaje odsetek przykładów z każdej klasy w zbiorze testowym, które model poprawnie przewidział. W przypadku zbióru danych z niezrównowagą, z jakim mamy do czynienia, jest to lepszy wskaźnik skuteczności modelu niż ogólna dokładność.
Pamiętaj, że mniej niż 1% przykładów w naszym zbiorze danych dotyczyło fałszywych transakcji, więc jeśli dokładność naszego modelu wynosi 99%, jest spore prawdopodobieństwo, że zgaduje on po prostu klasę nieoszustw w 99% przypadków. Dlatego sprawdzanie dokładności naszego modelu dla każdej klasy jest tutaj lepszym wskaźnikiem.
Jeśli przewiniesz w dół kartę Ocena, zobaczysz podobną do tej matrycę błędów (dokładne wartości procentowe mogą się różnić):
Tablica pomyłek pokazuje, że nasz wstępny model jest w stanie prawidłowo zaklasyfikować 85% przykładów oszustwa w zbiorze testowym. To całkiem dobry wynik, zwłaszcza biorąc pod uwagę znaczną nierównowagę zbioru danych. Następnie moglibyśmy spróbować trenować model przez więcej godzin obliczeniowych, aby sprawdzić, czy uda się nam poprawić jakość na poziomie 85%.
Krok 2. Sprawdź znaczenie cech
Pod tabelą macierzową błędów powinien pojawić się wykres ważności cech, który wygląda tak:
Widzimy tu cechy, które przekazały największe sygnały do naszego modelu podczas generowania prognoz. Ważność cech to jeden z rodzajów technologii Explainable AI, czyli dziedziny, która obejmuje różne metody uzyskiwania dodatkowych informacji o modelu uczenia maszynowego, który prognozuje wyniki. Wykres znaczenia cech widoczny tutaj jest obliczany jako suma wszystkich prognoz modelu na zbiorze testowym. Pokazuje on najważniejsze cechy w grupie przykładów.
Ten wykres byłby bardziej interesujący, gdyby większość funkcji w naszym zbiorze danych nie była zaciemniona. Możemy się na przykład dowiedzieć, że największym wskaźnikiem oszustwa był typ transakcji (przelew, depozyt itp.).
W rzeczywistych warunkach wartości wagi cech mogą pomóc nam w ulepszaniu modelu i zwiększeniu pewności jego prognoz. Możemy zdecydować się na usunięcie najmniej istotnych cech podczas następnego trenowania modelu lub połączyć 2 bardziej istotne cechy w krzyżowaniu cech, aby sprawdzić, czy to poprawi wydajność modelu.
Tutaj analizujemy wagę cech w ramach zbioru, ale w Vertex AI możemy też uzyskać wagę cech dla poszczególnych prognoz. Zobaczysz, jak to zrobić, gdy wdrożymy nasz model.
7. Wdrażanie modelu w punkcie końcowym
Teraz, gdy mamy wytrenowany model, następnym krokiem jest utworzenie punktu końcowego w Vertex. Z zasobem Model w Vertex może być powiązanych wiele punktów końcowych, a Ty możesz rozdzielać ruch między nimi.
Krok 1. Tworzenie punktu końcowego
Na stronie modelu otwórz kartę Wdróż i testuj, a następnie kliknij Wdróż w punkcie końcowym:
Nadaj punktowi końcowemu nazwę, np. fraud_v1
, pozostaw opcję Dostęp ustawioną na Standardowy i kliknij Dalej.
Pozostaw domyślne ustawienia podziału ruchu i typu maszyny, kliknij Gotowe, a potem Dalej.
W tym przypadku nie będziemy używać monitorowania modelu, więc możesz pozostawić to pole niezaznaczone i kliknąć Wdrożyć. Wdrożenie punktu końcowego może potrwać kilka minut. Gdy proces się zakończy, obok niego pojawi się zielony znacznik wyboru:
Jesteś już blisko. Teraz możesz otrzymywać prognozy dotyczące wdrożonego modelu.
8. Uzyskiwanie prognoz dotyczących naszego wdrożonego modelu
Istnieje kilka opcji uzyskania prognoz modelu:
- Interfejs Vertex AI
- Interfejs Vertex AI API
Pokażemy jedne i drugie.
Krok 1. Uzyskaj prognozy modelu w interfejsie
Na stronie modelu, na której wyświetlany jest punkt końcowy (gdzie skończyliśmy w poprzednim kroku), przewiń w dół do sekcji Testowanie modelu:
Tutaj Vertex AI wybrał losowe wartości dla każdej cechy modelu, których możemy użyć do uzyskania prognozy testowej. Możesz zmienić te wartości. Przewiń stronę w dół i kliknij Wykonaj prognozę.
W sekcji Wynik prognozy na stronie powinieneś zobaczyć przewidywany przez model odsetek dla każdej klasy. Na przykład wskaźnik ufności 0.99
dla klasy 0
oznacza, że według modelu w tym przykładzie w 99% przypadków nie było oszustwa.
Krok 2. Pobierz prognozy modeli 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 chciał dynamicznie uzyskiwać prognozy za pomocą wywołania interfejsu API REST. Aby pokazać Ci, jak uzyskiwać w tym miejscu prognozy dotyczące modeli, użyjemy instancji Vertex Workbench utworzonej przez Ciebie na początku tego modułu.
Następnie otwórz utworzoną instancję notatnika i otwórz notatnik Python 3 z menu z aplikacjami:
Aby zainstalować pakiet Vertex SDK, w notatniku uruchom w komórce 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 wdrożonego właśnie 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 ciągu tekstowym endpoint_name
musisz zastąpić 2 wartości numerem projektu i adresem punktu końcowego. Numer projektu znajdziesz w panelu projektu, w polu „Numer projektu”.
Identyfikator punktu końcowego znajdziesz w sekcji punktów końcowych w konsoli:
Na koniec przeprowadź prognozę na punkcie końcowym, kopiując i uruchamiając w nowej komórce podany niżej 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 się pojawić prognoza z wartością około .67
, co oznacza, że według modelu istnieje 67% szans, że transakcja nie jest oszustwem.
🎉 Gratulacje! 🎉
Poznałeś/poznałaś już te sposoby korzystania z Vertex AI:
- Przesyłanie zarządzanego zbioru danych
- Trenowanie i ocenianie modelu na podstawie danych tabelarycznych za pomocą AutoML
- Wdróż model w punkcie końcowym
- Pobieranie prognoz w punkcie końcowym modelu za pomocą pakietu SDK Vertex
Więcej informacji o różnych elementach Vertex AI znajdziesz w dokumentacji.
9. Czyszczenie
Jeśli chcesz nadal korzystać z notatnika utworzonego w tym laboratorium, zalecamy jego wyłączenie, gdy go nie używasz. W interfejsie Workbench w konsoli Cloud wybierz notebook, a następnie Zatrzymaj.
Aby całkowicie usunąć notatnik, po prostu kliknij przycisk Usuń znajdujący się 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:
Aby usunąć zasobnik Cloud Storage, w menu nawigacyjnym konsoli Cloud przejdź do usługi Storage, wybierz zasobnik i kliknij Usuń: