1. Przegląd
W tym module wytrenujesz model za pomocą uczenia maszynowego w BigQuery, a następnie wyeksportujesz i wdrożysz go w Vertex AI. Jest to najnowsza oferta usług AI w Google Cloud.
Czego się dowiesz
Poznasz takie zagadnienia jak:
- Trenowanie modelu za pomocą uczenia maszynowego w BigQuery (BQML)
- Eksportowanie modelu BQML do Cloud Storage
- Wdrażanie wytrenowanego modelu BQML w Vertex AI
- Uzyskiwanie prognoz na podstawie wdrożonego modelu
Całkowity koszt ukończenia tego modułu w Google Cloud wynosi około 2 USD.
2. Wprowadzenie do Vertex AI
W tym module wykorzystujemy najnowszą ofertę produktów AI dostępną w Google Cloud. Vertex AI integruje usługi 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. Ten moduł skupia się na usługach wyróżnionych poniżej: Prediction i Notebooks.

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.

Krok 3. Utwórz instancję notatników
Po wdrożeniu modelu będziemy używać notatników do uzyskiwania prognoz. W sekcji Vertex AI w konsoli Cloud kliknij Notatniki:

Następnie kliknij Nowa instancja. Następnie wybierz typ instancji TensorFlow Enterprise 2.3 bez procesorów graficznych:

Użyj opcji domyślnych, a następnie kliknij Utwórz. Po utworzeniu instancji wybierz Otwórz JupyterLab:

4. Trenowanie modelu BigQuery ML
BigQuery ML umożliwia trenowanie niestandardowych modeli uczenia maszynowego przy użyciu danych przechowywanych w BigQuery. Możesz trenować modele i uzyskiwać z nich prognozy, korzystając tylko z SQL. W tym module użyjemy publicznie dostępnego zbioru danych w BigQuery, aby przewidzieć prawdopodobieństwo niewywiązania się z 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, w którym będzie on przechowywany. Na pasku menu po lewej stronie kliknij swój projekt, a potem wybierz Utwórz zbiór danych:

W polu Identyfikator zbioru danych wpisz cc_default. Pozostałe pola pozostaw bez zmian i kliknij Utwórz zbiór danych.
Krok 2. Uruchom zapytanie CREATE MODEL
W edytorze zapytań BigQuery uruchom to CREATE MODEL zapytanie, aby utworzyć i wytrenować model BigQuery ML na podstawie publicznego zbioru danych, którego będziemy używać. Pamiętaj, aby zastąpić your-project nazwą projektu w chmurze:
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 zwraca wartość liczbową z zakresu od 0 do 1. Wykonanie tego działania zajmuje około minuty. Po zakończeniu zobaczysz model pod zbiorem danych:

Możesz kliknąć model, aby wyświetlić jego wskaźniki trenowania i oceny.
5. Eksportowanie modelu BigQuery ML
Za pomocą wytrenowanego modelu BQML możemy używać składni SQL BQML do uzyskiwania prognoz lub eksportować model w celu wdrożenia go w innym miejscu. Teraz wyeksportujemy model, aby można go było wdrożyć w Vertex AI i skalowalnie udostępniać oraz uzyskiwać prognozy.
Krok 1. Utwórz zasobnik Cloud Storage dla modelu
W szczegółach modelu kliknij Eksportuj model:

Wyświetli 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ę. Za chwilę utworzymy taki profil. Najpierw kliknij Przeglądaj:

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

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

Użyj domyślnej klasy pamięci masowej i w sekcji kontroli dostępu sprawdź, czy wybrana jest opcja Jednolita:

Kliknij Dalej i w przypadku pozostałych opcji użyj ustawień domyślnych. Następnie kliknij Utwórz.
Krok 2. Eksportowanie modelu BQML
Po utworzeniu nowego zasobnika wpisz model-assets (lub dowolną inną nazwę) 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 nowo utworzonego zasobnika GCS, który został przez Ciebie określony. Eksportowanie zajmie około minuty.
Podczas eksportowania modelu przejdź do sekcji Pamięć 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 pamięci GCS, do której właśnie wyeksportowaliśmy zasoby modelu, aby utworzyć model i zaimportować go do Vertex AI.
Krok 1. Zaimportuj model
W konsoli Cloud otwórz sekcję Modele w Vertex AI. Następnie kliknij Importuj:

W pierwszym kroku nadaj modelowi nazwę predict_default. Wybierz ten sam region, w którym utworzono zasobnik (us-central1, europe-west4 lub asia-east1). Następnie kliknij Dalej. W ustawieniach modelu pozostaw zaznaczoną opcję „Zaimportuj artefakty modelu do nowego gotowego kontenera”.
W menu Platforma modelu wybierz TensorFlow. Następnie wybierz wersję platformy 2.3.
W polu Lokalizacja artefaktu modelu kliknij Przeglądaj, wybierz utworzony zasobnik GCS i kliknij katalog model-assets:

Następnie kliknij Importuj. Importowanie modelu zajmie kilka minut. Po utworzeniu zobaczysz go w sekcji modeli w konsoli Cloud:

7. Wdrażanie modelu w punkcie końcowym
Po przesłaniu 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:

Nadaj punktowi końcowemu nazwę, np. default_pred_v1, pozostaw ustawienia podziału ruchu bez zmian, a następnie wybierz typ maszyny dla wdrożenia modelu. Użyliśmy tu n1-highcpu-2, ale możesz wybrać dowolny typ maszyny.
Następnie kliknij Gotowe i Dalej. Pozostaw wybrane ustawienia lokalizacji bez zmian i kliknij Wdróż. Wdrożenie punktu końcowego może potrwać kilka minut. Gdy proces dobiegnie końca, obok niego pojawi się zielony znacznik wyboru:

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
Z tego artykułu dowiesz się, jak uzyskiwać prognozy za pomocą interfejsu API
Krok 1. Uzyskiwanie prognoz modelu za pomocą interfejsu Vertex AI API
Aby pokazać, jak uzyskać prognozy modelu, użyjemy instancji notatnika Vertex 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:

W notatniku uruchom w komórce poniższy kod, aby zapisać przykład testowy w pliku JSON o nazwie default-pred.json. Wyślemy ten przykład do naszego modelu, aby uzyskać prognozę:
%%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 AI kliknij Przykładowe żądanie w przypadku 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 utworzono zasobnik i model. Zastąp symbol your-region w poniższym ciągu znaków:
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"
Powinien pojawić się ekran podobny do tego (dokładne wartości prognozy 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 default_payment_next_month_probs pokazują prawdopodobieństwo każdej klasy. W tym przykładzie nasz model przewiduje, że istnieje 81% prawdopodobieństwa, że ta osoba nie opóźni się z kolejną płatnością. Wartość .819 odpowiada klasie 0 (nie domyślnej).
🎉 Gratulacje! 🎉
Wiesz już, jak:
- Trenowanie modelu w BQML
- Eksportowanie modelu BQML do Cloud Storage
- Importowanie modelu BQML do Vertex AI na potrzeby prognozowania
- Tworzenie modelu Vertex AI i wdrażanie go w punkcie końcowym
- Uzyskiwanie prognoz w przypadku wdrożonego punktu końcowego za pomocą Notatników Vertex i polecenia curl
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 Notebooks 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, przejdź do sekcji Punkty końcowe w konsoli Vertex AI i kliknij ikonę usuwania:

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