Vertex AI: eksportowanie i wdrażanie modelu systemów uczących się BigQuery na potrzeby prognozowania

1. Omówienie

W tym module wytrenujesz model przy użyciu systemów uczących się BigQuery, a potem wyeksportujesz go i wdrożysz w Vertex AI. To najnowsza oferta usług AI dostępna w Google Cloud.

Czego się nauczysz

Poznasz takie zagadnienia jak:

  • Wytrenuj model za pomocą systemów uczących się BigQuery (BQML)
  • Eksportowanie modelu BQML do Cloud Storage
  • Wdróż wytrenowany BQML w Vertex AI
  • Pobieranie prognoz dla wdrożonego modelu

Całkowity koszt uruchomienia tego modułu w Google Cloud wynosi około 2 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 z użyciem AutoML i modele niestandardowe były dostępne w oddzielnych usługach. 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 masz jakieś uwagi, odwiedź stronę pomocy.

Vertex AI obejmuje wiele różnych usług, które obsługują kompleksowe przepływy pracy ML. W tym module skupimy się na wyróżnionych poniżej usługach: prognozach i notatnikach.

Omówienie usługi Vertex

3. Skonfiguruj środowisko

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 Compute Engine API

Przejdź do Compute Engine i wybierz opcję Włącz, jeśli nie jest jeszcze włączona. Będzie Ci to potrzebne 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.

Panel Vertex AI

Krok 3. Utwórz instancję Notatników

Będziemy używać notatników do pobierania prognoz po wdrożeniu naszego modelu. W sekcji Vertex AI w konsoli Cloud kliknij Notatniki:

Menu Vertex AI

Następnie kliknij Nowa instancja. Następnie wybierz typ instancji TensorFlow Enterprise 2.3 bez GPU:

Instancja TFE

Użyj opcji domyślnych i kliknij Utwórz. Po utworzeniu instancji wybierz Otwórz JupyterLab:

Otwórz notatnik CAIP

4. Trenowanie modelu BigQuery ML

BigQuery ML umożliwia trenowanie niestandardowych modeli systemów uczących się z użyciem danych przechowywanych w BigQuery. Możesz trenować modele i uzyskiwać prognozy na ich podstawie w SQL. W tym module wykorzystamy publicznie dostępny zbiór danych w BigQuery, by przewidzieć prawdopodobieństwo niedokonania płatności kartą kredytową.

Krok 1. Utwórz w projekcie zbiór danych BigQuery

Aby wytrenować model w BigQuery ML, musisz utworzyć w projekcie zbiór danych do przechowywania tego modelu. Na pasku menu po lewej stronie kliknij projekt i wybierz Utwórz zbiór danych:

Tworzenie zbioru danych BQ

W polu Identyfikator zbioru danych wpisz cc_default. W pozostałych polach pozostaw te bez zmian i kliknij Utwórz zbiór danych.

Krok 2. Uruchom zapytanie CREATE MODEL

W edytorze zapytań BigQuery uruchom następujące zapytanie CREATE MODEL, aby utworzyć i wytrenować model BigQuery ML w publicznym zbiorze danych, którego będziemy używać. Pamiętaj, aby zastąpić your-project nazwą swojego projektu Cloud:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Spowoduje to utworzenie modelu regresji logistycznej, który zwróci wartość liczbową z zakresu od 0 do 1, co oznacza, że uruchomienie zajmie około minuty. Gdy proces się zakończy, model pojawi się w zbiorze danych:

Szczegóły modelu BQML

Możesz kliknąć model, aby zobaczyć jego wskaźniki trenowania i oceny.

5. Eksportowanie modelu BigQuery ML

Dzięki wytrenowanemu modelowi BQML możemy użyć składni SQL BQML, aby uzyskać prognozy, lub wyeksportować model, aby wdrożyć go w innym miejscu. Tutaj wyeksportujemy model, aby móc go wdrożyć w Vertex AI w celu skalowalnego jego obsługi i otrzymywania prognoz.

Krok 1. Utwórz zasobnik Cloud Storage dla swojego modelu

W szczegółach modelu kliknij Eksportuj model:

Eksportuj model BQML

Pojawi się prośba o wpisanie lokalizacji w Google Cloud Storage (GCS), do której chcesz wyeksportować zasoby modelu. Jeśli nie masz jeszcze zasobnika GCS, nie martw się. Wkrótce je utworzymy. Najpierw kliknij Przeglądaj:

Przeglądaj zasobniki GCS

Następnie kliknij ikonę +, aby utworzyć nowy zasobnik:

Nowy zasobnik GCS

Nadaj mu unikalną nazwę (nazwy zasobników na dane muszą być globalnie unikalne). Kliknij Dalej. W następnym kroku w sekcji Typ lokalizacji kliknij Region i wybierz dowolny region z menu:

Lokalizacja zasobnika

Użyj domyślnej klasy pamięci, a w ramach kontroli dostępu wybierz Jednolita:

Jednolita kontrola dostępu

Kliknij Dalej i w przypadku pozostałych opcji użyj wartości domyślnych. Następnie kliknij Utwórz.

Krok 2. Wyeksportuj model BQML

Po utworzeniu nowego zasobnika wpisz model-assets (lub cokolwiek chcesz) w polu Nazwa, a następnie kliknij Wybierz:

Ścieżka eksportu modelu

Następnie kliknij Eksportuj. Spowoduje to utworzenie w BigQuery zadania eksportowania modelu w formacie SavedModel TensorFlow do podanego nowo utworzonego zasobnika GCS. Eksport zajmie około minuty.

Podczas eksportowania modelu przejdź do sekcji Przechowywanie danych w konsoli Cloud. Po zakończeniu zadania zasoby modelu powinny zostać wyeksportowane do utworzonego przed chwilą zasobnika w podkatalogu model-assets:

Wyeksportowano zasoby modelu

6. Importowanie modelu do Vertex AI

W tym kroku odwołamy się do lokalizacji miejsca na dane w GCS, do której właśnie wyeksportowaliśmy zasoby modelu, aby utworzyć i zaimportować model do Vertex AI.

Krok 1. Zaimportuj model

W konsoli Cloud otwórz sekcję Modele Vertex AI. Następnie kliknij Importuj:

Zaimportuj model

W pierwszym kroku nadaj modelowi nazwę predict_default. Wybierz ten sam region, w którym został utworzony zasobnik (us-central1, europe-west4 lub asia-east1. Następnie kliknij Dalej. W sekcji Ustawienia modelu zachowaj opcję „Importuj artefakty modelu do nowego gotowego kontenera”. zaznaczono.

W menu Platforma modeli wybierz TensorFlow. Następnie wybierz 2.3 jako wersję platformy.

W polu Lokalizacja artefaktu modelu kliknij Przeglądaj, kliknij utworzony przed chwilą zasobnik GCS i katalog model-assets:

Ścieżka komponentów z modelem

Następnie kliknij Importuj. Importowanie modelu może potrwać kilka minut. Gdy zostanie utworzony, zobaczysz go w sekcji modeli w konsoli Cloud:

Sekcja modeli

7. Wdrażanie modelu w punkcie końcowym

Po przesłaniu modelu następnym krokiem jest utworzenie punktu końcowego w Vertex. Z zasobem modelu w Vertex może być powiązanych wiele punktów końcowych, a ruch można dzielić między punkty końcowe.

Krok 1. Utwórz punkt końcowy

Na stronie modelu otwórz kartę Wdróż i testuj, a następnie kliknij Wdróż w punkcie końcowym:

Wdrażanie i testowanie

Nazwij punkt końcowy, na przykład default_pred_v1, pozostaw ustawienia podziału ruchu bez zmian, a potem wybierz typ maszyny do wdrożenia modelu. Użyliśmy tutaj maszyny n1-highcpu-2, ale możesz wybrać inny typ maszyny.

Następnie kliknij Gotowe i kliknij Dalej. Pozostaw wybrane ustawienia lokalizacji bez zmian i kliknij Wdróż. Wdrożenie punktu końcowego może potrwać kilka minut. Po zakończeniu pojawi się obok niej zielony znacznik wyboru:

Wdrożony punkt końcowy

Jesteś blisko! Teraz możesz otrzymywać prognozy dotyczące wdrożonego modelu.

8. Uzyskiwanie prognoz dotyczących naszego wdrożonego modelu

Istnieje kilka opcji uzyskiwania prognoz modelu:

  • Interfejs Vertex AI
  • Interfejs Vertex AI API

W tym filmie pokażemy, jak uzyskiwać prognozy za pomocą interfejsu API

Krok 1. Uzyskaj prognozy modeli za pomocą interfejsu Vertex AI API

Aby pokazać Ci, jak uzyskiwać w tym miejscu prognozy dotyczące modeli, użyjemy instancji notatnika Vertex utworzonej przez Ciebie na początku tego modułu.

Następnie otwórz utworzoną instancję notatnika i otwórz notatnik w języku Python 3 z Menu z aplikacjami:

Otwórz notatnik

W notatniku uruchom w komórce poniższy przykład testowy, aby zapisać przykładowy test w pliku JSON o nazwie default-pred.json. Wyślemy ten przykład do naszego modelu w celu wygenerowania prognozy:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

Następnie w interfejsie Vertex kliknij Sample Request obok wdrożonego właśnie punktu końcowego:

Przykładowe żądanie

Skopiuj kod z kroku 4 na karcie REST do notatnika i uruchom komórkę:

Zmienne żądania

Następnie dodaj zmienną dla regionu, w którym masz utworzony zasobnik i model. Zastąp your-region w poniższym ciągu:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Na koniec wyślij żądanie prognozy do punktu końcowego za pomocą curl, kopiując ten kod do notatnika:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Powinna pojawić się informacja podobna do tej (dokładne wartości prognoz mogą się nieznacznie różnić):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

Wartości w polu default_payment_next_month_probs pokazują prawdopodobieństwo dla każdej klasy. W tym przykładzie nasz model przewiduje 81-procentowe prawdopodobieństwo, że osoba ta nie spłaci się podczas kolejnej płatności. Wartość .819 odpowiada klasie 0 (nie jest to domyślna).

🎉 Gratulacje! 🎉

Już wiesz, jak:

  • Trenowanie modelu w BQML
  • Eksportowanie modelu BQML do Cloud Storage
  • Zaimportuj model BQML do Vertex AI na potrzeby prognozowania
  • Utwórz model Vertex AI i wdróż go w punkcie końcowym
  • Uzyskuj prognozy w wdrożonym punkcie końcowym za pomocą notatników Vertex i curl

Więcej informacji o różnych częściach Vertex AI znajdziesz w dokumentacji.

9. Czyszczenie

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

Zatrzymaj instancję

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, przejdź do sekcji Punkty końcowe w konsoli Vertex AI i kliknij ikonę usuwania:

Usuń punkt końcowy

Aby usunąć zasobnik na dane, w menu nawigacyjnym w konsoli Cloud przejdź do Cloud Storage, wybierz swój zasobnik i kliknij Usuń:

Usuń miejsce na dane