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.
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.
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:
Następnie kliknij Nowa instancja. Następnie wybierz typ instancji TensorFlow Enterprise 2.3 bez GPU:
Użyj opcji domyślnych i kliknij Utwórz. Po utworzeniu instancji wybierz Otwórz JupyterLab:
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:
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:
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:
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:
Następnie kliknij ikonę +, aby utworzyć nowy zasobnik:
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:
Użyj domyślnej klasy pamięci, a w ramach kontroli dostępu wybierz Jednolita:
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:
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
:
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:
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:
Następnie kliknij Importuj. Importowanie modelu może potrwać kilka minut. Gdy zostanie utworzony, zobaczysz go w sekcji modeli w konsoli Cloud:
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:
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:
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:
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:
Skopiuj kod z kroku 4 na karcie REST do notatnika i uruchom komórkę:
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:
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:
Aby usunąć zasobnik na dane, w menu nawigacyjnym w konsoli Cloud przejdź do Cloud Storage, wybierz swój zasobnik i kliknij Usuń: